{"version":3,"file":"index.modern.mjs","sources":["../node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js","../node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js","../node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js","../node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js","../src/api/google/protobuf/timestamp.ts","../src/api/common.ts","../src/api/instruments.ts","../src/api/orders.ts","../src/api/operations.ts","../src/api/marketdata.ts","../src/api/stoporders.ts","../src/api/users.ts","../src/client2.ts","../src/api/sandbox.ts","../src/sandbox-client.ts"],"sourcesContent":["// Copyright 2008 Google Inc.  All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it.  This code is not\n// standalone and requires a support library to be linked with it.  This\n// support library is itself covered by the above license.\n/* eslint-disable prefer-const,@typescript-eslint/restrict-plus-operands */\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [1]: high bits\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nexport function varint64read() {\n    let lowBits = 0;\n    let highBits = 0;\n    for (let shift = 0; shift < 28; shift += 7) {\n        let b = this.buf[this.pos++];\n        lowBits |= (b & 0x7f) << shift;\n        if ((b & 0x80) == 0) {\n            this.assertBounds();\n            return [lowBits, highBits];\n        }\n    }\n    let middleByte = this.buf[this.pos++];\n    // last four bits of the first 32 bit number\n    lowBits |= (middleByte & 0x0f) << 28;\n    // 3 upper bits are part of the next 32 bit number\n    highBits = (middleByte & 0x70) >> 4;\n    if ((middleByte & 0x80) == 0) {\n        this.assertBounds();\n        return [lowBits, highBits];\n    }\n    for (let shift = 3; shift <= 31; shift += 7) {\n        let b = this.buf[this.pos++];\n        highBits |= (b & 0x7f) << shift;\n        if ((b & 0x80) == 0) {\n            this.assertBounds();\n            return [lowBits, highBits];\n        }\n    }\n    throw new Error(\"invalid varint\");\n}\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nexport function varint64write(lo, hi, bytes) {\n    for (let i = 0; i < 28; i = i + 7) {\n        const shift = lo >>> i;\n        const hasNext = !(shift >>> 7 == 0 && hi == 0);\n        const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n        bytes.push(byte);\n        if (!hasNext) {\n            return;\n        }\n    }\n    const splitBits = ((lo >>> 28) & 0x0f) | ((hi & 0x07) << 4);\n    const hasMoreBits = !(hi >> 3 == 0);\n    bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xff);\n    if (!hasMoreBits) {\n        return;\n    }\n    for (let i = 3; i < 31; i = i + 7) {\n        const shift = hi >>> i;\n        const hasNext = !(shift >>> 7 == 0);\n        const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n        bytes.push(byte);\n        if (!hasNext) {\n            return;\n        }\n    }\n    bytes.push((hi >>> 31) & 0x01);\n}\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64FromString(dec) {\n    // Check for minus sign.\n    const minus = dec[0] === \"-\";\n    if (minus) {\n        dec = dec.slice(1);\n    }\n    // Work 6 decimal digits at a time, acting like we're converting base 1e6\n    // digits to binary. This is safe to do with floating point math because\n    // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n    const base = 1e6;\n    let lowBits = 0;\n    let highBits = 0;\n    function add1e6digit(begin, end) {\n        // Note: Number('') is 0.\n        const digit1e6 = Number(dec.slice(begin, end));\n        highBits *= base;\n        lowBits = lowBits * base + digit1e6;\n        // Carry bits from lowBits to\n        if (lowBits >= TWO_PWR_32_DBL) {\n            highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n            lowBits = lowBits % TWO_PWR_32_DBL;\n        }\n    }\n    add1e6digit(-24, -18);\n    add1e6digit(-18, -12);\n    add1e6digit(-12, -6);\n    add1e6digit(-6);\n    return minus ? negate(lowBits, highBits) : newBits(lowBits, highBits);\n}\n/**\n * Losslessly converts a 64-bit signed integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64ToString(lo, hi) {\n    let bits = newBits(lo, hi);\n    // If we're treating the input as a signed value and the high bit is set, do\n    // a manual two's complement conversion before the decimal conversion.\n    const negative = bits.hi & 0x80000000;\n    if (negative) {\n        bits = negate(bits.lo, bits.hi);\n    }\n    const result = uInt64ToString(bits.lo, bits.hi);\n    return negative ? \"-\" + result : result;\n}\n/**\n * Losslessly converts a 64-bit unsigned integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function uInt64ToString(lo, hi) {\n    ({ lo, hi } = toUnsigned(lo, hi));\n    // Skip the expensive conversion if the number is small enough to use the\n    // built-in conversions.\n    // Number.MAX_SAFE_INTEGER = 0x001FFFFF FFFFFFFF, thus any number with\n    // highBits <= 0x1FFFFF can be safely expressed with a double and retain\n    // integer precision.\n    // Proven by: Number.isSafeInteger(0x1FFFFF * 2**32 + 0xFFFFFFFF) == true.\n    if (hi <= 0x1fffff) {\n        return String(TWO_PWR_32_DBL * hi + lo);\n    }\n    // What this code is doing is essentially converting the input number from\n    // base-2 to base-1e7, which allows us to represent the 64-bit range with\n    // only 3 (very large) digits. Those digits are then trivial to convert to\n    // a base-10 string.\n    // The magic numbers used here are -\n    // 2^24 = 16777216 = (1,6777216) in base-1e7.\n    // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n    // Split 32:32 representation into 16:24:24 representation so our\n    // intermediate digits don't overflow.\n    const low = lo & 0xffffff;\n    const mid = ((lo >>> 24) | (hi << 8)) & 0xffffff;\n    const high = (hi >> 16) & 0xffff;\n    // Assemble our three base-1e7 digits, ignoring carries. The maximum\n    // value in a digit at this step is representable as a 48-bit integer, which\n    // can be stored in a 64-bit floating point number.\n    let digitA = low + mid * 6777216 + high * 6710656;\n    let digitB = mid + high * 8147497;\n    let digitC = high * 2;\n    // Apply carries from A to B and from B to C.\n    const base = 10000000;\n    if (digitA >= base) {\n        digitB += Math.floor(digitA / base);\n        digitA %= base;\n    }\n    if (digitB >= base) {\n        digitC += Math.floor(digitB / base);\n        digitB %= base;\n    }\n    // If digitC is 0, then we should have returned in the trivial code path\n    // at the top for non-safe integers. Given this, we can assume both digitB\n    // and digitA need leading zeros.\n    return (digitC.toString() +\n        decimalFrom1e7WithLeadingZeros(digitB) +\n        decimalFrom1e7WithLeadingZeros(digitA));\n}\nfunction toUnsigned(lo, hi) {\n    return { lo: lo >>> 0, hi: hi >>> 0 };\n}\nfunction newBits(lo, hi) {\n    return { lo: lo | 0, hi: hi | 0 };\n}\n/**\n * Returns two's compliment negation of input.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers\n */\nfunction negate(lowBits, highBits) {\n    highBits = ~highBits;\n    if (lowBits) {\n        lowBits = ~lowBits + 1;\n    }\n    else {\n        // If lowBits is 0, then bitwise-not is 0xFFFFFFFF,\n        // adding 1 to that, results in 0x100000000, which leaves\n        // the low bits 0x0 and simply adds one to the high bits.\n        highBits += 1;\n    }\n    return newBits(lowBits, highBits);\n}\n/**\n * Returns decimal representation of digit1e7 with leading zeros.\n */\nconst decimalFrom1e7WithLeadingZeros = (digit1e7) => {\n    const partial = String(digit1e7);\n    return \"0000000\".slice(partial.length) + partial;\n};\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nexport function varint32write(value, bytes) {\n    if (value >= 0) {\n        // write value as varint 32\n        while (value > 0x7f) {\n            bytes.push((value & 0x7f) | 0x80);\n            value = value >>> 7;\n        }\n        bytes.push(value);\n    }\n    else {\n        for (let i = 0; i < 9; i++) {\n            bytes.push((value & 127) | 128);\n            value = value >> 7;\n        }\n        bytes.push(1);\n    }\n}\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nexport function varint32read() {\n    let b = this.buf[this.pos++];\n    let result = b & 0x7f;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7f) << 7;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7f) << 14;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7f) << 21;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    // Extract only last 4 bits\n    b = this.buf[this.pos++];\n    result |= (b & 0x0f) << 28;\n    for (let readBytes = 5; (b & 0x80) !== 0 && readBytes < 10; readBytes++)\n        b = this.buf[this.pos++];\n    if ((b & 0x80) != 0)\n        throw new Error(\"invalid varint\");\n    this.assertBounds();\n    // Result can have 32 bits, convert it to unsigned\n    return result >>> 0;\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { int64FromString, int64ToString, uInt64ToString, } from \"./wire/varint.js\";\n/**\n * Int64Support for the current environment.\n */\nexport const protoInt64 = /*@__PURE__*/ makeInt64Support();\nfunction makeInt64Support() {\n    const dv = new DataView(new ArrayBuffer(8));\n    // note that Safari 14 implements BigInt, but not the DataView methods\n    const ok = typeof BigInt === \"function\" &&\n        typeof dv.getBigInt64 === \"function\" &&\n        typeof dv.getBigUint64 === \"function\" &&\n        typeof dv.setBigInt64 === \"function\" &&\n        typeof dv.setBigUint64 === \"function\" &&\n        (typeof process != \"object\" ||\n            typeof process.env != \"object\" ||\n            process.env.BUF_BIGINT_DISABLE !== \"1\");\n    if (ok) {\n        const MIN = BigInt(\"-9223372036854775808\"), MAX = BigInt(\"9223372036854775807\"), UMIN = BigInt(\"0\"), UMAX = BigInt(\"18446744073709551615\");\n        return {\n            zero: BigInt(0),\n            supported: true,\n            parse(value) {\n                const bi = typeof value == \"bigint\" ? value : BigInt(value);\n                if (bi > MAX || bi < MIN) {\n                    throw new Error(`invalid int64: ${value}`);\n                }\n                return bi;\n            },\n            uParse(value) {\n                const bi = typeof value == \"bigint\" ? value : BigInt(value);\n                if (bi > UMAX || bi < UMIN) {\n                    throw new Error(`invalid uint64: ${value}`);\n                }\n                return bi;\n            },\n            enc(value) {\n                dv.setBigInt64(0, this.parse(value), true);\n                return {\n                    lo: dv.getInt32(0, true),\n                    hi: dv.getInt32(4, true),\n                };\n            },\n            uEnc(value) {\n                dv.setBigInt64(0, this.uParse(value), true);\n                return {\n                    lo: dv.getInt32(0, true),\n                    hi: dv.getInt32(4, true),\n                };\n            },\n            dec(lo, hi) {\n                dv.setInt32(0, lo, true);\n                dv.setInt32(4, hi, true);\n                return dv.getBigInt64(0, true);\n            },\n            uDec(lo, hi) {\n                dv.setInt32(0, lo, true);\n                dv.setInt32(4, hi, true);\n                return dv.getBigUint64(0, true);\n            },\n        };\n    }\n    return {\n        zero: \"0\",\n        supported: false,\n        parse(value) {\n            if (typeof value != \"string\") {\n                value = value.toString();\n            }\n            assertInt64String(value);\n            return value;\n        },\n        uParse(value) {\n            if (typeof value != \"string\") {\n                value = value.toString();\n            }\n            assertUInt64String(value);\n            return value;\n        },\n        enc(value) {\n            if (typeof value != \"string\") {\n                value = value.toString();\n            }\n            assertInt64String(value);\n            return int64FromString(value);\n        },\n        uEnc(value) {\n            if (typeof value != \"string\") {\n                value = value.toString();\n            }\n            assertUInt64String(value);\n            return int64FromString(value);\n        },\n        dec(lo, hi) {\n            return int64ToString(lo, hi);\n        },\n        uDec(lo, hi) {\n            return uInt64ToString(lo, hi);\n        },\n    };\n}\nfunction assertInt64String(value) {\n    if (!/^-?[0-9]+$/.test(value)) {\n        throw new Error(\"invalid int64: \" + value);\n    }\n}\nfunction assertUInt64String(value) {\n    if (!/^[0-9]+$/.test(value)) {\n        throw new Error(\"invalid uint64: \" + value);\n    }\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nconst symbol = Symbol.for(\"@bufbuild/protobuf/text-encoding\");\n/**\n * Protobuf-ES requires the Text Encoding API to convert UTF-8 from and to\n * binary. This WHATWG API is widely available, but it is not part of the\n * ECMAScript standard. On runtimes where it is not available, use this\n * function to provide your own implementation.\n *\n * Note that the Text Encoding API does not provide a way to validate UTF-8.\n * Our implementation falls back to use encodeURIComponent().\n */\nexport function configureTextEncoding(textEncoding) {\n    globalThis[symbol] = textEncoding;\n}\nexport function getTextEncoding() {\n    if (globalThis[symbol] == undefined) {\n        const te = new globalThis.TextEncoder();\n        const td = new globalThis.TextDecoder();\n        globalThis[symbol] = {\n            encodeUtf8(text) {\n                return te.encode(text);\n            },\n            decodeUtf8(bytes) {\n                return td.decode(bytes);\n            },\n            checkUtf8(text) {\n                try {\n                    encodeURIComponent(text);\n                    return true;\n                }\n                catch (e) {\n                    return false;\n                }\n            },\n        };\n    }\n    return globalThis[symbol];\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { varint32read, varint32write, varint64read, varint64write, } from \"./varint.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { getTextEncoding } from \"./text-encoding.js\";\n/* eslint-disable prefer-const,no-case-declarations,@typescript-eslint/restrict-plus-operands */\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nexport var WireType;\n(function (WireType) {\n    /**\n     * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n     */\n    WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n    /**\n     * Used for fixed64, sfixed64, double.\n     * Always 8 bytes with little-endian byte order.\n     */\n    WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\n    /**\n     * Used for string, bytes, embedded messages, packed repeated fields\n     *\n     * Only repeated numeric types (types which use the varint, 32-bit,\n     * or 64-bit wire types) can be packed. In proto3, such fields are\n     * packed by default.\n     */\n    WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n    /**\n     * Start of a tag-delimited aggregate, such as a proto2 group, or a message\n     * in editions with message_encoding = DELIMITED.\n     */\n    WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n    /**\n     * End of a tag-delimited aggregate.\n     */\n    WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n    /**\n     * Used for fixed32, sfixed32, float.\n     * Always 4 bytes with little-endian byte order.\n     */\n    WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType || (WireType = {}));\n/**\n * Maximum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MAX = 3.4028234663852886e38;\n/**\n * Minimum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MIN = -3.4028234663852886e38;\n/**\n * Maximum value for an unsigned 32-bit integer (Protobuf UINT32, FIXED32).\n */\nexport const UINT32_MAX = 0xffffffff;\n/**\n * Maximum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MAX = 0x7fffffff;\n/**\n * Minimum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MIN = -0x80000000;\nexport class BinaryWriter {\n    constructor(encodeUtf8 = getTextEncoding().encodeUtf8) {\n        this.encodeUtf8 = encodeUtf8;\n        /**\n         * Previous fork states.\n         */\n        this.stack = [];\n        this.chunks = [];\n        this.buf = [];\n    }\n    /**\n     * Return all bytes written and reset this writer.\n     */\n    finish() {\n        if (this.buf.length) {\n            this.chunks.push(new Uint8Array(this.buf)); // flush the buffer\n            this.buf = [];\n        }\n        let len = 0;\n        for (let i = 0; i < this.chunks.length; i++)\n            len += this.chunks[i].length;\n        let bytes = new Uint8Array(len);\n        let offset = 0;\n        for (let i = 0; i < this.chunks.length; i++) {\n            bytes.set(this.chunks[i], offset);\n            offset += this.chunks[i].length;\n        }\n        this.chunks = [];\n        return bytes;\n    }\n    /**\n     * Start a new fork for length-delimited data like a message\n     * or a packed repeated field.\n     *\n     * Must be joined later with `join()`.\n     */\n    fork() {\n        this.stack.push({ chunks: this.chunks, buf: this.buf });\n        this.chunks = [];\n        this.buf = [];\n        return this;\n    }\n    /**\n     * Join the last fork. Write its length and bytes, then\n     * return to the previous state.\n     */\n    join() {\n        // get chunk of fork\n        let chunk = this.finish();\n        // restore previous state\n        let prev = this.stack.pop();\n        if (!prev)\n            throw new Error(\"invalid state, fork stack empty\");\n        this.chunks = prev.chunks;\n        this.buf = prev.buf;\n        // write length of chunk as varint\n        this.uint32(chunk.byteLength);\n        return this.raw(chunk);\n    }\n    /**\n     * Writes a tag (field number and wire type).\n     *\n     * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`.\n     *\n     * Generated code should compute the tag ahead of time and call `uint32()`.\n     */\n    tag(fieldNo, type) {\n        return this.uint32(((fieldNo << 3) | type) >>> 0);\n    }\n    /**\n     * Write a chunk of raw bytes.\n     */\n    raw(chunk) {\n        if (this.buf.length) {\n            this.chunks.push(new Uint8Array(this.buf));\n            this.buf = [];\n        }\n        this.chunks.push(chunk);\n        return this;\n    }\n    /**\n     * Write a `uint32` value, an unsigned 32 bit varint.\n     */\n    uint32(value) {\n        assertUInt32(value);\n        // write value as varint 32, inlined for speed\n        while (value > 0x7f) {\n            this.buf.push((value & 0x7f) | 0x80);\n            value = value >>> 7;\n        }\n        this.buf.push(value);\n        return this;\n    }\n    /**\n     * Write a `int32` value, a signed 32 bit varint.\n     */\n    int32(value) {\n        assertInt32(value);\n        varint32write(value, this.buf);\n        return this;\n    }\n    /**\n     * Write a `bool` value, a variant.\n     */\n    bool(value) {\n        this.buf.push(value ? 1 : 0);\n        return this;\n    }\n    /**\n     * Write a `bytes` value, length-delimited arbitrary data.\n     */\n    bytes(value) {\n        this.uint32(value.byteLength); // write length of chunk as varint\n        return this.raw(value);\n    }\n    /**\n     * Write a `string` value, length-delimited data converted to UTF-8 text.\n     */\n    string(value) {\n        let chunk = this.encodeUtf8(value);\n        this.uint32(chunk.byteLength); // write length of chunk as varint\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `float` value, 32-bit floating point number.\n     */\n    float(value) {\n        assertFloat32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setFloat32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `double` value, a 64-bit floating point number.\n     */\n    double(value) {\n        let chunk = new Uint8Array(8);\n        new DataView(chunk.buffer).setFloat64(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n     */\n    fixed32(value) {\n        assertUInt32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setUint32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n     */\n    sfixed32(value) {\n        assertInt32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setInt32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n     */\n    sint32(value) {\n        assertInt32(value);\n        // zigzag encode\n        value = ((value << 1) ^ (value >> 31)) >>> 0;\n        varint32write(value, this.buf);\n        return this;\n    }\n    /**\n     * Write a `fixed64` value, a signed, fixed-length 64-bit integer.\n     */\n    sfixed64(value) {\n        let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.enc(value);\n        view.setInt32(0, tc.lo, true);\n        view.setInt32(4, tc.hi, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n     */\n    fixed64(value) {\n        let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.uEnc(value);\n        view.setInt32(0, tc.lo, true);\n        view.setInt32(4, tc.hi, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `int64` value, a signed 64-bit varint.\n     */\n    int64(value) {\n        let tc = protoInt64.enc(value);\n        varint64write(tc.lo, tc.hi, this.buf);\n        return this;\n    }\n    /**\n     * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n     */\n    sint64(value) {\n        let tc = protoInt64.enc(value), \n        // zigzag encode\n        sign = tc.hi >> 31, lo = (tc.lo << 1) ^ sign, hi = ((tc.hi << 1) | (tc.lo >>> 31)) ^ sign;\n        varint64write(lo, hi, this.buf);\n        return this;\n    }\n    /**\n     * Write a `uint64` value, an unsigned 64-bit varint.\n     */\n    uint64(value) {\n        let tc = protoInt64.uEnc(value);\n        varint64write(tc.lo, tc.hi, this.buf);\n        return this;\n    }\n}\nexport class BinaryReader {\n    constructor(buf, decodeUtf8 = getTextEncoding().decodeUtf8) {\n        this.decodeUtf8 = decodeUtf8;\n        this.varint64 = varint64read; // dirty cast for `this`\n        /**\n         * Read a `uint32` field, an unsigned 32 bit varint.\n         */\n        this.uint32 = varint32read;\n        this.buf = buf;\n        this.len = buf.length;\n        this.pos = 0;\n        this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n    }\n    /**\n     * Reads a tag - field number and wire type.\n     */\n    tag() {\n        let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;\n        if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n            throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n        return [fieldNo, wireType];\n    }\n    /**\n     * Skip one element and return the skipped data.\n     *\n     * When skipping StartGroup, provide the tags field number to check for\n     * matching field number in the EndGroup tag.\n     */\n    skip(wireType, fieldNo) {\n        let start = this.pos;\n        switch (wireType) {\n            case WireType.Varint:\n                while (this.buf[this.pos++] & 0x80) {\n                    // ignore\n                }\n                break;\n            // eslint-disable-next-line\n            // @ts-expect-error TS7029: Fallthrough case in switch\n            case WireType.Bit64:\n                this.pos += 4;\n            // eslint-disable-next-line no-fallthrough\n            case WireType.Bit32:\n                this.pos += 4;\n                break;\n            case WireType.LengthDelimited:\n                let len = this.uint32();\n                this.pos += len;\n                break;\n            case WireType.StartGroup:\n                for (;;) {\n                    const [fn, wt] = this.tag();\n                    if (wt === WireType.EndGroup) {\n                        if (fieldNo !== undefined && fn !== fieldNo) {\n                            throw new Error(\"invalid end group tag\");\n                        }\n                        break;\n                    }\n                    this.skip(wt, fn);\n                }\n                break;\n            default:\n                throw new Error(\"cant skip wire type \" + wireType);\n        }\n        this.assertBounds();\n        return this.buf.subarray(start, this.pos);\n    }\n    /**\n     * Throws error if position in byte array is out of range.\n     */\n    assertBounds() {\n        if (this.pos > this.len)\n            throw new RangeError(\"premature EOF\");\n    }\n    /**\n     * Read a `int32` field, a signed 32 bit varint.\n     */\n    int32() {\n        return this.uint32() | 0;\n    }\n    /**\n     * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n     */\n    sint32() {\n        let zze = this.uint32();\n        // decode zigzag\n        return (zze >>> 1) ^ -(zze & 1);\n    }\n    /**\n     * Read a `int64` field, a signed 64-bit varint.\n     */\n    int64() {\n        return protoInt64.dec(...this.varint64());\n    }\n    /**\n     * Read a `uint64` field, an unsigned 64-bit varint.\n     */\n    uint64() {\n        return protoInt64.uDec(...this.varint64());\n    }\n    /**\n     * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n     */\n    sint64() {\n        let [lo, hi] = this.varint64();\n        // decode zig zag\n        let s = -(lo & 1);\n        lo = ((lo >>> 1) | ((hi & 1) << 31)) ^ s;\n        hi = (hi >>> 1) ^ s;\n        return protoInt64.dec(lo, hi);\n    }\n    /**\n     * Read a `bool` field, a variant.\n     */\n    bool() {\n        let [lo, hi] = this.varint64();\n        return lo !== 0 || hi !== 0;\n    }\n    /**\n     * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n     */\n    fixed32() {\n        return this.view.getUint32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n     */\n    sfixed32() {\n        return this.view.getInt32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n     */\n    fixed64() {\n        return protoInt64.uDec(this.sfixed32(), this.sfixed32());\n    }\n    /**\n     * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n     */\n    sfixed64() {\n        return protoInt64.dec(this.sfixed32(), this.sfixed32());\n    }\n    /**\n     * Read a `float` field, 32-bit floating point number.\n     */\n    float() {\n        return this.view.getFloat32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `double` field, a 64-bit floating point number.\n     */\n    double() {\n        return this.view.getFloat64((this.pos += 8) - 8, true);\n    }\n    /**\n     * Read a `bytes` field, length-delimited arbitrary data.\n     */\n    bytes() {\n        let len = this.uint32(), start = this.pos;\n        this.pos += len;\n        this.assertBounds();\n        return this.buf.subarray(start, start + len);\n    }\n    /**\n     * Read a `string` field, length-delimited data converted to UTF-8 text.\n     */\n    string() {\n        return this.decodeUtf8(this.bytes());\n    }\n}\n/**\n * Assert a valid signed protobuf 32-bit integer as a number or string.\n */\nfunction assertInt32(arg) {\n    if (typeof arg == \"string\") {\n        arg = Number(arg);\n    }\n    else if (typeof arg != \"number\") {\n        throw new Error(\"invalid int32: \" + typeof arg);\n    }\n    if (!Number.isInteger(arg) ||\n        arg > INT32_MAX ||\n        arg < INT32_MIN)\n        throw new Error(\"invalid int32: \" + arg);\n}\n/**\n * Assert a valid unsigned protobuf 32-bit integer as a number or string.\n */\nfunction assertUInt32(arg) {\n    if (typeof arg == \"string\") {\n        arg = Number(arg);\n    }\n    else if (typeof arg != \"number\") {\n        throw new Error(\"invalid uint32: \" + typeof arg);\n    }\n    if (!Number.isInteger(arg) ||\n        arg > UINT32_MAX ||\n        arg < 0)\n        throw new Error(\"invalid uint32: \" + arg);\n}\n/**\n * Assert a valid protobuf float value as a number or string.\n */\nfunction assertFloat32(arg) {\n    if (typeof arg == \"string\") {\n        const o = arg;\n        arg = Number(arg);\n        if (isNaN(arg) && o !== \"NaN\") {\n            throw new Error(\"invalid float32: \" + o);\n        }\n    }\n    else if (typeof arg != \"number\") {\n        throw new Error(\"invalid float32: \" + typeof arg);\n    }\n    if (Number.isFinite(arg) &&\n        (arg > FLOAT32_MAX || arg < FLOAT32_MIN))\n        throw new Error(\"invalid float32: \" + arg);\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: google/protobuf/timestamp.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n *     Timestamp timestamp;\n *     timestamp.set_seconds(time(NULL));\n *     timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n *     struct timeval tv;\n *     gettimeofday(&tv, NULL);\n *\n *     Timestamp timestamp;\n *     timestamp.set_seconds(tv.tv_sec);\n *     timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n *     FILETIME ft;\n *     GetSystemTimeAsFileTime(&ft);\n *     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n *     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n *     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n *     Timestamp timestamp;\n *     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n *     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n *     long millis = System.currentTimeMillis();\n *\n *     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n *         .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n *     Instant now = Instant.now();\n *\n *     Timestamp timestamp =\n *         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n *             .setNanos(now.getNano()).build();\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n *     timestamp = Timestamp()\n *     timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D\n * ) to obtain a formatter capable of generating timestamps in this format.\n */\nexport interface Timestamp {\n  /**\n   * Represents seconds of UTC time since Unix epoch\n   * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n   * 9999-12-31T23:59:59Z inclusive.\n   */\n  seconds: number;\n  /**\n   * Non-negative fractions of a second at nanosecond resolution. Negative\n   * second values with fractions must still have non-negative nanos values\n   * that count forward in time. Must be from 0 to 999,999,999\n   * inclusive.\n   */\n  nanos: number;\n}\n\nfunction createBaseTimestamp(): Timestamp {\n  return { seconds: 0, nanos: 0 };\n}\n\nexport const Timestamp: MessageFns<Timestamp> = {\n  encode(message: Timestamp, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.seconds !== 0) {\n      writer.uint32(8).int64(message.seconds);\n    }\n    if (message.nanos !== 0) {\n      writer.uint32(16).int32(message.nanos);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Timestamp {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTimestamp();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.seconds = longToNumber(reader.int64());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.nanos = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Timestamp {\n    return {\n      seconds: isSet(object.seconds) ? globalThis.Number(object.seconds) : 0,\n      nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : 0,\n    };\n  },\n\n  toJSON(message: Timestamp): unknown {\n    const obj: any = {};\n    if (message.seconds !== 0) {\n      obj.seconds = Math.round(message.seconds);\n    }\n    if (message.nanos !== 0) {\n      obj.nanos = Math.round(message.nanos);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Timestamp>): Timestamp {\n    return Timestamp.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Timestamp>): Timestamp {\n    const message = createBaseTimestamp();\n    message.seconds = object.seconds ?? 0;\n    message.nanos = object.nanos ?? 0;\n    return message;\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\ninterface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: common.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { Timestamp } from \"./google/protobuf/timestamp\";\n\n/** Тип инструмента. */\nexport enum InstrumentType {\n  INSTRUMENT_TYPE_UNSPECIFIED = 0,\n  /** INSTRUMENT_TYPE_BOND - Облигация. */\n  INSTRUMENT_TYPE_BOND = 1,\n  /** INSTRUMENT_TYPE_SHARE - Акция. */\n  INSTRUMENT_TYPE_SHARE = 2,\n  /** INSTRUMENT_TYPE_CURRENCY - Валюта. */\n  INSTRUMENT_TYPE_CURRENCY = 3,\n  /** INSTRUMENT_TYPE_ETF - Exchange-traded fund. Фонд. */\n  INSTRUMENT_TYPE_ETF = 4,\n  /** INSTRUMENT_TYPE_FUTURES - Фьючерс. */\n  INSTRUMENT_TYPE_FUTURES = 5,\n  /** INSTRUMENT_TYPE_SP - Структурная нота. */\n  INSTRUMENT_TYPE_SP = 6,\n  /** INSTRUMENT_TYPE_OPTION - Опцион. */\n  INSTRUMENT_TYPE_OPTION = 7,\n  /** INSTRUMENT_TYPE_CLEARING_CERTIFICATE - Clearing certificate. */\n  INSTRUMENT_TYPE_CLEARING_CERTIFICATE = 8,\n  /** INSTRUMENT_TYPE_INDEX - Индекс. */\n  INSTRUMENT_TYPE_INDEX = 9,\n  /** INSTRUMENT_TYPE_COMMODITY - Товар. */\n  INSTRUMENT_TYPE_COMMODITY = 10,\n  UNRECOGNIZED = -1,\n}\n\nexport function instrumentTypeFromJSON(object: any): InstrumentType {\n  switch (object) {\n    case 0:\n    case \"INSTRUMENT_TYPE_UNSPECIFIED\":\n      return InstrumentType.INSTRUMENT_TYPE_UNSPECIFIED;\n    case 1:\n    case \"INSTRUMENT_TYPE_BOND\":\n      return InstrumentType.INSTRUMENT_TYPE_BOND;\n    case 2:\n    case \"INSTRUMENT_TYPE_SHARE\":\n      return InstrumentType.INSTRUMENT_TYPE_SHARE;\n    case 3:\n    case \"INSTRUMENT_TYPE_CURRENCY\":\n      return InstrumentType.INSTRUMENT_TYPE_CURRENCY;\n    case 4:\n    case \"INSTRUMENT_TYPE_ETF\":\n      return InstrumentType.INSTRUMENT_TYPE_ETF;\n    case 5:\n    case \"INSTRUMENT_TYPE_FUTURES\":\n      return InstrumentType.INSTRUMENT_TYPE_FUTURES;\n    case 6:\n    case \"INSTRUMENT_TYPE_SP\":\n      return InstrumentType.INSTRUMENT_TYPE_SP;\n    case 7:\n    case \"INSTRUMENT_TYPE_OPTION\":\n      return InstrumentType.INSTRUMENT_TYPE_OPTION;\n    case 8:\n    case \"INSTRUMENT_TYPE_CLEARING_CERTIFICATE\":\n      return InstrumentType.INSTRUMENT_TYPE_CLEARING_CERTIFICATE;\n    case 9:\n    case \"INSTRUMENT_TYPE_INDEX\":\n      return InstrumentType.INSTRUMENT_TYPE_INDEX;\n    case 10:\n    case \"INSTRUMENT_TYPE_COMMODITY\":\n      return InstrumentType.INSTRUMENT_TYPE_COMMODITY;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return InstrumentType.UNRECOGNIZED;\n  }\n}\n\nexport function instrumentTypeToJSON(object: InstrumentType): string {\n  switch (object) {\n    case InstrumentType.INSTRUMENT_TYPE_UNSPECIFIED:\n      return \"INSTRUMENT_TYPE_UNSPECIFIED\";\n    case InstrumentType.INSTRUMENT_TYPE_BOND:\n      return \"INSTRUMENT_TYPE_BOND\";\n    case InstrumentType.INSTRUMENT_TYPE_SHARE:\n      return \"INSTRUMENT_TYPE_SHARE\";\n    case InstrumentType.INSTRUMENT_TYPE_CURRENCY:\n      return \"INSTRUMENT_TYPE_CURRENCY\";\n    case InstrumentType.INSTRUMENT_TYPE_ETF:\n      return \"INSTRUMENT_TYPE_ETF\";\n    case InstrumentType.INSTRUMENT_TYPE_FUTURES:\n      return \"INSTRUMENT_TYPE_FUTURES\";\n    case InstrumentType.INSTRUMENT_TYPE_SP:\n      return \"INSTRUMENT_TYPE_SP\";\n    case InstrumentType.INSTRUMENT_TYPE_OPTION:\n      return \"INSTRUMENT_TYPE_OPTION\";\n    case InstrumentType.INSTRUMENT_TYPE_CLEARING_CERTIFICATE:\n      return \"INSTRUMENT_TYPE_CLEARING_CERTIFICATE\";\n    case InstrumentType.INSTRUMENT_TYPE_INDEX:\n      return \"INSTRUMENT_TYPE_INDEX\";\n    case InstrumentType.INSTRUMENT_TYPE_COMMODITY:\n      return \"INSTRUMENT_TYPE_COMMODITY\";\n    case InstrumentType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Статус запрашиваемых инструментов. */\nexport enum InstrumentStatus {\n  /** INSTRUMENT_STATUS_UNSPECIFIED - Значение не определено. */\n  INSTRUMENT_STATUS_UNSPECIFIED = 0,\n  /** INSTRUMENT_STATUS_BASE - Базовый список инструментов (по умолчанию). Инструменты, доступные для торговли через T-Invest API. Cейчас списки бумаг, которые доступны из API и других интерфейсах совпадают — кроме внебиржевых бумаг. Но в будущем возможны ситуации, когда списки инструментов будут отличаться. */\n  INSTRUMENT_STATUS_BASE = 1,\n  /** INSTRUMENT_STATUS_ALL - Список всех инструментов. */\n  INSTRUMENT_STATUS_ALL = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function instrumentStatusFromJSON(object: any): InstrumentStatus {\n  switch (object) {\n    case 0:\n    case \"INSTRUMENT_STATUS_UNSPECIFIED\":\n      return InstrumentStatus.INSTRUMENT_STATUS_UNSPECIFIED;\n    case 1:\n    case \"INSTRUMENT_STATUS_BASE\":\n      return InstrumentStatus.INSTRUMENT_STATUS_BASE;\n    case 2:\n    case \"INSTRUMENT_STATUS_ALL\":\n      return InstrumentStatus.INSTRUMENT_STATUS_ALL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return InstrumentStatus.UNRECOGNIZED;\n  }\n}\n\nexport function instrumentStatusToJSON(object: InstrumentStatus): string {\n  switch (object) {\n    case InstrumentStatus.INSTRUMENT_STATUS_UNSPECIFIED:\n      return \"INSTRUMENT_STATUS_UNSPECIFIED\";\n    case InstrumentStatus.INSTRUMENT_STATUS_BASE:\n      return \"INSTRUMENT_STATUS_BASE\";\n    case InstrumentStatus.INSTRUMENT_STATUS_ALL:\n      return \"INSTRUMENT_STATUS_ALL\";\n    case InstrumentStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Режим торгов инструмента */\nexport enum SecurityTradingStatus {\n  /** SECURITY_TRADING_STATUS_UNSPECIFIED - Торговый статус не определён. */\n  SECURITY_TRADING_STATUS_UNSPECIFIED = 0,\n  /** SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING - Недоступен для торгов. */\n  SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING = 1,\n  /** SECURITY_TRADING_STATUS_OPENING_PERIOD - Период открытия торгов. */\n  SECURITY_TRADING_STATUS_OPENING_PERIOD = 2,\n  /** SECURITY_TRADING_STATUS_CLOSING_PERIOD - Период закрытия торгов. */\n  SECURITY_TRADING_STATUS_CLOSING_PERIOD = 3,\n  /** SECURITY_TRADING_STATUS_BREAK_IN_TRADING - Перерыв в торговле. */\n  SECURITY_TRADING_STATUS_BREAK_IN_TRADING = 4,\n  /** SECURITY_TRADING_STATUS_NORMAL_TRADING - Нормальная торговля. */\n  SECURITY_TRADING_STATUS_NORMAL_TRADING = 5,\n  /** SECURITY_TRADING_STATUS_CLOSING_AUCTION - Аукцион закрытия. */\n  SECURITY_TRADING_STATUS_CLOSING_AUCTION = 6,\n  /** SECURITY_TRADING_STATUS_DARK_POOL_AUCTION - Аукцион крупных пакетов. */\n  SECURITY_TRADING_STATUS_DARK_POOL_AUCTION = 7,\n  /** SECURITY_TRADING_STATUS_DISCRETE_AUCTION - Дискретный аукцион. */\n  SECURITY_TRADING_STATUS_DISCRETE_AUCTION = 8,\n  /** SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD - Аукцион открытия. */\n  SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD = 9,\n  /** SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE - Период торгов по цене аукциона закрытия. */\n  SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE = 10,\n  /** SECURITY_TRADING_STATUS_SESSION_ASSIGNED - Сессия назначена. */\n  SECURITY_TRADING_STATUS_SESSION_ASSIGNED = 11,\n  /** SECURITY_TRADING_STATUS_SESSION_CLOSE - Сессия закрыта. */\n  SECURITY_TRADING_STATUS_SESSION_CLOSE = 12,\n  /** SECURITY_TRADING_STATUS_SESSION_OPEN - Сессия открыта. */\n  SECURITY_TRADING_STATUS_SESSION_OPEN = 13,\n  /** SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING - Доступна торговля в режиме внутренней ликвидности брокера. */\n  SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING = 14,\n  /** SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING - Перерыв торговли в режиме внутренней ликвидности брокера. */\n  SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING = 15,\n  /** SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING - Недоступна торговля в режиме внутренней ликвидности брокера. */\n  SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING = 16,\n  UNRECOGNIZED = -1,\n}\n\nexport function securityTradingStatusFromJSON(object: any): SecurityTradingStatus {\n  switch (object) {\n    case 0:\n    case \"SECURITY_TRADING_STATUS_UNSPECIFIED\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_UNSPECIFIED;\n    case 1:\n    case \"SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING;\n    case 2:\n    case \"SECURITY_TRADING_STATUS_OPENING_PERIOD\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_OPENING_PERIOD;\n    case 3:\n    case \"SECURITY_TRADING_STATUS_CLOSING_PERIOD\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_CLOSING_PERIOD;\n    case 4:\n    case \"SECURITY_TRADING_STATUS_BREAK_IN_TRADING\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_BREAK_IN_TRADING;\n    case 5:\n    case \"SECURITY_TRADING_STATUS_NORMAL_TRADING\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_NORMAL_TRADING;\n    case 6:\n    case \"SECURITY_TRADING_STATUS_CLOSING_AUCTION\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_CLOSING_AUCTION;\n    case 7:\n    case \"SECURITY_TRADING_STATUS_DARK_POOL_AUCTION\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_DARK_POOL_AUCTION;\n    case 8:\n    case \"SECURITY_TRADING_STATUS_DISCRETE_AUCTION\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_DISCRETE_AUCTION;\n    case 9:\n    case \"SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD;\n    case 10:\n    case \"SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE;\n    case 11:\n    case \"SECURITY_TRADING_STATUS_SESSION_ASSIGNED\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_SESSION_ASSIGNED;\n    case 12:\n    case \"SECURITY_TRADING_STATUS_SESSION_CLOSE\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_SESSION_CLOSE;\n    case 13:\n    case \"SECURITY_TRADING_STATUS_SESSION_OPEN\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_SESSION_OPEN;\n    case 14:\n    case \"SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING;\n    case 15:\n    case \"SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING;\n    case 16:\n    case \"SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING\":\n      return SecurityTradingStatus.SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return SecurityTradingStatus.UNRECOGNIZED;\n  }\n}\n\nexport function securityTradingStatusToJSON(object: SecurityTradingStatus): string {\n  switch (object) {\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_UNSPECIFIED:\n      return \"SECURITY_TRADING_STATUS_UNSPECIFIED\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING:\n      return \"SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_OPENING_PERIOD:\n      return \"SECURITY_TRADING_STATUS_OPENING_PERIOD\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_CLOSING_PERIOD:\n      return \"SECURITY_TRADING_STATUS_CLOSING_PERIOD\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_BREAK_IN_TRADING:\n      return \"SECURITY_TRADING_STATUS_BREAK_IN_TRADING\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_NORMAL_TRADING:\n      return \"SECURITY_TRADING_STATUS_NORMAL_TRADING\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_CLOSING_AUCTION:\n      return \"SECURITY_TRADING_STATUS_CLOSING_AUCTION\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_DARK_POOL_AUCTION:\n      return \"SECURITY_TRADING_STATUS_DARK_POOL_AUCTION\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_DISCRETE_AUCTION:\n      return \"SECURITY_TRADING_STATUS_DISCRETE_AUCTION\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD:\n      return \"SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE:\n      return \"SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_SESSION_ASSIGNED:\n      return \"SECURITY_TRADING_STATUS_SESSION_ASSIGNED\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_SESSION_CLOSE:\n      return \"SECURITY_TRADING_STATUS_SESSION_CLOSE\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_SESSION_OPEN:\n      return \"SECURITY_TRADING_STATUS_SESSION_OPEN\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING:\n      return \"SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING:\n      return \"SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING\";\n    case SecurityTradingStatus.SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING:\n      return \"SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING\";\n    case SecurityTradingStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип цены. */\nexport enum PriceType {\n  /** PRICE_TYPE_UNSPECIFIED - Значение не определено. */\n  PRICE_TYPE_UNSPECIFIED = 0,\n  /** PRICE_TYPE_POINT - Цена в пунктах (только для фьючерсов и облигаций). */\n  PRICE_TYPE_POINT = 1,\n  /** PRICE_TYPE_CURRENCY - Цена в валюте расчётов по инструменту. */\n  PRICE_TYPE_CURRENCY = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function priceTypeFromJSON(object: any): PriceType {\n  switch (object) {\n    case 0:\n    case \"PRICE_TYPE_UNSPECIFIED\":\n      return PriceType.PRICE_TYPE_UNSPECIFIED;\n    case 1:\n    case \"PRICE_TYPE_POINT\":\n      return PriceType.PRICE_TYPE_POINT;\n    case 2:\n    case \"PRICE_TYPE_CURRENCY\":\n      return PriceType.PRICE_TYPE_CURRENCY;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PriceType.UNRECOGNIZED;\n  }\n}\n\nexport function priceTypeToJSON(object: PriceType): string {\n  switch (object) {\n    case PriceType.PRICE_TYPE_UNSPECIFIED:\n      return \"PRICE_TYPE_UNSPECIFIED\";\n    case PriceType.PRICE_TYPE_POINT:\n      return \"PRICE_TYPE_POINT\";\n    case PriceType.PRICE_TYPE_CURRENCY:\n      return \"PRICE_TYPE_CURRENCY\";\n    case PriceType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport enum ResultSubscriptionStatus {\n  /** RESULT_SUBSCRIPTION_STATUS_UNSPECIFIED - Статус подписки не определен. */\n  RESULT_SUBSCRIPTION_STATUS_UNSPECIFIED = 0,\n  /** RESULT_SUBSCRIPTION_STATUS_OK - Подписка успешно установлена. */\n  RESULT_SUBSCRIPTION_STATUS_OK = 1,\n  /** RESULT_SUBSCRIPTION_STATUS_ERROR - Ошибка подписки */\n  RESULT_SUBSCRIPTION_STATUS_ERROR = 13,\n  UNRECOGNIZED = -1,\n}\n\nexport function resultSubscriptionStatusFromJSON(object: any): ResultSubscriptionStatus {\n  switch (object) {\n    case 0:\n    case \"RESULT_SUBSCRIPTION_STATUS_UNSPECIFIED\":\n      return ResultSubscriptionStatus.RESULT_SUBSCRIPTION_STATUS_UNSPECIFIED;\n    case 1:\n    case \"RESULT_SUBSCRIPTION_STATUS_OK\":\n      return ResultSubscriptionStatus.RESULT_SUBSCRIPTION_STATUS_OK;\n    case 13:\n    case \"RESULT_SUBSCRIPTION_STATUS_ERROR\":\n      return ResultSubscriptionStatus.RESULT_SUBSCRIPTION_STATUS_ERROR;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return ResultSubscriptionStatus.UNRECOGNIZED;\n  }\n}\n\nexport function resultSubscriptionStatusToJSON(object: ResultSubscriptionStatus): string {\n  switch (object) {\n    case ResultSubscriptionStatus.RESULT_SUBSCRIPTION_STATUS_UNSPECIFIED:\n      return \"RESULT_SUBSCRIPTION_STATUS_UNSPECIFIED\";\n    case ResultSubscriptionStatus.RESULT_SUBSCRIPTION_STATUS_OK:\n      return \"RESULT_SUBSCRIPTION_STATUS_OK\";\n    case ResultSubscriptionStatus.RESULT_SUBSCRIPTION_STATUS_ERROR:\n      return \"RESULT_SUBSCRIPTION_STATUS_ERROR\";\n    case ResultSubscriptionStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Денежная сумма в определённой валюте. */\nexport interface MoneyValue {\n  /** Строковый ISO-код валюты. */\n  currency: string;\n  /** Целая часть суммы, может быть отрицательным числом. */\n  units: number;\n  /** Дробная часть суммы, может быть отрицательным числом. */\n  nano: number;\n}\n\n/** Котировка — денежная сумма без указания валюты. */\nexport interface Quotation {\n  /** Целая часть суммы, может быть отрицательным числом. */\n  units: number;\n  /** Дробная часть суммы, может быть отрицательным числом. */\n  nano: number;\n}\n\nexport interface PingRequest {\n  /** Время формирования запроса */\n  time?: Date | undefined;\n}\n\nexport interface PingDelaySettings {\n  /** Задержка пинг сообщений milliseconds 5000-180000, default 120000 */\n  pingDelayMs?: number | undefined;\n}\n\n/** Проверка активности стрима. */\nexport interface Ping {\n  /** Время проверки. */\n  time:\n    | Date\n    | undefined;\n  /** Идентификатор соединения. */\n  streamId: string;\n  /** Время формирования запроса */\n  pingRequestTime?: Date | undefined;\n}\n\nexport interface Page {\n  /** Максимальное число возвращаемых записей. */\n  limit: number;\n  /** Порядковый номер страницы, начиная с 0. */\n  pageNumber: number;\n}\n\nexport interface PageResponse {\n  /** Максимальное число возвращаемых записей. */\n  limit: number;\n  /** Порядковый номер страницы, начиная с 0. */\n  pageNumber: number;\n  /** Общее количество записей. */\n  totalCount: number;\n}\n\nexport interface ResponseMetadata {\n  /** Идентификатор трекинга. */\n  trackingId: string;\n  /** Серверное время. */\n  serverTime: Date | undefined;\n}\n\nexport interface BrandData {\n  /** Логотип инструмента. Имя файла для получения логотипа. */\n  logoName: string;\n  /** Цвет бренда. */\n  logoBaseColor: string;\n  /** Цвет текста для цвета логотипа бренда. */\n  textColor: string;\n}\n\nexport interface ErrorDetail {\n  /** Код ошибки. */\n  code: string;\n  /** Описание ошибки. */\n  message: string;\n}\n\nfunction createBaseMoneyValue(): MoneyValue {\n  return { currency: \"\", units: 0, nano: 0 };\n}\n\nexport const MoneyValue: MessageFns<MoneyValue> = {\n  encode(message: MoneyValue, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.currency !== \"\") {\n      writer.uint32(10).string(message.currency);\n    }\n    if (message.units !== 0) {\n      writer.uint32(16).int64(message.units);\n    }\n    if (message.nano !== 0) {\n      writer.uint32(24).int32(message.nano);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MoneyValue {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMoneyValue();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.units = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.nano = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MoneyValue {\n    return {\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      units: isSet(object.units) ? globalThis.Number(object.units) : 0,\n      nano: isSet(object.nano) ? globalThis.Number(object.nano) : 0,\n    };\n  },\n\n  toJSON(message: MoneyValue): unknown {\n    const obj: any = {};\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.units !== 0) {\n      obj.units = Math.round(message.units);\n    }\n    if (message.nano !== 0) {\n      obj.nano = Math.round(message.nano);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MoneyValue>): MoneyValue {\n    return MoneyValue.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MoneyValue>): MoneyValue {\n    const message = createBaseMoneyValue();\n    message.currency = object.currency ?? \"\";\n    message.units = object.units ?? 0;\n    message.nano = object.nano ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseQuotation(): Quotation {\n  return { units: 0, nano: 0 };\n}\n\nexport const Quotation: MessageFns<Quotation> = {\n  encode(message: Quotation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.units !== 0) {\n      writer.uint32(8).int64(message.units);\n    }\n    if (message.nano !== 0) {\n      writer.uint32(16).int32(message.nano);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Quotation {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseQuotation();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.units = longToNumber(reader.int64());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.nano = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Quotation {\n    return {\n      units: isSet(object.units) ? globalThis.Number(object.units) : 0,\n      nano: isSet(object.nano) ? globalThis.Number(object.nano) : 0,\n    };\n  },\n\n  toJSON(message: Quotation): unknown {\n    const obj: any = {};\n    if (message.units !== 0) {\n      obj.units = Math.round(message.units);\n    }\n    if (message.nano !== 0) {\n      obj.nano = Math.round(message.nano);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Quotation>): Quotation {\n    return Quotation.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Quotation>): Quotation {\n    const message = createBaseQuotation();\n    message.units = object.units ?? 0;\n    message.nano = object.nano ?? 0;\n    return message;\n  },\n};\n\nfunction createBasePingRequest(): PingRequest {\n  return { time: undefined };\n}\n\nexport const PingRequest: MessageFns<PingRequest> = {\n  encode(message: PingRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PingRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePingRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PingRequest {\n    return { time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined };\n  },\n\n  toJSON(message: PingRequest): unknown {\n    const obj: any = {};\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PingRequest>): PingRequest {\n    return PingRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PingRequest>): PingRequest {\n    const message = createBasePingRequest();\n    message.time = object.time ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePingDelaySettings(): PingDelaySettings {\n  return { pingDelayMs: undefined };\n}\n\nexport const PingDelaySettings: MessageFns<PingDelaySettings> = {\n  encode(message: PingDelaySettings, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.pingDelayMs !== undefined) {\n      writer.uint32(120).int32(message.pingDelayMs);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PingDelaySettings {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePingDelaySettings();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 15: {\n          if (tag !== 120) {\n            break;\n          }\n\n          message.pingDelayMs = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PingDelaySettings {\n    return { pingDelayMs: isSet(object.pingDelayMs) ? globalThis.Number(object.pingDelayMs) : undefined };\n  },\n\n  toJSON(message: PingDelaySettings): unknown {\n    const obj: any = {};\n    if (message.pingDelayMs !== undefined) {\n      obj.pingDelayMs = Math.round(message.pingDelayMs);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PingDelaySettings>): PingDelaySettings {\n    return PingDelaySettings.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PingDelaySettings>): PingDelaySettings {\n    const message = createBasePingDelaySettings();\n    message.pingDelayMs = object.pingDelayMs ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePing(): Ping {\n  return { time: undefined, streamId: \"\", pingRequestTime: undefined };\n}\n\nexport const Ping: MessageFns<Ping> = {\n  encode(message: Ping, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(10).fork()).join();\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(18).string(message.streamId);\n    }\n    if (message.pingRequestTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.pingRequestTime), writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Ping {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePing();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.pingRequestTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Ping {\n    return {\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n      pingRequestTime: isSet(object.pingRequestTime) ? fromJsonTimestamp(object.pingRequestTime) : undefined,\n    };\n  },\n\n  toJSON(message: Ping): unknown {\n    const obj: any = {};\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    if (message.pingRequestTime !== undefined) {\n      obj.pingRequestTime = message.pingRequestTime.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Ping>): Ping {\n    return Ping.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Ping>): Ping {\n    const message = createBasePing();\n    message.time = object.time ?? undefined;\n    message.streamId = object.streamId ?? \"\";\n    message.pingRequestTime = object.pingRequestTime ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePage(): Page {\n  return { limit: 0, pageNumber: 0 };\n}\n\nexport const Page: MessageFns<Page> = {\n  encode(message: Page, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.limit !== 0) {\n      writer.uint32(8).int32(message.limit);\n    }\n    if (message.pageNumber !== 0) {\n      writer.uint32(16).int32(message.pageNumber);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Page {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePage();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.limit = reader.int32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.pageNumber = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Page {\n    return {\n      limit: isSet(object.limit) ? globalThis.Number(object.limit) : 0,\n      pageNumber: isSet(object.pageNumber) ? globalThis.Number(object.pageNumber) : 0,\n    };\n  },\n\n  toJSON(message: Page): unknown {\n    const obj: any = {};\n    if (message.limit !== 0) {\n      obj.limit = Math.round(message.limit);\n    }\n    if (message.pageNumber !== 0) {\n      obj.pageNumber = Math.round(message.pageNumber);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Page>): Page {\n    return Page.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Page>): Page {\n    const message = createBasePage();\n    message.limit = object.limit ?? 0;\n    message.pageNumber = object.pageNumber ?? 0;\n    return message;\n  },\n};\n\nfunction createBasePageResponse(): PageResponse {\n  return { limit: 0, pageNumber: 0, totalCount: 0 };\n}\n\nexport const PageResponse: MessageFns<PageResponse> = {\n  encode(message: PageResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.limit !== 0) {\n      writer.uint32(8).int32(message.limit);\n    }\n    if (message.pageNumber !== 0) {\n      writer.uint32(16).int32(message.pageNumber);\n    }\n    if (message.totalCount !== 0) {\n      writer.uint32(24).int32(message.totalCount);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PageResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePageResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.limit = reader.int32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.pageNumber = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.totalCount = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PageResponse {\n    return {\n      limit: isSet(object.limit) ? globalThis.Number(object.limit) : 0,\n      pageNumber: isSet(object.pageNumber) ? globalThis.Number(object.pageNumber) : 0,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : 0,\n    };\n  },\n\n  toJSON(message: PageResponse): unknown {\n    const obj: any = {};\n    if (message.limit !== 0) {\n      obj.limit = Math.round(message.limit);\n    }\n    if (message.pageNumber !== 0) {\n      obj.pageNumber = Math.round(message.pageNumber);\n    }\n    if (message.totalCount !== 0) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PageResponse>): PageResponse {\n    return PageResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PageResponse>): PageResponse {\n    const message = createBasePageResponse();\n    message.limit = object.limit ?? 0;\n    message.pageNumber = object.pageNumber ?? 0;\n    message.totalCount = object.totalCount ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseResponseMetadata(): ResponseMetadata {\n  return { trackingId: \"\", serverTime: undefined };\n}\n\nexport const ResponseMetadata: MessageFns<ResponseMetadata> = {\n  encode(message: ResponseMetadata, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.trackingId !== \"\") {\n      writer.uint32(338).string(message.trackingId);\n    }\n    if (message.serverTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.serverTime), writer.uint32(346).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResponseMetadata {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResponseMetadata();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 42: {\n          if (tag !== 338) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 43: {\n          if (tag !== 346) {\n            break;\n          }\n\n          message.serverTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResponseMetadata {\n    return {\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      serverTime: isSet(object.serverTime) ? fromJsonTimestamp(object.serverTime) : undefined,\n    };\n  },\n\n  toJSON(message: ResponseMetadata): unknown {\n    const obj: any = {};\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.serverTime !== undefined) {\n      obj.serverTime = message.serverTime.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResponseMetadata>): ResponseMetadata {\n    return ResponseMetadata.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResponseMetadata>): ResponseMetadata {\n    const message = createBaseResponseMetadata();\n    message.trackingId = object.trackingId ?? \"\";\n    message.serverTime = object.serverTime ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseBrandData(): BrandData {\n  return { logoName: \"\", logoBaseColor: \"\", textColor: \"\" };\n}\n\nexport const BrandData: MessageFns<BrandData> = {\n  encode(message: BrandData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.logoName !== \"\") {\n      writer.uint32(10).string(message.logoName);\n    }\n    if (message.logoBaseColor !== \"\") {\n      writer.uint32(18).string(message.logoBaseColor);\n    }\n    if (message.textColor !== \"\") {\n      writer.uint32(26).string(message.textColor);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BrandData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBrandData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.logoName = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.logoBaseColor = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.textColor = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BrandData {\n    return {\n      logoName: isSet(object.logoName) ? globalThis.String(object.logoName) : \"\",\n      logoBaseColor: isSet(object.logoBaseColor) ? globalThis.String(object.logoBaseColor) : \"\",\n      textColor: isSet(object.textColor) ? globalThis.String(object.textColor) : \"\",\n    };\n  },\n\n  toJSON(message: BrandData): unknown {\n    const obj: any = {};\n    if (message.logoName !== \"\") {\n      obj.logoName = message.logoName;\n    }\n    if (message.logoBaseColor !== \"\") {\n      obj.logoBaseColor = message.logoBaseColor;\n    }\n    if (message.textColor !== \"\") {\n      obj.textColor = message.textColor;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BrandData>): BrandData {\n    return BrandData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BrandData>): BrandData {\n    const message = createBaseBrandData();\n    message.logoName = object.logoName ?? \"\";\n    message.logoBaseColor = object.logoBaseColor ?? \"\";\n    message.textColor = object.textColor ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseErrorDetail(): ErrorDetail {\n  return { code: \"\", message: \"\" };\n}\n\nexport const ErrorDetail: MessageFns<ErrorDetail> = {\n  encode(message: ErrorDetail, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.code !== \"\") {\n      writer.uint32(10).string(message.code);\n    }\n    if (message.message !== \"\") {\n      writer.uint32(26).string(message.message);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ErrorDetail {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseErrorDetail();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.code = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.message = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ErrorDetail {\n    return {\n      code: isSet(object.code) ? globalThis.String(object.code) : \"\",\n      message: isSet(object.message) ? globalThis.String(object.message) : \"\",\n    };\n  },\n\n  toJSON(message: ErrorDetail): unknown {\n    const obj: any = {};\n    if (message.code !== \"\") {\n      obj.code = message.code;\n    }\n    if (message.message !== \"\") {\n      obj.message = message.message;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ErrorDetail>): ErrorDetail {\n    return ErrorDetail.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ErrorDetail>): ErrorDetail {\n    const message = createBaseErrorDetail();\n    message.code = object.code ?? \"\";\n    message.message = object.message ?? \"\";\n    return message;\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\ninterface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: instruments.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport {\n  BrandData,\n  InstrumentStatus,\n  instrumentStatusFromJSON,\n  instrumentStatusToJSON,\n  InstrumentType,\n  instrumentTypeFromJSON,\n  instrumentTypeToJSON,\n  MoneyValue,\n  Page,\n  PageResponse,\n  Quotation,\n  SecurityTradingStatus,\n  securityTradingStatusFromJSON,\n  securityTradingStatusToJSON,\n} from \"./common\";\nimport { Timestamp } from \"./google/protobuf/timestamp\";\n\n/** Тип купонов. */\nexport enum CouponType {\n  /** COUPON_TYPE_UNSPECIFIED - Неопределённое значение. */\n  COUPON_TYPE_UNSPECIFIED = 0,\n  /** COUPON_TYPE_CONSTANT - Постоянный. */\n  COUPON_TYPE_CONSTANT = 1,\n  /** COUPON_TYPE_FLOATING - Плавающий. */\n  COUPON_TYPE_FLOATING = 2,\n  /** COUPON_TYPE_DISCOUNT - Дисконт. */\n  COUPON_TYPE_DISCOUNT = 3,\n  /** COUPON_TYPE_MORTGAGE - Ипотечный. */\n  COUPON_TYPE_MORTGAGE = 4,\n  /** COUPON_TYPE_FIX - Фиксированный. */\n  COUPON_TYPE_FIX = 5,\n  /** COUPON_TYPE_VARIABLE - Переменный. */\n  COUPON_TYPE_VARIABLE = 6,\n  /** COUPON_TYPE_OTHER - Прочее. */\n  COUPON_TYPE_OTHER = 7,\n  UNRECOGNIZED = -1,\n}\n\nexport function couponTypeFromJSON(object: any): CouponType {\n  switch (object) {\n    case 0:\n    case \"COUPON_TYPE_UNSPECIFIED\":\n      return CouponType.COUPON_TYPE_UNSPECIFIED;\n    case 1:\n    case \"COUPON_TYPE_CONSTANT\":\n      return CouponType.COUPON_TYPE_CONSTANT;\n    case 2:\n    case \"COUPON_TYPE_FLOATING\":\n      return CouponType.COUPON_TYPE_FLOATING;\n    case 3:\n    case \"COUPON_TYPE_DISCOUNT\":\n      return CouponType.COUPON_TYPE_DISCOUNT;\n    case 4:\n    case \"COUPON_TYPE_MORTGAGE\":\n      return CouponType.COUPON_TYPE_MORTGAGE;\n    case 5:\n    case \"COUPON_TYPE_FIX\":\n      return CouponType.COUPON_TYPE_FIX;\n    case 6:\n    case \"COUPON_TYPE_VARIABLE\":\n      return CouponType.COUPON_TYPE_VARIABLE;\n    case 7:\n    case \"COUPON_TYPE_OTHER\":\n      return CouponType.COUPON_TYPE_OTHER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CouponType.UNRECOGNIZED;\n  }\n}\n\nexport function couponTypeToJSON(object: CouponType): string {\n  switch (object) {\n    case CouponType.COUPON_TYPE_UNSPECIFIED:\n      return \"COUPON_TYPE_UNSPECIFIED\";\n    case CouponType.COUPON_TYPE_CONSTANT:\n      return \"COUPON_TYPE_CONSTANT\";\n    case CouponType.COUPON_TYPE_FLOATING:\n      return \"COUPON_TYPE_FLOATING\";\n    case CouponType.COUPON_TYPE_DISCOUNT:\n      return \"COUPON_TYPE_DISCOUNT\";\n    case CouponType.COUPON_TYPE_MORTGAGE:\n      return \"COUPON_TYPE_MORTGAGE\";\n    case CouponType.COUPON_TYPE_FIX:\n      return \"COUPON_TYPE_FIX\";\n    case CouponType.COUPON_TYPE_VARIABLE:\n      return \"COUPON_TYPE_VARIABLE\";\n    case CouponType.COUPON_TYPE_OTHER:\n      return \"COUPON_TYPE_OTHER\";\n    case CouponType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип опциона по направлению сделки. */\nexport enum OptionDirection {\n  /** OPTION_DIRECTION_UNSPECIFIED - Тип не определён. */\n  OPTION_DIRECTION_UNSPECIFIED = 0,\n  /** OPTION_DIRECTION_PUT - Опцион на продажу. */\n  OPTION_DIRECTION_PUT = 1,\n  /** OPTION_DIRECTION_CALL - Опцион на покупку. */\n  OPTION_DIRECTION_CALL = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function optionDirectionFromJSON(object: any): OptionDirection {\n  switch (object) {\n    case 0:\n    case \"OPTION_DIRECTION_UNSPECIFIED\":\n      return OptionDirection.OPTION_DIRECTION_UNSPECIFIED;\n    case 1:\n    case \"OPTION_DIRECTION_PUT\":\n      return OptionDirection.OPTION_DIRECTION_PUT;\n    case 2:\n    case \"OPTION_DIRECTION_CALL\":\n      return OptionDirection.OPTION_DIRECTION_CALL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OptionDirection.UNRECOGNIZED;\n  }\n}\n\nexport function optionDirectionToJSON(object: OptionDirection): string {\n  switch (object) {\n    case OptionDirection.OPTION_DIRECTION_UNSPECIFIED:\n      return \"OPTION_DIRECTION_UNSPECIFIED\";\n    case OptionDirection.OPTION_DIRECTION_PUT:\n      return \"OPTION_DIRECTION_PUT\";\n    case OptionDirection.OPTION_DIRECTION_CALL:\n      return \"OPTION_DIRECTION_CALL\";\n    case OptionDirection.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип расчётов по опциону. */\nexport enum OptionPaymentType {\n  /** OPTION_PAYMENT_TYPE_UNSPECIFIED - Тип не определён. */\n  OPTION_PAYMENT_TYPE_UNSPECIFIED = 0,\n  /** OPTION_PAYMENT_TYPE_PREMIUM - Опционы с использованием премии в расчётах. */\n  OPTION_PAYMENT_TYPE_PREMIUM = 1,\n  /** OPTION_PAYMENT_TYPE_MARGINAL - Маржируемые опционы. */\n  OPTION_PAYMENT_TYPE_MARGINAL = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function optionPaymentTypeFromJSON(object: any): OptionPaymentType {\n  switch (object) {\n    case 0:\n    case \"OPTION_PAYMENT_TYPE_UNSPECIFIED\":\n      return OptionPaymentType.OPTION_PAYMENT_TYPE_UNSPECIFIED;\n    case 1:\n    case \"OPTION_PAYMENT_TYPE_PREMIUM\":\n      return OptionPaymentType.OPTION_PAYMENT_TYPE_PREMIUM;\n    case 2:\n    case \"OPTION_PAYMENT_TYPE_MARGINAL\":\n      return OptionPaymentType.OPTION_PAYMENT_TYPE_MARGINAL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OptionPaymentType.UNRECOGNIZED;\n  }\n}\n\nexport function optionPaymentTypeToJSON(object: OptionPaymentType): string {\n  switch (object) {\n    case OptionPaymentType.OPTION_PAYMENT_TYPE_UNSPECIFIED:\n      return \"OPTION_PAYMENT_TYPE_UNSPECIFIED\";\n    case OptionPaymentType.OPTION_PAYMENT_TYPE_PREMIUM:\n      return \"OPTION_PAYMENT_TYPE_PREMIUM\";\n    case OptionPaymentType.OPTION_PAYMENT_TYPE_MARGINAL:\n      return \"OPTION_PAYMENT_TYPE_MARGINAL\";\n    case OptionPaymentType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип опциона по стилю. */\nexport enum OptionStyle {\n  /** OPTION_STYLE_UNSPECIFIED - Тип не определён. */\n  OPTION_STYLE_UNSPECIFIED = 0,\n  /** OPTION_STYLE_AMERICAN - Американский опцион. */\n  OPTION_STYLE_AMERICAN = 1,\n  /** OPTION_STYLE_EUROPEAN - Европейский опцион. */\n  OPTION_STYLE_EUROPEAN = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function optionStyleFromJSON(object: any): OptionStyle {\n  switch (object) {\n    case 0:\n    case \"OPTION_STYLE_UNSPECIFIED\":\n      return OptionStyle.OPTION_STYLE_UNSPECIFIED;\n    case 1:\n    case \"OPTION_STYLE_AMERICAN\":\n      return OptionStyle.OPTION_STYLE_AMERICAN;\n    case 2:\n    case \"OPTION_STYLE_EUROPEAN\":\n      return OptionStyle.OPTION_STYLE_EUROPEAN;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OptionStyle.UNRECOGNIZED;\n  }\n}\n\nexport function optionStyleToJSON(object: OptionStyle): string {\n  switch (object) {\n    case OptionStyle.OPTION_STYLE_UNSPECIFIED:\n      return \"OPTION_STYLE_UNSPECIFIED\";\n    case OptionStyle.OPTION_STYLE_AMERICAN:\n      return \"OPTION_STYLE_AMERICAN\";\n    case OptionStyle.OPTION_STYLE_EUROPEAN:\n      return \"OPTION_STYLE_EUROPEAN\";\n    case OptionStyle.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип опциона по способу исполнения. */\nexport enum OptionSettlementType {\n  /** OPTION_EXECUTION_TYPE_UNSPECIFIED - Тип не определён. */\n  OPTION_EXECUTION_TYPE_UNSPECIFIED = 0,\n  /** OPTION_EXECUTION_TYPE_PHYSICAL_DELIVERY - Поставочный тип опциона. */\n  OPTION_EXECUTION_TYPE_PHYSICAL_DELIVERY = 1,\n  /** OPTION_EXECUTION_TYPE_CASH_SETTLEMENT - Расчётный тип опциона. */\n  OPTION_EXECUTION_TYPE_CASH_SETTLEMENT = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function optionSettlementTypeFromJSON(object: any): OptionSettlementType {\n  switch (object) {\n    case 0:\n    case \"OPTION_EXECUTION_TYPE_UNSPECIFIED\":\n      return OptionSettlementType.OPTION_EXECUTION_TYPE_UNSPECIFIED;\n    case 1:\n    case \"OPTION_EXECUTION_TYPE_PHYSICAL_DELIVERY\":\n      return OptionSettlementType.OPTION_EXECUTION_TYPE_PHYSICAL_DELIVERY;\n    case 2:\n    case \"OPTION_EXECUTION_TYPE_CASH_SETTLEMENT\":\n      return OptionSettlementType.OPTION_EXECUTION_TYPE_CASH_SETTLEMENT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OptionSettlementType.UNRECOGNIZED;\n  }\n}\n\nexport function optionSettlementTypeToJSON(object: OptionSettlementType): string {\n  switch (object) {\n    case OptionSettlementType.OPTION_EXECUTION_TYPE_UNSPECIFIED:\n      return \"OPTION_EXECUTION_TYPE_UNSPECIFIED\";\n    case OptionSettlementType.OPTION_EXECUTION_TYPE_PHYSICAL_DELIVERY:\n      return \"OPTION_EXECUTION_TYPE_PHYSICAL_DELIVERY\";\n    case OptionSettlementType.OPTION_EXECUTION_TYPE_CASH_SETTLEMENT:\n      return \"OPTION_EXECUTION_TYPE_CASH_SETTLEMENT\";\n    case OptionSettlementType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип идентификатора инструмента. [Подробнее об идентификации инструментов](https://russianinvestments.github.io/investAPI/faq_identification/). */\nexport enum InstrumentIdType {\n  /** INSTRUMENT_ID_UNSPECIFIED - Значение не определено. */\n  INSTRUMENT_ID_UNSPECIFIED = 0,\n  /** INSTRUMENT_ID_TYPE_FIGI - FIGI. */\n  INSTRUMENT_ID_TYPE_FIGI = 1,\n  /** INSTRUMENT_ID_TYPE_TICKER - Ticker. */\n  INSTRUMENT_ID_TYPE_TICKER = 2,\n  /** INSTRUMENT_ID_TYPE_UID - Уникальный идентификатор. */\n  INSTRUMENT_ID_TYPE_UID = 3,\n  /** INSTRUMENT_ID_TYPE_POSITION_UID - Идентификатор позиции. */\n  INSTRUMENT_ID_TYPE_POSITION_UID = 4,\n  UNRECOGNIZED = -1,\n}\n\nexport function instrumentIdTypeFromJSON(object: any): InstrumentIdType {\n  switch (object) {\n    case 0:\n    case \"INSTRUMENT_ID_UNSPECIFIED\":\n      return InstrumentIdType.INSTRUMENT_ID_UNSPECIFIED;\n    case 1:\n    case \"INSTRUMENT_ID_TYPE_FIGI\":\n      return InstrumentIdType.INSTRUMENT_ID_TYPE_FIGI;\n    case 2:\n    case \"INSTRUMENT_ID_TYPE_TICKER\":\n      return InstrumentIdType.INSTRUMENT_ID_TYPE_TICKER;\n    case 3:\n    case \"INSTRUMENT_ID_TYPE_UID\":\n      return InstrumentIdType.INSTRUMENT_ID_TYPE_UID;\n    case 4:\n    case \"INSTRUMENT_ID_TYPE_POSITION_UID\":\n      return InstrumentIdType.INSTRUMENT_ID_TYPE_POSITION_UID;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return InstrumentIdType.UNRECOGNIZED;\n  }\n}\n\nexport function instrumentIdTypeToJSON(object: InstrumentIdType): string {\n  switch (object) {\n    case InstrumentIdType.INSTRUMENT_ID_UNSPECIFIED:\n      return \"INSTRUMENT_ID_UNSPECIFIED\";\n    case InstrumentIdType.INSTRUMENT_ID_TYPE_FIGI:\n      return \"INSTRUMENT_ID_TYPE_FIGI\";\n    case InstrumentIdType.INSTRUMENT_ID_TYPE_TICKER:\n      return \"INSTRUMENT_ID_TYPE_TICKER\";\n    case InstrumentIdType.INSTRUMENT_ID_TYPE_UID:\n      return \"INSTRUMENT_ID_TYPE_UID\";\n    case InstrumentIdType.INSTRUMENT_ID_TYPE_POSITION_UID:\n      return \"INSTRUMENT_ID_TYPE_POSITION_UID\";\n    case InstrumentIdType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип акций. */\nexport enum ShareType {\n  /** SHARE_TYPE_UNSPECIFIED - Значение не определено. */\n  SHARE_TYPE_UNSPECIFIED = 0,\n  /** SHARE_TYPE_COMMON - Обыкновенная. */\n  SHARE_TYPE_COMMON = 1,\n  /** SHARE_TYPE_PREFERRED - Привилегированная. */\n  SHARE_TYPE_PREFERRED = 2,\n  /** SHARE_TYPE_ADR - Американские депозитарные расписки. */\n  SHARE_TYPE_ADR = 3,\n  /** SHARE_TYPE_GDR - Глобальные депозитарные расписки. */\n  SHARE_TYPE_GDR = 4,\n  /** SHARE_TYPE_MLP - Товарищество с ограниченной ответственностью. */\n  SHARE_TYPE_MLP = 5,\n  /** SHARE_TYPE_NY_REG_SHRS - Акции из реестра Нью-Йорка. */\n  SHARE_TYPE_NY_REG_SHRS = 6,\n  /** SHARE_TYPE_CLOSED_END_FUND - Закрытый инвестиционный фонд. */\n  SHARE_TYPE_CLOSED_END_FUND = 7,\n  /** SHARE_TYPE_REIT - Траст недвижимости. */\n  SHARE_TYPE_REIT = 8,\n  UNRECOGNIZED = -1,\n}\n\nexport function shareTypeFromJSON(object: any): ShareType {\n  switch (object) {\n    case 0:\n    case \"SHARE_TYPE_UNSPECIFIED\":\n      return ShareType.SHARE_TYPE_UNSPECIFIED;\n    case 1:\n    case \"SHARE_TYPE_COMMON\":\n      return ShareType.SHARE_TYPE_COMMON;\n    case 2:\n    case \"SHARE_TYPE_PREFERRED\":\n      return ShareType.SHARE_TYPE_PREFERRED;\n    case 3:\n    case \"SHARE_TYPE_ADR\":\n      return ShareType.SHARE_TYPE_ADR;\n    case 4:\n    case \"SHARE_TYPE_GDR\":\n      return ShareType.SHARE_TYPE_GDR;\n    case 5:\n    case \"SHARE_TYPE_MLP\":\n      return ShareType.SHARE_TYPE_MLP;\n    case 6:\n    case \"SHARE_TYPE_NY_REG_SHRS\":\n      return ShareType.SHARE_TYPE_NY_REG_SHRS;\n    case 7:\n    case \"SHARE_TYPE_CLOSED_END_FUND\":\n      return ShareType.SHARE_TYPE_CLOSED_END_FUND;\n    case 8:\n    case \"SHARE_TYPE_REIT\":\n      return ShareType.SHARE_TYPE_REIT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return ShareType.UNRECOGNIZED;\n  }\n}\n\nexport function shareTypeToJSON(object: ShareType): string {\n  switch (object) {\n    case ShareType.SHARE_TYPE_UNSPECIFIED:\n      return \"SHARE_TYPE_UNSPECIFIED\";\n    case ShareType.SHARE_TYPE_COMMON:\n      return \"SHARE_TYPE_COMMON\";\n    case ShareType.SHARE_TYPE_PREFERRED:\n      return \"SHARE_TYPE_PREFERRED\";\n    case ShareType.SHARE_TYPE_ADR:\n      return \"SHARE_TYPE_ADR\";\n    case ShareType.SHARE_TYPE_GDR:\n      return \"SHARE_TYPE_GDR\";\n    case ShareType.SHARE_TYPE_MLP:\n      return \"SHARE_TYPE_MLP\";\n    case ShareType.SHARE_TYPE_NY_REG_SHRS:\n      return \"SHARE_TYPE_NY_REG_SHRS\";\n    case ShareType.SHARE_TYPE_CLOSED_END_FUND:\n      return \"SHARE_TYPE_CLOSED_END_FUND\";\n    case ShareType.SHARE_TYPE_REIT:\n      return \"SHARE_TYPE_REIT\";\n    case ShareType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип актива. */\nexport enum AssetType {\n  /** ASSET_TYPE_UNSPECIFIED - Тип не определён. */\n  ASSET_TYPE_UNSPECIFIED = 0,\n  /** ASSET_TYPE_CURRENCY - Валюта. */\n  ASSET_TYPE_CURRENCY = 1,\n  /** ASSET_TYPE_COMMODITY - Товар. */\n  ASSET_TYPE_COMMODITY = 2,\n  /** ASSET_TYPE_INDEX - Индекс. */\n  ASSET_TYPE_INDEX = 3,\n  /** ASSET_TYPE_SECURITY - Ценная бумага. */\n  ASSET_TYPE_SECURITY = 4,\n  UNRECOGNIZED = -1,\n}\n\nexport function assetTypeFromJSON(object: any): AssetType {\n  switch (object) {\n    case 0:\n    case \"ASSET_TYPE_UNSPECIFIED\":\n      return AssetType.ASSET_TYPE_UNSPECIFIED;\n    case 1:\n    case \"ASSET_TYPE_CURRENCY\":\n      return AssetType.ASSET_TYPE_CURRENCY;\n    case 2:\n    case \"ASSET_TYPE_COMMODITY\":\n      return AssetType.ASSET_TYPE_COMMODITY;\n    case 3:\n    case \"ASSET_TYPE_INDEX\":\n      return AssetType.ASSET_TYPE_INDEX;\n    case 4:\n    case \"ASSET_TYPE_SECURITY\":\n      return AssetType.ASSET_TYPE_SECURITY;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AssetType.UNRECOGNIZED;\n  }\n}\n\nexport function assetTypeToJSON(object: AssetType): string {\n  switch (object) {\n    case AssetType.ASSET_TYPE_UNSPECIFIED:\n      return \"ASSET_TYPE_UNSPECIFIED\";\n    case AssetType.ASSET_TYPE_CURRENCY:\n      return \"ASSET_TYPE_CURRENCY\";\n    case AssetType.ASSET_TYPE_COMMODITY:\n      return \"ASSET_TYPE_COMMODITY\";\n    case AssetType.ASSET_TYPE_INDEX:\n      return \"ASSET_TYPE_INDEX\";\n    case AssetType.ASSET_TYPE_SECURITY:\n      return \"ASSET_TYPE_SECURITY\";\n    case AssetType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип структурной ноты. */\nexport enum StructuredProductType {\n  /** SP_TYPE_UNSPECIFIED - Тип не определён. */\n  SP_TYPE_UNSPECIFIED = 0,\n  /** SP_TYPE_DELIVERABLE - Поставочный. */\n  SP_TYPE_DELIVERABLE = 1,\n  /** SP_TYPE_NON_DELIVERABLE - Беспоставочный. */\n  SP_TYPE_NON_DELIVERABLE = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function structuredProductTypeFromJSON(object: any): StructuredProductType {\n  switch (object) {\n    case 0:\n    case \"SP_TYPE_UNSPECIFIED\":\n      return StructuredProductType.SP_TYPE_UNSPECIFIED;\n    case 1:\n    case \"SP_TYPE_DELIVERABLE\":\n      return StructuredProductType.SP_TYPE_DELIVERABLE;\n    case 2:\n    case \"SP_TYPE_NON_DELIVERABLE\":\n      return StructuredProductType.SP_TYPE_NON_DELIVERABLE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return StructuredProductType.UNRECOGNIZED;\n  }\n}\n\nexport function structuredProductTypeToJSON(object: StructuredProductType): string {\n  switch (object) {\n    case StructuredProductType.SP_TYPE_UNSPECIFIED:\n      return \"SP_TYPE_UNSPECIFIED\";\n    case StructuredProductType.SP_TYPE_DELIVERABLE:\n      return \"SP_TYPE_DELIVERABLE\";\n    case StructuredProductType.SP_TYPE_NON_DELIVERABLE:\n      return \"SP_TYPE_NON_DELIVERABLE\";\n    case StructuredProductType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип действия со списком избранных инструментов. */\nexport enum EditFavoritesActionType {\n  /** EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED - Тип не определён. */\n  EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED = 0,\n  /** EDIT_FAVORITES_ACTION_TYPE_ADD - Добавить в список. */\n  EDIT_FAVORITES_ACTION_TYPE_ADD = 1,\n  /** EDIT_FAVORITES_ACTION_TYPE_DEL - Удалить из списка. */\n  EDIT_FAVORITES_ACTION_TYPE_DEL = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function editFavoritesActionTypeFromJSON(object: any): EditFavoritesActionType {\n  switch (object) {\n    case 0:\n    case \"EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED\":\n      return EditFavoritesActionType.EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED;\n    case 1:\n    case \"EDIT_FAVORITES_ACTION_TYPE_ADD\":\n      return EditFavoritesActionType.EDIT_FAVORITES_ACTION_TYPE_ADD;\n    case 2:\n    case \"EDIT_FAVORITES_ACTION_TYPE_DEL\":\n      return EditFavoritesActionType.EDIT_FAVORITES_ACTION_TYPE_DEL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return EditFavoritesActionType.UNRECOGNIZED;\n  }\n}\n\nexport function editFavoritesActionTypeToJSON(object: EditFavoritesActionType): string {\n  switch (object) {\n    case EditFavoritesActionType.EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED:\n      return \"EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED\";\n    case EditFavoritesActionType.EDIT_FAVORITES_ACTION_TYPE_ADD:\n      return \"EDIT_FAVORITES_ACTION_TYPE_ADD\";\n    case EditFavoritesActionType.EDIT_FAVORITES_ACTION_TYPE_DEL:\n      return \"EDIT_FAVORITES_ACTION_TYPE_DEL\";\n    case EditFavoritesActionType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Реальная площадка исполнения расчётов. */\nexport enum RealExchange {\n  /** REAL_EXCHANGE_UNSPECIFIED - Тип не определён. */\n  REAL_EXCHANGE_UNSPECIFIED = 0,\n  /** REAL_EXCHANGE_MOEX - Московская биржа. */\n  REAL_EXCHANGE_MOEX = 1,\n  /** REAL_EXCHANGE_RTS - Санкт-Петербургская биржа. */\n  REAL_EXCHANGE_RTS = 2,\n  /** REAL_EXCHANGE_OTC - Внебиржевой инструмент. */\n  REAL_EXCHANGE_OTC = 3,\n  /** REAL_EXCHANGE_DEALER - Инструмент, торгуемый на площадке брокера. */\n  REAL_EXCHANGE_DEALER = 4,\n  UNRECOGNIZED = -1,\n}\n\nexport function realExchangeFromJSON(object: any): RealExchange {\n  switch (object) {\n    case 0:\n    case \"REAL_EXCHANGE_UNSPECIFIED\":\n      return RealExchange.REAL_EXCHANGE_UNSPECIFIED;\n    case 1:\n    case \"REAL_EXCHANGE_MOEX\":\n      return RealExchange.REAL_EXCHANGE_MOEX;\n    case 2:\n    case \"REAL_EXCHANGE_RTS\":\n      return RealExchange.REAL_EXCHANGE_RTS;\n    case 3:\n    case \"REAL_EXCHANGE_OTC\":\n      return RealExchange.REAL_EXCHANGE_OTC;\n    case 4:\n    case \"REAL_EXCHANGE_DEALER\":\n      return RealExchange.REAL_EXCHANGE_DEALER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return RealExchange.UNRECOGNIZED;\n  }\n}\n\nexport function realExchangeToJSON(object: RealExchange): string {\n  switch (object) {\n    case RealExchange.REAL_EXCHANGE_UNSPECIFIED:\n      return \"REAL_EXCHANGE_UNSPECIFIED\";\n    case RealExchange.REAL_EXCHANGE_MOEX:\n      return \"REAL_EXCHANGE_MOEX\";\n    case RealExchange.REAL_EXCHANGE_RTS:\n      return \"REAL_EXCHANGE_RTS\";\n    case RealExchange.REAL_EXCHANGE_OTC:\n      return \"REAL_EXCHANGE_OTC\";\n    case RealExchange.REAL_EXCHANGE_DEALER:\n      return \"REAL_EXCHANGE_DEALER\";\n    case RealExchange.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport enum Recommendation {\n  /** RECOMMENDATION_UNSPECIFIED - Не определено. */\n  RECOMMENDATION_UNSPECIFIED = 0,\n  /** RECOMMENDATION_BUY - Покупать. */\n  RECOMMENDATION_BUY = 1,\n  /** RECOMMENDATION_HOLD - Держать. */\n  RECOMMENDATION_HOLD = 2,\n  /** RECOMMENDATION_SELL - Продавать. */\n  RECOMMENDATION_SELL = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function recommendationFromJSON(object: any): Recommendation {\n  switch (object) {\n    case 0:\n    case \"RECOMMENDATION_UNSPECIFIED\":\n      return Recommendation.RECOMMENDATION_UNSPECIFIED;\n    case 1:\n    case \"RECOMMENDATION_BUY\":\n      return Recommendation.RECOMMENDATION_BUY;\n    case 2:\n    case \"RECOMMENDATION_HOLD\":\n      return Recommendation.RECOMMENDATION_HOLD;\n    case 3:\n    case \"RECOMMENDATION_SELL\":\n      return Recommendation.RECOMMENDATION_SELL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Recommendation.UNRECOGNIZED;\n  }\n}\n\nexport function recommendationToJSON(object: Recommendation): string {\n  switch (object) {\n    case Recommendation.RECOMMENDATION_UNSPECIFIED:\n      return \"RECOMMENDATION_UNSPECIFIED\";\n    case Recommendation.RECOMMENDATION_BUY:\n      return \"RECOMMENDATION_BUY\";\n    case Recommendation.RECOMMENDATION_HOLD:\n      return \"RECOMMENDATION_HOLD\";\n    case Recommendation.RECOMMENDATION_SELL:\n      return \"RECOMMENDATION_SELL\";\n    case Recommendation.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Уровень риска облигации. */\nexport enum RiskLevel {\n  /** RISK_LEVEL_UNSPECIFIED - Не указан. */\n  RISK_LEVEL_UNSPECIFIED = 0,\n  /** RISK_LEVEL_LOW - Низкий уровень риска. */\n  RISK_LEVEL_LOW = 1,\n  /** RISK_LEVEL_MODERATE - Средний уровень риска. */\n  RISK_LEVEL_MODERATE = 2,\n  /** RISK_LEVEL_HIGH - Высокий уровень риска. */\n  RISK_LEVEL_HIGH = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function riskLevelFromJSON(object: any): RiskLevel {\n  switch (object) {\n    case 0:\n    case \"RISK_LEVEL_UNSPECIFIED\":\n      return RiskLevel.RISK_LEVEL_UNSPECIFIED;\n    case 1:\n    case \"RISK_LEVEL_LOW\":\n      return RiskLevel.RISK_LEVEL_LOW;\n    case 2:\n    case \"RISK_LEVEL_MODERATE\":\n      return RiskLevel.RISK_LEVEL_MODERATE;\n    case 3:\n    case \"RISK_LEVEL_HIGH\":\n      return RiskLevel.RISK_LEVEL_HIGH;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return RiskLevel.UNRECOGNIZED;\n  }\n}\n\nexport function riskLevelToJSON(object: RiskLevel): string {\n  switch (object) {\n    case RiskLevel.RISK_LEVEL_UNSPECIFIED:\n      return \"RISK_LEVEL_UNSPECIFIED\";\n    case RiskLevel.RISK_LEVEL_LOW:\n      return \"RISK_LEVEL_LOW\";\n    case RiskLevel.RISK_LEVEL_MODERATE:\n      return \"RISK_LEVEL_MODERATE\";\n    case RiskLevel.RISK_LEVEL_HIGH:\n      return \"RISK_LEVEL_HIGH\";\n    case RiskLevel.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport enum BondType {\n  /** BOND_TYPE_UNSPECIFIED - Тип облигации не определён. */\n  BOND_TYPE_UNSPECIFIED = 0,\n  /** BOND_TYPE_REPLACED - Замещающая облигация. */\n  BOND_TYPE_REPLACED = 1,\n  UNRECOGNIZED = -1,\n}\n\nexport function bondTypeFromJSON(object: any): BondType {\n  switch (object) {\n    case 0:\n    case \"BOND_TYPE_UNSPECIFIED\":\n      return BondType.BOND_TYPE_UNSPECIFIED;\n    case 1:\n    case \"BOND_TYPE_REPLACED\":\n      return BondType.BOND_TYPE_REPLACED;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return BondType.UNRECOGNIZED;\n  }\n}\n\nexport function bondTypeToJSON(object: BondType): string {\n  switch (object) {\n    case BondType.BOND_TYPE_UNSPECIFIED:\n      return \"BOND_TYPE_UNSPECIFIED\";\n    case BondType.BOND_TYPE_REPLACED:\n      return \"BOND_TYPE_REPLACED\";\n    case BondType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Площадка торговли. */\nexport enum InstrumentExchangeType {\n  /** INSTRUMENT_EXCHANGE_UNSPECIFIED - Площадка торговли не определена. */\n  INSTRUMENT_EXCHANGE_UNSPECIFIED = 0,\n  /** INSTRUMENT_EXCHANGE_DEALER - Бумага, торгуемая у дилера. */\n  INSTRUMENT_EXCHANGE_DEALER = 1,\n  UNRECOGNIZED = -1,\n}\n\nexport function instrumentExchangeTypeFromJSON(object: any): InstrumentExchangeType {\n  switch (object) {\n    case 0:\n    case \"INSTRUMENT_EXCHANGE_UNSPECIFIED\":\n      return InstrumentExchangeType.INSTRUMENT_EXCHANGE_UNSPECIFIED;\n    case 1:\n    case \"INSTRUMENT_EXCHANGE_DEALER\":\n      return InstrumentExchangeType.INSTRUMENT_EXCHANGE_DEALER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return InstrumentExchangeType.UNRECOGNIZED;\n  }\n}\n\nexport function instrumentExchangeTypeToJSON(object: InstrumentExchangeType): string {\n  switch (object) {\n    case InstrumentExchangeType.INSTRUMENT_EXCHANGE_UNSPECIFIED:\n      return \"INSTRUMENT_EXCHANGE_UNSPECIFIED\";\n    case InstrumentExchangeType.INSTRUMENT_EXCHANGE_DEALER:\n      return \"INSTRUMENT_EXCHANGE_DEALER\";\n    case InstrumentExchangeType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Запрос расписания торгов. */\nexport interface TradingSchedulesRequest {\n  /** Наименование биржи или расчетного календаря. </br>Если не передаётся, возвращается информация по всем доступным торговым площадкам. */\n  exchange?:\n    | string\n    | undefined;\n  /** Начало периода по UTC. */\n  from?:\n    | Date\n    | undefined;\n  /** Окончание периода по UTC. */\n  to?: Date | undefined;\n}\n\n/** Список торговых площадок. */\nexport interface TradingSchedulesResponse {\n  /** Список торговых площадок и режимов торгов. */\n  exchanges: TradingSchedule[];\n}\n\n/** Данные по торговой площадке. */\nexport interface TradingSchedule {\n  /** Наименование торговой площадки. */\n  exchange: string;\n  /** Массив с торговыми и неторговыми днями. */\n  days: TradingDay[];\n}\n\n/** Информация о времени торгов. */\nexport interface TradingDay {\n  /** Дата. */\n  date:\n    | Date\n    | undefined;\n  /** Признак торгового дня на бирже. */\n  isTradingDay: boolean;\n  /** Время начала торгов по UTC. */\n  startTime:\n    | Date\n    | undefined;\n  /** Время окончания торгов по UTC. */\n  endTime:\n    | Date\n    | undefined;\n  /** Время начала аукциона открытия по UTC. */\n  openingAuctionStartTime:\n    | Date\n    | undefined;\n  /** Время окончания аукциона закрытия по UTC. */\n  closingAuctionEndTime:\n    | Date\n    | undefined;\n  /** Время начала аукциона открытия вечерней сессии по UTC. */\n  eveningOpeningAuctionStartTime:\n    | Date\n    | undefined;\n  /** Время начала вечерней сессии по UTC. */\n  eveningStartTime:\n    | Date\n    | undefined;\n  /** Время окончания вечерней сессии по UTC. */\n  eveningEndTime:\n    | Date\n    | undefined;\n  /** Время начала основного клиринга по UTC. */\n  clearingStartTime:\n    | Date\n    | undefined;\n  /** Время окончания основного клиринга по UTC. */\n  clearingEndTime:\n    | Date\n    | undefined;\n  /** Время начала премаркета по UTC. */\n  premarketStartTime:\n    | Date\n    | undefined;\n  /** Время окончания премаркета по UTC. */\n  premarketEndTime:\n    | Date\n    | undefined;\n  /** Время начала аукциона закрытия по UTC. */\n  closingAuctionStartTime:\n    | Date\n    | undefined;\n  /** Время окончания аукциона открытия по UTC. */\n  openingAuctionEndTime:\n    | Date\n    | undefined;\n  /** Торговые интервалы. */\n  intervals: TradingInterval[];\n}\n\n/** Запрос получения инструмента по идентификатору. */\nexport interface InstrumentRequest {\n  /** Тип идентификатора инструмента. Возможные значения — `figi`, `ticker`. [Подробнее об идентификации инструментов](https://russianinvestments.github.io/investAPI/faq_identification/). */\n  idType: InstrumentIdType;\n  /** Идентификатор `class_code`. Обязательный, если `id_type = ticker`. */\n  classCode?:\n    | string\n    | undefined;\n  /** Идентификатор запрашиваемого инструмента. */\n  id: string;\n}\n\n/** Запрос получения инструментов. */\nexport interface InstrumentsRequest {\n  /** Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus). */\n  instrumentStatus?:\n    | InstrumentStatus\n    | undefined;\n  /** Тип площадки торговли. [Возможные значения](#instrumentexchangetype). */\n  instrumentExchange?: InstrumentExchangeType | undefined;\n}\n\n/** Параметры фильтрации опционов. */\nexport interface FilterOptionsRequest {\n  /** Идентификатор базового актива опциона.  Обязательный параметр. */\n  basicAssetUid?:\n    | string\n    | undefined;\n  /** Идентификатор позиции базового актива опциона. */\n  basicAssetPositionUid?: string | undefined;\n}\n\n/** Информация об облигации. */\nexport interface BondResponse {\n  /** Информация об облигации. */\n  instrument: Bond | undefined;\n}\n\n/** Список облигаций. */\nexport interface BondsResponse {\n  /** Массив облигаций. */\n  instruments: Bond[];\n}\n\n/** Запрос купонов по облигации. */\nexport interface GetBondCouponsRequest {\n  /**\n   * FIGI-идентификатор инструмента.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Начало запрашиваемого периода по UTC. Фильтрация по `coupon_date` — дата выплаты купона. */\n  from?:\n    | Date\n    | undefined;\n  /** Окончание запрашиваемого периода по UTC. Фильтрация по `coupon_date` — дата выплаты купона. */\n  to?:\n    | Date\n    | undefined;\n  /** Идентификатор инструмента — `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Купоны по облигации. */\nexport interface GetBondCouponsResponse {\n  events: Coupon[];\n}\n\n/** События по облигации. */\nexport interface GetBondEventsRequest {\n  /** Начало запрашиваемого периода по UTC. */\n  from?:\n    | Date\n    | undefined;\n  /** Окончание запрашиваемого периода по UTC. */\n  to?:\n    | Date\n    | undefined;\n  /** Идентификатор инструмента — `figi` или `instrument_uid`. */\n  instrumentId: string;\n  /** Тип события */\n  type: GetBondEventsRequest_EventType;\n}\n\nexport enum GetBondEventsRequest_EventType {\n  /** EVENT_TYPE_UNSPECIFIED - Неопределённое значение. */\n  EVENT_TYPE_UNSPECIFIED = 0,\n  /** EVENT_TYPE_CPN - Купон. */\n  EVENT_TYPE_CPN = 1,\n  /** EVENT_TYPE_CALL - Опцион (оферта). */\n  EVENT_TYPE_CALL = 2,\n  /** EVENT_TYPE_MTY - Погашение. */\n  EVENT_TYPE_MTY = 3,\n  /** EVENT_TYPE_CONV - Конвертация. */\n  EVENT_TYPE_CONV = 4,\n  UNRECOGNIZED = -1,\n}\n\nexport function getBondEventsRequest_EventTypeFromJSON(object: any): GetBondEventsRequest_EventType {\n  switch (object) {\n    case 0:\n    case \"EVENT_TYPE_UNSPECIFIED\":\n      return GetBondEventsRequest_EventType.EVENT_TYPE_UNSPECIFIED;\n    case 1:\n    case \"EVENT_TYPE_CPN\":\n      return GetBondEventsRequest_EventType.EVENT_TYPE_CPN;\n    case 2:\n    case \"EVENT_TYPE_CALL\":\n      return GetBondEventsRequest_EventType.EVENT_TYPE_CALL;\n    case 3:\n    case \"EVENT_TYPE_MTY\":\n      return GetBondEventsRequest_EventType.EVENT_TYPE_MTY;\n    case 4:\n    case \"EVENT_TYPE_CONV\":\n      return GetBondEventsRequest_EventType.EVENT_TYPE_CONV;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GetBondEventsRequest_EventType.UNRECOGNIZED;\n  }\n}\n\nexport function getBondEventsRequest_EventTypeToJSON(object: GetBondEventsRequest_EventType): string {\n  switch (object) {\n    case GetBondEventsRequest_EventType.EVENT_TYPE_UNSPECIFIED:\n      return \"EVENT_TYPE_UNSPECIFIED\";\n    case GetBondEventsRequest_EventType.EVENT_TYPE_CPN:\n      return \"EVENT_TYPE_CPN\";\n    case GetBondEventsRequest_EventType.EVENT_TYPE_CALL:\n      return \"EVENT_TYPE_CALL\";\n    case GetBondEventsRequest_EventType.EVENT_TYPE_MTY:\n      return \"EVENT_TYPE_MTY\";\n    case GetBondEventsRequest_EventType.EVENT_TYPE_CONV:\n      return \"EVENT_TYPE_CONV\";\n    case GetBondEventsRequest_EventType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Объект передачи информации о событии облигации. */\nexport interface GetBondEventsResponse {\n  events: GetBondEventsResponse_BondEvent[];\n}\n\nexport interface GetBondEventsResponse_BondEvent {\n  /** Идентификатор инструмента. */\n  instrumentId: string;\n  /** Номер события для данного типа события. */\n  eventNumber: number;\n  /** Дата события. */\n  eventDate:\n    | Date\n    | undefined;\n  /** Тип события. */\n  eventType: GetBondEventsRequest_EventType;\n  /** Полное количество бумаг, задействованных в событии. */\n  eventTotalVol:\n    | Quotation\n    | undefined;\n  /** Дата фиксации владельцев для участия в событии. */\n  fixDate:\n    | Date\n    | undefined;\n  /** Дата определения даты или факта события. */\n  rateDate:\n    | Date\n    | undefined;\n  /** Дата дефолта, если применимо. */\n  defaultDate:\n    | Date\n    | undefined;\n  /** Дата реального исполнения обязательства. */\n  realPayDate:\n    | Date\n    | undefined;\n  /** Дата выплаты. */\n  payDate:\n    | Date\n    | undefined;\n  /** Выплата на одну облигацию. */\n  payOneBond:\n    | MoneyValue\n    | undefined;\n  /** Выплаты на все бумаги, задействованные в событии. */\n  moneyFlowVal:\n    | MoneyValue\n    | undefined;\n  /** Признак исполнения. */\n  execution: string;\n  /** Тип операции. */\n  operationType: string;\n  /** Стоимость операции — ставка купона, доля номинала, цена выкупа или коэффициент конвертации. */\n  value:\n    | Quotation\n    | undefined;\n  /** Примечание. */\n  note: string;\n  /** ID выпуска бумаг, в который произведена конвертация (для конвертаций). */\n  convertToFinToolId: string;\n  /** Начало купонного периода. */\n  couponStartDate:\n    | Date\n    | undefined;\n  /** Окончание купонного периода. */\n  couponEndDate:\n    | Date\n    | undefined;\n  /** Купонный период. */\n  couponPeriod: number;\n  /** Ставка купона, процентов годовых. */\n  couponInterestRate: Quotation | undefined;\n}\n\n/** Объект передачи информации о купоне облигации. */\nexport interface Coupon {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Дата выплаты купона. */\n  couponDate:\n    | Date\n    | undefined;\n  /** Номер купона. */\n  couponNumber: number;\n  /** Дата фиксации реестра для выплаты купона — опционально. */\n  fixDate:\n    | Date\n    | undefined;\n  /** Выплата на одну облигацию. */\n  payOneBond:\n    | MoneyValue\n    | undefined;\n  /** Тип купона. */\n  couponType: CouponType;\n  /** Начало купонного периода. */\n  couponStartDate:\n    | Date\n    | undefined;\n  /** Окончание купонного периода. */\n  couponEndDate:\n    | Date\n    | undefined;\n  /** Купонный период в днях. */\n  couponPeriod: number;\n}\n\n/** Данные по валюте. */\nexport interface CurrencyResponse {\n  /** Информация о валюте. */\n  instrument: Currency | undefined;\n}\n\n/** Данные по валютам. */\nexport interface CurrenciesResponse {\n  /** Массив валют. */\n  instruments: Currency[];\n}\n\n/** Данные по фонду. */\nexport interface EtfResponse {\n  /** Информация о фонде. */\n  instrument: Etf | undefined;\n}\n\n/** Данные по фондам. */\nexport interface EtfsResponse {\n  /** Массив фондов. */\n  instruments: Etf[];\n}\n\n/** Данные по фьючерсу. */\nexport interface FutureResponse {\n  /** Информация о фьючерсу. */\n  instrument: Future | undefined;\n}\n\n/** Данные по фьючерсам. */\nexport interface FuturesResponse {\n  /** Массив фьючерсов. */\n  instruments: Future[];\n}\n\n/** Данные по опциону. */\nexport interface OptionResponse {\n  /** Информация по опциону. */\n  instrument: Option | undefined;\n}\n\n/** Данные по опционам. */\nexport interface OptionsResponse {\n  /** Массив данных по опциону. */\n  instruments: Option[];\n}\n\n/** Опцион. */\nexport interface Option {\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Уникальный идентификатор позиции. */\n  positionUid: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код. */\n  classCode: string;\n  /** Уникальный идентификатор позиции основного инструмента. */\n  basicAssetPositionUid: string;\n  /** Текущий режим торгов инструмента. */\n  tradingStatus: SecurityTradingStatus;\n  /** Реальная площадка исполнения расчётов (биржа). */\n  realExchange: RealExchange;\n  /** Направление опциона. */\n  direction: OptionDirection;\n  /** Тип расчётов по опциону. */\n  paymentType: OptionPaymentType;\n  /** Стиль опциона. */\n  style: OptionStyle;\n  /** Способ исполнения опциона. */\n  settlementType: OptionSettlementType;\n  /** Название инструмента. */\n  name: string;\n  /** Валюта. */\n  currency: string;\n  /** Валюта, в которой оценивается контракт. */\n  settlementCurrency: string;\n  /** Тип актива. */\n  assetType: string;\n  /** Основной актив. */\n  basicAsset: string;\n  /** Tорговая площадка (секция биржи). */\n  exchange: string;\n  /** Код страны рисков. */\n  countryOfRisk: string;\n  /** Наименование страны рисков. */\n  countryOfRiskName: string;\n  /** Сектор экономики. */\n  sector: string;\n  /** Информация о бренде. */\n  brand:\n    | BrandData\n    | undefined;\n  /** Количество бумаг в лоте. */\n  lot: number;\n  /** Размер основного актива. */\n  basicAssetSize:\n    | Quotation\n    | undefined;\n  /** Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  klong:\n    | Quotation\n    | undefined;\n  /** Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  kshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlong:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlongMin:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshortMin:\n    | Quotation\n    | undefined;\n  /** Минимальный шаг цены. */\n  minPriceIncrement:\n    | Quotation\n    | undefined;\n  /** Цена страйка. */\n  strikePrice:\n    | MoneyValue\n    | undefined;\n  /** Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dlongClient:\n    | Quotation\n    | undefined;\n  /** Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dshortClient:\n    | Quotation\n    | undefined;\n  /** Дата истечения срока в формате UTC. */\n  expirationDate:\n    | Date\n    | undefined;\n  /** Дата начала обращения контракта в формате UTC. */\n  firstTradeDate:\n    | Date\n    | undefined;\n  /** Дата исполнения в формате UTC. */\n  lastTradeDate:\n    | Date\n    | undefined;\n  /** Дата первой минутной свечи в формате UTC. */\n  first1minCandleDate:\n    | Date\n    | undefined;\n  /** Дата первой дневной свечи в формате UTC. */\n  first1dayCandleDate:\n    | Date\n    | undefined;\n  /** Признак доступности для операций шорт. */\n  shortEnabledFlag: boolean;\n  /** Возможность покупки или продажи на ИИС. */\n  forIisFlag: boolean;\n  /** Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке. */\n  otcFlag: boolean;\n  /** Признак доступности для покупки. */\n  buyAvailableFlag: boolean;\n  /** Признак доступности для продажи. */\n  sellAvailableFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов. */\n  forQualInvestorFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом по выходным. */\n  weekendFlag: boolean;\n  /** Флаг заблокированного ТКС. */\n  blockedTcaFlag: boolean;\n  /** Возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n}\n\n/** Данные по акции. */\nexport interface ShareResponse {\n  /** Информация об акции. */\n  instrument: Share | undefined;\n}\n\n/** Данные по акциям. */\nexport interface SharesResponse {\n  /** Массив акций. */\n  instruments: Share[];\n}\n\n/** Объект передачи информации об облигации. */\nexport interface Bond {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код (секция торгов). */\n  classCode: string;\n  /** ISIN-идентификатор инструмента. */\n  isin: string;\n  /** Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot). */\n  lot: number;\n  /** Валюта расчётов. */\n  currency: string;\n  /** Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  klong:\n    | Quotation\n    | undefined;\n  /** Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  kshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlong:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlongMin:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshortMin:\n    | Quotation\n    | undefined;\n  /** Признак доступности для операций в шорт. */\n  shortEnabledFlag: boolean;\n  /** Название инструмента. */\n  name: string;\n  /** Tорговая площадка (секция биржи). */\n  exchange: string;\n  /** Количество выплат по купонам в год. */\n  couponQuantityPerYear: number;\n  /** Дата погашения облигации по UTC. */\n  maturityDate:\n    | Date\n    | undefined;\n  /** Номинал облигации. */\n  nominal:\n    | MoneyValue\n    | undefined;\n  /** Первоначальный номинал облигации. */\n  initialNominal:\n    | MoneyValue\n    | undefined;\n  /** Дата выпуска облигации по UTC. */\n  stateRegDate:\n    | Date\n    | undefined;\n  /** Дата размещения по UTC. */\n  placementDate:\n    | Date\n    | undefined;\n  /** Цена размещения. */\n  placementPrice:\n    | MoneyValue\n    | undefined;\n  /** Значение НКД (накопленного купонного дохода) на дату. */\n  aciValue:\n    | MoneyValue\n    | undefined;\n  /** Код страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRisk: string;\n  /** Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRiskName: string;\n  /** Сектор экономики. */\n  sector: string;\n  /** Форма выпуска. Возможные значения: </br>**documentary** — документарная; </br>**non_documentary** — бездокументарная. */\n  issueKind: string;\n  /** Размер выпуска. */\n  issueSize: number;\n  /** Плановый размер выпуска. */\n  issueSizePlan: number;\n  /** Текущий режим торгов инструмента. */\n  tradingStatus: SecurityTradingStatus;\n  /** Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке. */\n  otcFlag: boolean;\n  /** Признак доступности для покупки. */\n  buyAvailableFlag: boolean;\n  /** Признак доступности для продажи. */\n  sellAvailableFlag: boolean;\n  /** Признак облигации с плавающим купоном. */\n  floatingCouponFlag: boolean;\n  /** Признак бессрочной облигации. */\n  perpetualFlag: boolean;\n  /** Признак облигации с амортизацией долга. */\n  amortizationFlag: boolean;\n  /** Шаг цены. */\n  minPriceIncrement:\n    | Quotation\n    | undefined;\n  /** Параметр указывает на возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Реальная площадка исполнения расчётов. (биржа) */\n  realExchange: RealExchange;\n  /** Уникальный идентификатор позиции инструмента. */\n  positionUid: string;\n  /** Уникальный идентификатор актива. */\n  assetUid: string;\n  /** Признак доступности для ИИС. */\n  forIisFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов. */\n  forQualInvestorFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом по выходным. */\n  weekendFlag: boolean;\n  /** Флаг заблокированного ТКС. */\n  blockedTcaFlag: boolean;\n  /** Признак субординированной облигации. */\n  subordinatedFlag: boolean;\n  /** Флаг достаточной ликвидности. */\n  liquidityFlag: boolean;\n  /** Дата первой минутной свечи. */\n  first1minCandleDate:\n    | Date\n    | undefined;\n  /** Дата первой дневной свечи. */\n  first1dayCandleDate:\n    | Date\n    | undefined;\n  /** Уровень риска. */\n  riskLevel: RiskLevel;\n  /** Информация о бренде. */\n  brand:\n    | BrandData\n    | undefined;\n  /** Тип облигации. */\n  bondType: BondType;\n  /** Дата погашения облигации. */\n  callDate:\n    | Date\n    | undefined;\n  /** Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dlongClient:\n    | Quotation\n    | undefined;\n  /** Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dshortClient: Quotation | undefined;\n}\n\n/** Объект передачи информации о валюте. */\nexport interface Currency {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код (секция торгов). */\n  classCode: string;\n  /** ISIN-идентификатор инструмента. */\n  isin: string;\n  /** Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot). */\n  lot: number;\n  /** Валюта расчётов. */\n  currency: string;\n  /** Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  klong:\n    | Quotation\n    | undefined;\n  /** Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  kshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlong:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlongMin:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshortMin:\n    | Quotation\n    | undefined;\n  /** Признак доступности для операций в шорт. */\n  shortEnabledFlag: boolean;\n  /** Название инструмента. */\n  name: string;\n  /** Tорговая площадка (секция биржи). */\n  exchange: string;\n  /** Номинал. */\n  nominal:\n    | MoneyValue\n    | undefined;\n  /** Код страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRisk: string;\n  /** Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRiskName: string;\n  /** Текущий режим торгов инструмента. */\n  tradingStatus: SecurityTradingStatus;\n  /** Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке. */\n  otcFlag: boolean;\n  /** Признак доступности для покупки. */\n  buyAvailableFlag: boolean;\n  /** Признак доступности для продажи. */\n  sellAvailableFlag: boolean;\n  /** Строковый ISO-код валюты. */\n  isoCurrencyName: string;\n  /** Шаг цены. */\n  minPriceIncrement:\n    | Quotation\n    | undefined;\n  /** Параметр указывает на возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Реальная площадка исполнения расчётов (биржа). */\n  realExchange: RealExchange;\n  /** Уникальный идентификатор позиции инструмента. */\n  positionUid: string;\n  /** Признак доступности для ИИС. */\n  forIisFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов. */\n  forQualInvestorFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом по выходным. */\n  weekendFlag: boolean;\n  /** Флаг заблокированного ТКС. */\n  blockedTcaFlag: boolean;\n  /** Дата первой минутной свечи. */\n  first1minCandleDate:\n    | Date\n    | undefined;\n  /** Дата первой дневной свечи. */\n  first1dayCandleDate:\n    | Date\n    | undefined;\n  /** Информация о бренде. */\n  brand:\n    | BrandData\n    | undefined;\n  /** Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dlongClient:\n    | Quotation\n    | undefined;\n  /** Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dshortClient: Quotation | undefined;\n}\n\n/** Объект передачи информации об инвестиционном фонде. */\nexport interface Etf {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код (секция торгов). */\n  classCode: string;\n  /** ISIN-идентификатор инструмента. */\n  isin: string;\n  /** Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot). */\n  lot: number;\n  /** Валюта расчётов. */\n  currency: string;\n  /** Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  klong:\n    | Quotation\n    | undefined;\n  /** Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  kshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlong:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlongMin:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshortMin:\n    | Quotation\n    | undefined;\n  /** Признак доступности для операций в шорт. */\n  shortEnabledFlag: boolean;\n  /** Название инструмента. */\n  name: string;\n  /** Tорговая площадка (секция биржи). */\n  exchange: string;\n  /** Размер фиксированной комиссии фонда. */\n  fixedCommission:\n    | Quotation\n    | undefined;\n  /** Возможные значения: </br>**equity** — акции;</br>**fixed_income** — облигации;</br>**mixed_allocation** — смешанный;</br>**money_market** — денежный рынок;</br>**real_estate** — недвижимость;</br>**commodity** — товары;</br>**specialty** — специальный;</br>**private_equity** — private equity;</br>**alternative_investment** — альтернативные инвестиции. */\n  focusType: string;\n  /** Дата выпуска по UTC. */\n  releasedDate:\n    | Date\n    | undefined;\n  /** Количество паев фонда в обращении. */\n  numShares:\n    | Quotation\n    | undefined;\n  /** Код страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRisk: string;\n  /** Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRiskName: string;\n  /** Сектор экономики. */\n  sector: string;\n  /** Частота ребалансировки. */\n  rebalancingFreq: string;\n  /** Текущий режим торгов инструмента. */\n  tradingStatus: SecurityTradingStatus;\n  /** Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке. */\n  otcFlag: boolean;\n  /** Признак доступности для покупки. */\n  buyAvailableFlag: boolean;\n  /** Признак доступности для продажи. */\n  sellAvailableFlag: boolean;\n  /** Шаг цены. */\n  minPriceIncrement:\n    | Quotation\n    | undefined;\n  /** Параметр указывает на возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Реальная площадка исполнения расчётов (биржа). */\n  realExchange: RealExchange;\n  /** Уникальный идентификатор позиции инструмента. */\n  positionUid: string;\n  /** Уникальный идентификатор актива. */\n  assetUid: string;\n  /** Тип площадки торговли. */\n  instrumentExchange: InstrumentExchangeType;\n  /** Признак доступности для ИИС. */\n  forIisFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов. */\n  forQualInvestorFlag: boolean;\n  /** ФлагФлаг, отображающий доступность торговли инструментом по выходным. */\n  weekendFlag: boolean;\n  /** Флаг заблокированного ТКС. */\n  blockedTcaFlag: boolean;\n  /** Флаг достаточной ликвидности. */\n  liquidityFlag: boolean;\n  /** Дата первой минутной свечи. */\n  first1minCandleDate:\n    | Date\n    | undefined;\n  /** Дата первой дневной свечи. */\n  first1dayCandleDate:\n    | Date\n    | undefined;\n  /** Информация о бренде. */\n  brand:\n    | BrandData\n    | undefined;\n  /** Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dlongClient:\n    | Quotation\n    | undefined;\n  /** Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dshortClient: Quotation | undefined;\n}\n\n/** Объект передачи информации о фьючерсе. */\nexport interface Future {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код (секция торгов). */\n  classCode: string;\n  /** Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot). */\n  lot: number;\n  /** Валюта расчётов. */\n  currency: string;\n  /** Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  klong:\n    | Quotation\n    | undefined;\n  /** Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  kshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlong:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlongMin:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshortMin:\n    | Quotation\n    | undefined;\n  /** Признак доступности для операций шорт. */\n  shortEnabledFlag: boolean;\n  /** Название инструмента. */\n  name: string;\n  /** Tорговая площадка (секция биржи). */\n  exchange: string;\n  /** Дата начала обращения контракта по UTC. */\n  firstTradeDate:\n    | Date\n    | undefined;\n  /** Дата по UTC, до которой возможно проведение операций с фьючерсом. */\n  lastTradeDate:\n    | Date\n    | undefined;\n  /** Тип фьючерса. Возможные значения: </br>**physical_delivery** — физические поставки; </br>**cash_settlement** — денежный эквивалент. */\n  futuresType: string;\n  /** Тип актива. Возможные значения: </br>**commodity** — товар; </br>**currency** — валюта; </br>**security** — ценная бумага; </br>**index** — индекс. */\n  assetType: string;\n  /** Основной актив. */\n  basicAsset: string;\n  /** Размер основного актива. */\n  basicAssetSize:\n    | Quotation\n    | undefined;\n  /** Код страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRisk: string;\n  /** Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRiskName: string;\n  /** Сектор экономики. */\n  sector: string;\n  /** Дата истечения срока в часов поясе UTC. */\n  expirationDate:\n    | Date\n    | undefined;\n  /** Текущий режим торгов инструмента. */\n  tradingStatus: SecurityTradingStatus;\n  /** Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке. */\n  otcFlag: boolean;\n  /** Признак доступности для покупки. */\n  buyAvailableFlag: boolean;\n  /** Признак доступности для продажи. */\n  sellAvailableFlag: boolean;\n  /** Шаг цены. */\n  minPriceIncrement:\n    | Quotation\n    | undefined;\n  /** Параметр указывает на возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Реальная площадка исполнения расчётов (биржа). */\n  realExchange: RealExchange;\n  /** Уникальный идентификатор позиции инструмента. */\n  positionUid: string;\n  /** Уникальный идентификатор позиции основного инструмента. */\n  basicAssetPositionUid: string;\n  /** Признак доступности для ИИС. */\n  forIisFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов. */\n  forQualInvestorFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом по выходным. */\n  weekendFlag: boolean;\n  /** Флаг заблокированного ТКС. */\n  blockedTcaFlag: boolean;\n  /** Дата первой минутной свечи. */\n  first1minCandleDate:\n    | Date\n    | undefined;\n  /** Дата первой дневной свечи. */\n  first1dayCandleDate:\n    | Date\n    | undefined;\n  /** Гарантийное обеспечение при покупке. */\n  initialMarginOnBuy:\n    | MoneyValue\n    | undefined;\n  /** Гарантийное обеспечение при продаже. */\n  initialMarginOnSell:\n    | MoneyValue\n    | undefined;\n  /** Стоимость шага цены. */\n  minPriceIncrementAmount:\n    | Quotation\n    | undefined;\n  /** Информация о бренде. */\n  brand:\n    | BrandData\n    | undefined;\n  /** Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dlongClient:\n    | Quotation\n    | undefined;\n  /** Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dshortClient: Quotation | undefined;\n}\n\n/** Объект передачи информации об акции. */\nexport interface Share {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код (секция торгов). */\n  classCode: string;\n  /** ISIN-идентификатор инструмента. */\n  isin: string;\n  /** Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot) */\n  lot: number;\n  /** Валюта расчётов. */\n  currency: string;\n  /** Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  klong:\n    | Quotation\n    | undefined;\n  /** Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  kshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlong:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlongMin:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshortMin:\n    | Quotation\n    | undefined;\n  /** Признак доступности для операций в шорт. */\n  shortEnabledFlag: boolean;\n  /** Название инструмента. */\n  name: string;\n  /** Tорговая площадка (секция биржи). */\n  exchange: string;\n  /** Дата IPO акции по UTC. */\n  ipoDate:\n    | Date\n    | undefined;\n  /** Размер выпуска. */\n  issueSize: number;\n  /** Код страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRisk: string;\n  /** Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRiskName: string;\n  /** Сектор экономики. */\n  sector: string;\n  /** Плановый размер выпуска. */\n  issueSizePlan: number;\n  /** Номинал. */\n  nominal:\n    | MoneyValue\n    | undefined;\n  /** Текущий режим торгов инструмента. */\n  tradingStatus: SecurityTradingStatus;\n  /** Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке. */\n  otcFlag: boolean;\n  /** Признак доступности для покупки. */\n  buyAvailableFlag: boolean;\n  /** Признак доступности для продажи. */\n  sellAvailableFlag: boolean;\n  /** Признак наличия дивидендной доходности. */\n  divYieldFlag: boolean;\n  /** Тип акции. Возможные значения — `[ShareType](https://russianinvestments.github.io/investAPI/instruments#sharetype)`. */\n  shareType: ShareType;\n  /** Шаг цены. */\n  minPriceIncrement:\n    | Quotation\n    | undefined;\n  /** Возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Реальная площадка исполнения расчётов (биржа). */\n  realExchange: RealExchange;\n  /** Уникальный идентификатор позиции инструмента. */\n  positionUid: string;\n  /** Уникальный идентификатор актива. */\n  assetUid: string;\n  /** Тип площадки торговли. */\n  instrumentExchange: InstrumentExchangeType;\n  /** Признак доступности для ИИС. */\n  forIisFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов. */\n  forQualInvestorFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом по выходным. */\n  weekendFlag: boolean;\n  /** Флаг заблокированного ТКС. */\n  blockedTcaFlag: boolean;\n  /** Флаг достаточной ликвидности. */\n  liquidityFlag: boolean;\n  /** Дата первой минутной свечи. */\n  first1minCandleDate:\n    | Date\n    | undefined;\n  /** Дата первой дневной свечи. */\n  first1dayCandleDate:\n    | Date\n    | undefined;\n  /** Информация о бренде. */\n  brand:\n    | BrandData\n    | undefined;\n  /** Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dlongClient:\n    | Quotation\n    | undefined;\n  /** Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dshortClient: Quotation | undefined;\n}\n\n/** Запрос НКД по облигации. */\nexport interface GetAccruedInterestsRequest {\n  /**\n   * FIGI-идентификатор инструмента.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Начало запрашиваемого периода по UTC. */\n  from:\n    | Date\n    | undefined;\n  /** Окончание запрашиваемого периода по UTC. */\n  to:\n    | Date\n    | undefined;\n  /** Идентификатор инструмента — `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** НКД облигации. */\nexport interface GetAccruedInterestsResponse {\n  /** Массив операций начисления купонов. */\n  accruedInterests: AccruedInterest[];\n}\n\n/** Операция начисления купонов. */\nexport interface AccruedInterest {\n  /** Дата и время выплаты по UTC. */\n  date:\n    | Date\n    | undefined;\n  /** Величина выплаты. */\n  value:\n    | Quotation\n    | undefined;\n  /** Величина выплаты в процентах от номинала. */\n  valuePercent:\n    | Quotation\n    | undefined;\n  /** Номинал облигации. */\n  nominal: Quotation | undefined;\n}\n\n/** Запрос информации о фьючерсе */\nexport interface GetFuturesMarginRequest {\n  /**\n   * Идентификатор инструмента.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Идентификатор инструмента — `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Данные по фьючерсу */\nexport interface GetFuturesMarginResponse {\n  /** Гарантийное обеспечение при покупке. */\n  initialMarginOnBuy:\n    | MoneyValue\n    | undefined;\n  /** Гарантийное обеспечение при продаже. */\n  initialMarginOnSell:\n    | MoneyValue\n    | undefined;\n  /** Шаг цены. */\n  minPriceIncrement:\n    | Quotation\n    | undefined;\n  /** Стоимость шага цены. */\n  minPriceIncrementAmount: Quotation | undefined;\n}\n\n/** Данные по инструменту. */\nexport interface InstrumentResponse {\n  /** Основная информация об инструменте. */\n  instrument: Instrument | undefined;\n}\n\n/** Объект передачи основной информации об инструменте. */\nexport interface Instrument {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код инструмента. */\n  classCode: string;\n  /** ISIN-идентификатор инструмента. */\n  isin: string;\n  /** Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot). */\n  lot: number;\n  /** Валюта расчётов. */\n  currency: string;\n  /** Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  klong:\n    | Quotation\n    | undefined;\n  /** Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР). */\n  kshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlong:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshort:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dlongMin:\n    | Quotation\n    | undefined;\n  /**\n   * Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).\n   *\n   * @deprecated\n   */\n  dshortMin:\n    | Quotation\n    | undefined;\n  /** Признак доступности для операций в шорт. */\n  shortEnabledFlag: boolean;\n  /** Название инструмента. */\n  name: string;\n  /** Tорговая площадка (секция биржи). */\n  exchange: string;\n  /** Код страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRisk: string;\n  /** Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес. */\n  countryOfRiskName: string;\n  /** Тип инструмента. */\n  instrumentType: string;\n  /** Текущий режим торгов инструмента. */\n  tradingStatus: SecurityTradingStatus;\n  /** Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке. */\n  otcFlag: boolean;\n  /** Признак доступности для покупки. */\n  buyAvailableFlag: boolean;\n  /** Признак доступности для продажи. */\n  sellAvailableFlag: boolean;\n  /** Шаг цены. */\n  minPriceIncrement:\n    | Quotation\n    | undefined;\n  /** Параметр указывает на возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Реальная площадка исполнения расчётов (биржа). */\n  realExchange: RealExchange;\n  /** Уникальный идентификатор позиции инструмента. */\n  positionUid: string;\n  /** Уникальный идентификатор актива. */\n  assetUid: string;\n  /** Признак доступности для ИИС. */\n  forIisFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов. */\n  forQualInvestorFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом по выходным. */\n  weekendFlag: boolean;\n  /** Флаг заблокированного ТКС. */\n  blockedTcaFlag: boolean;\n  /** Тип инструмента. */\n  instrumentKind: InstrumentType;\n  /** Дата первой минутной свечи. */\n  first1minCandleDate:\n    | Date\n    | undefined;\n  /** Дата первой дневной свечи. */\n  first1dayCandleDate:\n    | Date\n    | undefined;\n  /** Информация о бренде. */\n  brand:\n    | BrandData\n    | undefined;\n  /** Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dlongClient:\n    | Quotation\n    | undefined;\n  /** Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5). */\n  dshortClient: Quotation | undefined;\n}\n\n/** Запрос дивидендов. */\nexport interface GetDividendsRequest {\n  /**\n   * FIGI-идентификатор инструмента.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Начало запрашиваемого периода по UTC. Фильтрация происходит по параметру `record_date` — дата фиксации реестра. */\n  from?:\n    | Date\n    | undefined;\n  /** Окончание запрашиваемого периода по UTC. Фильтрация происходит по параметру `record_date` — дата фиксации реестра. */\n  to?:\n    | Date\n    | undefined;\n  /** Идентификатор инструмента — `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Дивиденды. */\nexport interface GetDividendsResponse {\n  dividends: Dividend[];\n}\n\n/** Информация о выплате. */\nexport interface Dividend {\n  /** Величина дивиденда на 1 ценную бумагу (включая валюту). */\n  dividendNet:\n    | MoneyValue\n    | undefined;\n  /** Дата фактических выплат по UTC. */\n  paymentDate:\n    | Date\n    | undefined;\n  /** Дата объявления дивидендов по UTC. */\n  declaredDate:\n    | Date\n    | undefined;\n  /** Последний день (включительно) покупки для получения выплаты по UTC. */\n  lastBuyDate:\n    | Date\n    | undefined;\n  /** Тип выплаты. Возможные значения: `Regular Cash` – регулярные выплаты, `Cancelled` – выплата отменена, `Daily Accrual` – ежедневное начисление, `Return of Capital` – возврат капитала, прочие типы выплат. */\n  dividendType: string;\n  /** Дата фиксации реестра по UTC. */\n  recordDate:\n    | Date\n    | undefined;\n  /** Регулярность выплаты. Возможные значения: `Annual` – ежегодная, `Semi-Anl` – каждые полгода, прочие типы выплат. */\n  regularity: string;\n  /** Цена закрытия инструмента на момент `ex_dividend_date`. */\n  closePrice:\n    | MoneyValue\n    | undefined;\n  /** Величина доходности. */\n  yieldValue:\n    | Quotation\n    | undefined;\n  /** Дата и время создания записи по UTC. */\n  createdAt: Date | undefined;\n}\n\n/** Запрос актива по идентификатору. */\nexport interface AssetRequest {\n  /** UID-идентификатор актива. */\n  id: string;\n}\n\n/** Данные по активу. */\nexport interface AssetResponse {\n  /** Актив. */\n  asset: AssetFull | undefined;\n}\n\n/** Запрос списка активов. */\nexport interface AssetsRequest {\n  instrumentType?:\n    | InstrumentType\n    | undefined;\n  /** Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus). */\n  instrumentStatus?: InstrumentStatus | undefined;\n}\n\n/** Список активов. */\nexport interface AssetsResponse {\n  /** Активы. */\n  assets: Asset[];\n}\n\nexport interface AssetFull {\n  /** Уникальный идентификатор актива. */\n  uid: string;\n  /** Тип актива. */\n  type: AssetType;\n  /** Наименование актива. */\n  name: string;\n  /** Короткое наименование актива. */\n  nameBrief: string;\n  /** Описание актива. */\n  description: string;\n  /** Дата и время удаления актива. */\n  deletedAt:\n    | Date\n    | undefined;\n  /** Тестирование клиентов. */\n  requiredTests: string[];\n  /** Валюта. Обязательно и заполняется только для `type = ASSET_TYPE_CURRENCY`. */\n  currency?:\n    | AssetCurrency\n    | undefined;\n  /** Ценная бумага. Обязательно и заполняется только для `type = ASSET_TYPE_SECURITY`. */\n  security?:\n    | AssetSecurity\n    | undefined;\n  /** Номер государственной регистрации. */\n  gosRegCode: string;\n  /** Код CFI. */\n  cfi: string;\n  /** Код НРД инструмента. */\n  codeNsd: string;\n  /** Статус актива. */\n  status: string;\n  /** Бренд. */\n  brand:\n    | Brand\n    | undefined;\n  /** Дата и время последнего обновления записи. */\n  updatedAt:\n    | Date\n    | undefined;\n  /** Код типа ц.б. по классификации Банка России. */\n  brCode: string;\n  /** Наименование кода типа ц.б. по классификации Банка России. */\n  brCodeName: string;\n  /** Массив идентификаторов инструментов. */\n  instruments: AssetInstrument[];\n}\n\n/** Информация об активе. */\nexport interface Asset {\n  /** Уникальный идентификатор актива. */\n  uid: string;\n  /** Тип актива. */\n  type: AssetType;\n  /** Наименование актива. */\n  name: string;\n  /** Массив идентификаторов инструментов. */\n  instruments: AssetInstrument[];\n}\n\n/** Валюта. */\nexport interface AssetCurrency {\n  /** ISO-код валюты. */\n  baseCurrency: string;\n}\n\n/** Ценная бумага. */\nexport interface AssetSecurity {\n  /** ISIN-идентификатор ценной бумаги. */\n  isin: string;\n  /** Тип ценной бумаги. */\n  type: string;\n  /** Тип инструмента. */\n  instrumentKind: InstrumentType;\n  /** Акция. Заполняется только для акций — тип актива `asset.type = ASSET_TYPE_SECURITY` и `security.type = share`. */\n  share?:\n    | AssetShare\n    | undefined;\n  /** Облигация. Заполняется только для облигаций — тип актива `asset.type = ASSET_TYPE_SECURITY` и `security.type = bond`. */\n  bond?:\n    | AssetBond\n    | undefined;\n  /** Структурная нота. Заполняется только для структурных продуктов — тип актива `asset.type = ASSET_TYPE_SECURITY` и `security.type = sp`. */\n  sp?:\n    | AssetStructuredProduct\n    | undefined;\n  /** Фонд. Заполняется только для фондов — тип актива `asset.type = ASSET_TYPE_SECURITY` и `security.type = etf`. */\n  etf?:\n    | AssetEtf\n    | undefined;\n  /** Клиринговый сертификат участия. Заполняется только для клиринговых сертификатов — тип актива `asset.type = ASSET_TYPE_SECURITY` и security.type = `clearing_certificate`. */\n  clearingCertificate?: AssetClearingCertificate | undefined;\n}\n\n/** Акция. */\nexport interface AssetShare {\n  /** Тип акции. */\n  type: ShareType;\n  /** Объем выпуска (шт.). */\n  issueSize:\n    | Quotation\n    | undefined;\n  /** Номинал. */\n  nominal:\n    | Quotation\n    | undefined;\n  /** Валюта номинала. */\n  nominalCurrency: string;\n  /** Индекс (Bloomberg). */\n  primaryIndex: string;\n  /** Ставка дивиденда (для привилегированных акций). */\n  dividendRate:\n    | Quotation\n    | undefined;\n  /** Тип привилегированных акций. */\n  preferredShareType: string;\n  /** Дата IPO. */\n  ipoDate:\n    | Date\n    | undefined;\n  /** Дата регистрации. */\n  registryDate:\n    | Date\n    | undefined;\n  /** Признак наличия дивидендной доходности. */\n  divYieldFlag: boolean;\n  /** Форма выпуска ФИ. */\n  issueKind: string;\n  /** Дата размещения акции. */\n  placementDate:\n    | Date\n    | undefined;\n  /** ISIN базового актива. */\n  represIsin: string;\n  /** Объявленное количество, шт. */\n  issueSizePlan:\n    | Quotation\n    | undefined;\n  /** Количество акций в свободном обращении. */\n  totalFloat: Quotation | undefined;\n}\n\n/** Облигация. */\nexport interface AssetBond {\n  /** Текущий номинал. */\n  currentNominal:\n    | Quotation\n    | undefined;\n  /** Наименование заемщика. */\n  borrowName: string;\n  /** Объем эмиссии облигации (стоимость). */\n  issueSize:\n    | Quotation\n    | undefined;\n  /** Номинал облигации. */\n  nominal:\n    | Quotation\n    | undefined;\n  /** Валюта номинала. */\n  nominalCurrency: string;\n  /** Форма выпуска облигации. */\n  issueKind: string;\n  /** Форма дохода облигации. */\n  interestKind: string;\n  /** Количество выплат в год. */\n  couponQuantityPerYear: number;\n  /** Признак облигации с индексируемым номиналом. */\n  indexedNominalFlag: boolean;\n  /** Признак субординированной облигации. */\n  subordinatedFlag: boolean;\n  /** Признак обеспеченной облигации. */\n  collateralFlag: boolean;\n  /** Признак показывает, что купоны облигации не облагаются налогом — для mass market. */\n  taxFreeFlag: boolean;\n  /** Признак облигации с амортизацией долга. */\n  amortizationFlag: boolean;\n  /** Признак облигации с плавающим купоном. */\n  floatingCouponFlag: boolean;\n  /** Признак бессрочной облигации. */\n  perpetualFlag: boolean;\n  /** Дата погашения облигации. */\n  maturityDate:\n    | Date\n    | undefined;\n  /** Описание и условия получения дополнительного дохода. */\n  returnCondition: string;\n  /** Дата выпуска облигации. */\n  stateRegDate:\n    | Date\n    | undefined;\n  /** Дата размещения облигации. */\n  placementDate:\n    | Date\n    | undefined;\n  /** Цена размещения облигации. */\n  placementPrice:\n    | Quotation\n    | undefined;\n  /** Объявленное количество, шт. */\n  issueSizePlan: Quotation | undefined;\n}\n\n/** Структурная нота. */\nexport interface AssetStructuredProduct {\n  /** Наименование заёмщика. */\n  borrowName: string;\n  /** Номинал. */\n  nominal:\n    | Quotation\n    | undefined;\n  /** Валюта номинала. */\n  nominalCurrency: string;\n  /** Тип структурной ноты. */\n  type: StructuredProductType;\n  /** Стратегия портфеля. */\n  logicPortfolio: string;\n  /** Тип базового актива. */\n  assetType: AssetType;\n  /** Вид базового актива в зависимости от типа базового актива. */\n  basicAsset: string;\n  /** Барьер сохранности в процентах. */\n  safetyBarrier:\n    | Quotation\n    | undefined;\n  /** Дата погашения. */\n  maturityDate:\n    | Date\n    | undefined;\n  /** Объявленное количество, шт. */\n  issueSizePlan:\n    | Quotation\n    | undefined;\n  /** Объём размещения. */\n  issueSize:\n    | Quotation\n    | undefined;\n  /** Дата размещения ноты. */\n  placementDate:\n    | Date\n    | undefined;\n  /** Форма выпуска. */\n  issueKind: string;\n}\n\n/** Фонд. */\nexport interface AssetEtf {\n  /** Суммарные расходы фонда в процентах. */\n  totalExpense:\n    | Quotation\n    | undefined;\n  /** Барьерная ставка доходности, после которой фонд имеет право на perfomance fee — в процентах. */\n  hurdleRate:\n    | Quotation\n    | undefined;\n  /** Комиссия за успешные результаты фонда в процентах. */\n  performanceFee:\n    | Quotation\n    | undefined;\n  /** Фиксированная комиссия за управление в процентах. */\n  fixedCommission:\n    | Quotation\n    | undefined;\n  /** Тип распределения доходов от выплат по бумагам. */\n  paymentType: string;\n  /** Признак необходимости выхода фонда в плюс для получения комиссии. */\n  watermarkFlag: boolean;\n  /** Премия (надбавка к цене) при покупке доли в фонде — в процентах. */\n  buyPremium:\n    | Quotation\n    | undefined;\n  /** Ставка дисконта (вычет из цены) при продаже доли в фонде — в процентах. */\n  sellDiscount:\n    | Quotation\n    | undefined;\n  /** Признак ребалансируемости портфеля фонда. */\n  rebalancingFlag: boolean;\n  /** Периодичность ребалансировки. */\n  rebalancingFreq: string;\n  /** Тип управления. */\n  managementType: string;\n  /** Индекс, который реплицирует (старается копировать) фонд. */\n  primaryIndex: string;\n  /** База ETF. */\n  focusType: string;\n  /** Признак использования заемных активов (плечо). */\n  leveragedFlag: boolean;\n  /** Количество акций в обращении. */\n  numShare:\n    | Quotation\n    | undefined;\n  /** Признак обязательства по отчетности перед регулятором. */\n  ucitsFlag: boolean;\n  /** Дата выпуска. */\n  releasedDate:\n    | Date\n    | undefined;\n  /** Описание фонда. */\n  description: string;\n  /** Описание индекса, за которым следует фонд. */\n  primaryIndexDescription: string;\n  /** Основные компании, в которые вкладывается фонд. */\n  primaryIndexCompany: string;\n  /** Срок восстановления индекса после просадки. */\n  indexRecoveryPeriod:\n    | Quotation\n    | undefined;\n  /** IVAV-код. */\n  inavCode: string;\n  /** Признак наличия дивидендной доходности. */\n  divYieldFlag: boolean;\n  /** Комиссия на покрытие расходов фонда в процентах. */\n  expenseCommission:\n    | Quotation\n    | undefined;\n  /** Ошибка следования за индексом в процентах. */\n  primaryIndexTrackingError:\n    | Quotation\n    | undefined;\n  /** Плановая ребалансировка портфеля. */\n  rebalancingPlan: string;\n  /** Ставки налогообложения дивидендов и купонов. */\n  taxRate: string;\n  /** Даты ребалансировок. */\n  rebalancingDates: Date[];\n  /** Форма выпуска. */\n  issueKind: string;\n  /** Номинал. */\n  nominal:\n    | Quotation\n    | undefined;\n  /** Валюта номинала. */\n  nominalCurrency: string;\n}\n\n/** Клиринговый сертификат участия. */\nexport interface AssetClearingCertificate {\n  /** Номинал. */\n  nominal:\n    | Quotation\n    | undefined;\n  /** Валюта номинала. */\n  nominalCurrency: string;\n}\n\n/** Бренд. */\nexport interface Brand {\n  /** UID-идентификатор бренда. */\n  uid: string;\n  /** Наименование бренда. */\n  name: string;\n  /** Описание. */\n  description: string;\n  /** Информация о бренде. */\n  info: string;\n  /** Компания. */\n  company: string;\n  /** Сектор. */\n  sector: string;\n  /** Код страны риска. */\n  countryOfRisk: string;\n  /** Наименование страны риска. */\n  countryOfRiskName: string;\n}\n\n/** Идентификаторы инструмента. */\nexport interface AssetInstrument {\n  /** UID-идентификатор инструмента. */\n  uid: string;\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тип инструмента. */\n  instrumentType: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код (секция торгов). */\n  classCode: string;\n  /** Массив связанных инструментов. */\n  links: InstrumentLink[];\n  /** Тип инструмента. */\n  instrumentKind: InstrumentType;\n  /** ID позиции. */\n  positionUid: string;\n}\n\n/** Связь с другим инструментом. */\nexport interface InstrumentLink {\n  /** Тип связи. */\n  type: string;\n  /** UID-идентификатор связанного инструмента. */\n  instrumentUid: string;\n}\n\n/** Запрос списка избранных инструментов, входные параметры не требуются. */\nexport interface GetFavoritesRequest {\n}\n\n/** В ответ передаётся список избранных инструментов в качестве массива. */\nexport interface GetFavoritesResponse {\n  /** Массив инструментов. */\n  favoriteInstruments: FavoriteInstrument[];\n}\n\n/** Массив избранных инструментов. */\nexport interface FavoriteInstrument {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код инструмента. */\n  classCode: string;\n  /** ISIN-идентификатор инструмента. */\n  isin: string;\n  /** Тип инструмента. */\n  instrumentType: string;\n  /** Название инструмента. */\n  name: string;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке. */\n  otcFlag: boolean;\n  /** Возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n  /** Тип инструмента. */\n  instrumentKind: InstrumentType;\n}\n\n/** Запрос редактирования списка избранных инструментов. */\nexport interface EditFavoritesRequest {\n  /** Массив инструментов. */\n  instruments: EditFavoritesRequestInstrument[];\n  /** Тип действия со списком. */\n  actionType: EditFavoritesActionType;\n}\n\n/** Массив инструментов для редактирования списка избранных инструментов. */\nexport interface EditFavoritesRequestInstrument {\n  /**\n   * FIGI-идентификатор инструмента.\n   *\n   * @deprecated\n   */\n  figi?:\n    | string\n    | undefined;\n  /** Идентификатор инструмента — `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Результат редактирования списка избранных инструментов. */\nexport interface EditFavoritesResponse {\n  /** Массив инструментов. */\n  favoriteInstruments: FavoriteInstrument[];\n}\n\n/** Запрос справочника стран. */\nexport interface GetCountriesRequest {\n}\n\n/** Справочник стран. */\nexport interface GetCountriesResponse {\n  /** Массив стран. */\n  countries: CountryResponse[];\n}\n\n/** Запрос справочника индексов и товаров */\nexport interface IndicativesRequest {\n}\n\n/** Справочник индексов и товаров */\nexport interface IndicativesResponse {\n  /** Массив инструментов. */\n  instruments: IndicativeResponse[];\n}\n\n/** Индикатив */\nexport interface IndicativeResponse {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Класс-код инструмента. */\n  classCode: string;\n  /** Валюта расчётов. */\n  currency: string;\n  /** Тип инструмента. */\n  instrumentKind: InstrumentType;\n  /** Название инструмента. */\n  name: string;\n  /** Tорговая площадка (секция биржи). */\n  exchange: string;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Признак доступности для покупки. */\n  buyAvailableFlag: boolean;\n  /** Признак доступности для продажи. */\n  sellAvailableFlag: boolean;\n}\n\n/** Данные о стране. */\nexport interface CountryResponse {\n  /** Двухбуквенный код страны. */\n  alfaTwo: string;\n  /** Трёхбуквенный код страны. */\n  alfaThree: string;\n  /** Наименование страны. */\n  name: string;\n  /** Краткое наименование страны. */\n  nameBrief: string;\n}\n\n/** Запрос на поиск инструментов. */\nexport interface FindInstrumentRequest {\n  /** Строка поиска. */\n  query: string;\n  /** Фильтр по типу инструмента. */\n  instrumentKind?:\n    | InstrumentType\n    | undefined;\n  /** Фильтр для отображения только торговых инструментов. */\n  apiTradeAvailableFlag?: boolean | undefined;\n}\n\n/** Результат поиска инструментов. */\nexport interface FindInstrumentResponse {\n  /** Массив инструментов, удовлетворяющих условиям поиска. */\n  instruments: InstrumentShort[];\n}\n\n/** Краткая информация об инструменте. */\nexport interface InstrumentShort {\n  /** ISIN инструмента. */\n  isin: string;\n  /** FIGI инструмента. */\n  figi: string;\n  /** Ticker инструмента. */\n  ticker: string;\n  /** ClassCode инструмента. */\n  classCode: string;\n  /** Тип инструмента. */\n  instrumentType: string;\n  /** Название инструмента. */\n  name: string;\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Уникальный идентификатор позиции инструмента. */\n  positionUid: string;\n  /** Тип инструмента. */\n  instrumentKind: InstrumentType;\n  /** Возможность торговать инструментом через API. */\n  apiTradeAvailableFlag: boolean;\n  /** Признак доступности для ИИС. */\n  forIisFlag: boolean;\n  /** Дата первой минутной свечи. */\n  first1minCandleDate:\n    | Date\n    | undefined;\n  /** Дата первой дневной свечи. */\n  first1dayCandleDate:\n    | Date\n    | undefined;\n  /** Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов. */\n  forQualInvestorFlag: boolean;\n  /** Флаг, отображающий доступность торговли инструментом по выходным. */\n  weekendFlag: boolean;\n  /** Флаг заблокированного ТКС. */\n  blockedTcaFlag: boolean;\n  /** Количество бумаг в лоте. */\n  lot: number;\n}\n\n/** Запрос списка брендов. */\nexport interface GetBrandsRequest {\n  /** Настройки пагинации. */\n  paging: Page | undefined;\n}\n\n/** Запрос бренда. */\nexport interface GetBrandRequest {\n  /** UID-идентификатор бренда. */\n  id: string;\n}\n\n/** Список брендов. */\nexport interface GetBrandsResponse {\n  /** Массив брендов. */\n  brands: Brand[];\n  /** Данные по пагинации. */\n  paging: PageResponse | undefined;\n}\n\n/** Запрос фундаментальных показателей */\nexport interface GetAssetFundamentalsRequest {\n  /** Массив идентификаторов активов, не более 100 шт. */\n  assets: string[];\n}\n\n/** Фундаментальные показатели */\nexport interface GetAssetFundamentalsResponse {\n  fundamentals: GetAssetFundamentalsResponse_StatisticResponse[];\n}\n\n/** Фундаментальные показатели по активу */\nexport interface GetAssetFundamentalsResponse_StatisticResponse {\n  /** Идентификатор актива. */\n  assetUid: string;\n  /** Валюта. */\n  currency: string;\n  /** Рыночная капитализация. */\n  marketCapitalization: number;\n  /** Максимум за год. */\n  highPriceLast52Weeks: number;\n  /** Минимум за год. */\n  lowPriceLast52Weeks: number;\n  /** Средний объём торгов за 10 дней. */\n  averageDailyVolumeLast10Days: number;\n  /** Средний объём торгов за месяц. */\n  averageDailyVolumeLast4Weeks: number;\n  beta: number;\n  /** Доля акций в свободном обращении. */\n  freeFloat: number;\n  /** Процент форвардной дивидендной доходности по отношению к цене акций. */\n  forwardAnnualDividendYield: number;\n  /** Количество акций в обращении. */\n  sharesOutstanding: number;\n  /** Выручка. */\n  revenueTtm: number;\n  /** EBITDA — прибыль до вычета процентов, налогов, износа и амортизации. */\n  ebitdaTtm: number;\n  /** Чистая прибыль. */\n  netIncomeTtm: number;\n  /** EPS — величина чистой прибыли компании, которая приходится на каждую обыкновенную акцию. */\n  epsTtm: number;\n  /** EPS компании с допущением, что все конвертируемые ценные бумаги компании были сконвертированы в обыкновенные акции. */\n  dilutedEpsTtm: number;\n  /** Свободный денежный поток. */\n  freeCashFlowTtm: number;\n  /** Среднегодовой  рocт выручки за 5 лет. */\n  fiveYearAnnualRevenueGrowthRate: number;\n  /** Среднегодовой  рocт выручки за 3 года. */\n  threeYearAnnualRevenueGrowthRate: number;\n  /** Соотношение рыночной капитализации компании к её чистой прибыли. */\n  peRatioTtm: number;\n  /** Соотношение рыночной капитализации компании к её выручке. */\n  priceToSalesTtm: number;\n  /** Соотношение рыночной капитализации компании к её балансовой стоимости. */\n  priceToBookTtm: number;\n  /** Соотношение рыночной капитализации компании к её свободному денежному потоку. */\n  priceToFreeCashFlowTtm: number;\n  /** Рыночная стоимость компании. */\n  totalEnterpriseValueMrq: number;\n  /** Соотношение EV и EBITDA. */\n  evToEbitdaMrq: number;\n  /** Маржа чистой прибыли. */\n  netMarginMrq: number;\n  /** Рентабельность чистой прибыли. */\n  netInterestMarginMrq: number;\n  /** Рентабельность собственного капитала. */\n  roe: number;\n  /** Рентабельность активов. */\n  roa: number;\n  /** Рентабельность активов. */\n  roic: number;\n  /** Сумма краткосрочных и долгосрочных обязательств компании. */\n  totalDebtMrq: number;\n  /** Соотношение долга к собственному капиталу. */\n  totalDebtToEquityMrq: number;\n  /** Total Debt/EBITDA. */\n  totalDebtToEbitdaMrq: number;\n  /** Отношение свободногоо кэша к стоимости. */\n  freeCashFlowToPrice: number;\n  /** Отношение чистого долга к EBITDA. */\n  netDebtToEbitda: number;\n  /** Коэффициент текущей ликвидности. */\n  currentRatioMrq: number;\n  /** Коэффициент покрытия фиксированных платежей — FCCR. */\n  fixedChargeCoverageRatioFy: number;\n  /** Дивидендная доходность за 12 месяцев. */\n  dividendYieldDailyTtm: number;\n  /** Выплаченные дивиденды за 12 месяцев. */\n  dividendRateTtm: number;\n  /** Значение дивидендов на акцию. */\n  dividendsPerShare: number;\n  /** Средняя дивидендная доходность за 5 лет. */\n  fiveYearsAverageDividendYield: number;\n  /** Среднегодовой рост дивидендов за 5 лет. */\n  fiveYearAnnualDividendGrowthRate: number;\n  /** Процент чистой прибыли, уходящий на выплату дивидендов. */\n  dividendPayoutRatioFy: number;\n  /** Деньги, потраченные на обратный выкуп акций. */\n  buyBackTtm: number;\n  /** Рост выручки за 1 год. */\n  oneYearAnnualRevenueGrowthRate: number;\n  /** Код страны. */\n  domicileIndicatorCode: string;\n  /** Соотношение депозитарной расписки к акциям. */\n  adrToCommonShareRatio: number;\n  /** Количество сотрудников. */\n  numberOfEmployees: number;\n  exDividendDate:\n    | Date\n    | undefined;\n  /** Начало фискального периода. */\n  fiscalPeriodStartDate:\n    | Date\n    | undefined;\n  /** Окончание фискального периода. */\n  fiscalPeriodEndDate:\n    | Date\n    | undefined;\n  /** Изменение общего дохода за 5 лет. */\n  revenueChangeFiveYears: number;\n  /** Изменение EPS за 5 лет. */\n  epsChangeFiveYears: number;\n  /** Изменение EBIDTA за 5 лет. */\n  ebitdaChangeFiveYears: number;\n  /** Изменение общей задолжности за 5 лет. */\n  totalDebtChangeFiveYears: number;\n  /** Отношение EV к выручке. */\n  evToSales: number;\n}\n\n/** Запрос отчетов эмитентов */\nexport interface GetAssetReportsRequest {\n  /** Идентификатор инструмента в формате UID. */\n  instrumentId: string;\n  /** Начало запрашиваемого периода по UTC. */\n  from?:\n    | Date\n    | undefined;\n  /** Окончание запрашиваемого периода по UTC. */\n  to?: Date | undefined;\n}\n\n/** Отчеты эмитентов */\nexport interface GetAssetReportsResponse {\n  /** Массив событий по облигации. */\n  events: GetAssetReportsResponse_GetAssetReportsEvent[];\n}\n\nexport enum GetAssetReportsResponse_AssetReportPeriodType {\n  /** PERIOD_TYPE_UNSPECIFIED - Не указан. */\n  PERIOD_TYPE_UNSPECIFIED = 0,\n  /** PERIOD_TYPE_QUARTER - Квартальный. */\n  PERIOD_TYPE_QUARTER = 1,\n  /** PERIOD_TYPE_SEMIANNUAL - Полугодовой. */\n  PERIOD_TYPE_SEMIANNUAL = 2,\n  /** PERIOD_TYPE_ANNUAL - Годовой. */\n  PERIOD_TYPE_ANNUAL = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function getAssetReportsResponse_AssetReportPeriodTypeFromJSON(\n  object: any,\n): GetAssetReportsResponse_AssetReportPeriodType {\n  switch (object) {\n    case 0:\n    case \"PERIOD_TYPE_UNSPECIFIED\":\n      return GetAssetReportsResponse_AssetReportPeriodType.PERIOD_TYPE_UNSPECIFIED;\n    case 1:\n    case \"PERIOD_TYPE_QUARTER\":\n      return GetAssetReportsResponse_AssetReportPeriodType.PERIOD_TYPE_QUARTER;\n    case 2:\n    case \"PERIOD_TYPE_SEMIANNUAL\":\n      return GetAssetReportsResponse_AssetReportPeriodType.PERIOD_TYPE_SEMIANNUAL;\n    case 3:\n    case \"PERIOD_TYPE_ANNUAL\":\n      return GetAssetReportsResponse_AssetReportPeriodType.PERIOD_TYPE_ANNUAL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GetAssetReportsResponse_AssetReportPeriodType.UNRECOGNIZED;\n  }\n}\n\nexport function getAssetReportsResponse_AssetReportPeriodTypeToJSON(\n  object: GetAssetReportsResponse_AssetReportPeriodType,\n): string {\n  switch (object) {\n    case GetAssetReportsResponse_AssetReportPeriodType.PERIOD_TYPE_UNSPECIFIED:\n      return \"PERIOD_TYPE_UNSPECIFIED\";\n    case GetAssetReportsResponse_AssetReportPeriodType.PERIOD_TYPE_QUARTER:\n      return \"PERIOD_TYPE_QUARTER\";\n    case GetAssetReportsResponse_AssetReportPeriodType.PERIOD_TYPE_SEMIANNUAL:\n      return \"PERIOD_TYPE_SEMIANNUAL\";\n    case GetAssetReportsResponse_AssetReportPeriodType.PERIOD_TYPE_ANNUAL:\n      return \"PERIOD_TYPE_ANNUAL\";\n    case GetAssetReportsResponse_AssetReportPeriodType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Отчет */\nexport interface GetAssetReportsResponse_GetAssetReportsEvent {\n  /** Идентификатор инструмента. */\n  instrumentId: string;\n  /** Дата публикации отчёта. */\n  reportDate:\n    | Date\n    | undefined;\n  /** Год периода отчета. */\n  periodYear: number;\n  /** Номер периода. */\n  periodNum: number;\n  /** Тип отчёта. */\n  periodType: GetAssetReportsResponse_AssetReportPeriodType;\n  /** Дата создания записи. */\n  createdAt: Date | undefined;\n}\n\n/** Запрос консенсус-прогнозов */\nexport interface GetConsensusForecastsRequest {\n  /** Настройки пагинации. */\n  paging?: Page | undefined;\n}\n\n/** Консенсус-прогнозы */\nexport interface GetConsensusForecastsResponse {\n  /** Массив прогнозов. */\n  items: GetConsensusForecastsResponse_ConsensusForecastsItem[];\n  /** Данные по пагинации. */\n  page: PageResponse | undefined;\n}\n\n/** Прогноз */\nexport interface GetConsensusForecastsResponse_ConsensusForecastsItem {\n  /** UID-идентификатор. */\n  uid: string;\n  /** UID-идентификатор актива. */\n  assetUid: string;\n  /** Дата и время создания записи. */\n  createdAt:\n    | Date\n    | undefined;\n  /** Целевая цена на 12 месяцев. */\n  bestTargetPrice:\n    | Quotation\n    | undefined;\n  /** Минимальная прогнозная цена. */\n  bestTargetLow:\n    | Quotation\n    | undefined;\n  /** Максимальная прогнозная цена. */\n  bestTargetHigh:\n    | Quotation\n    | undefined;\n  /** Количество аналитиков рекомендующих покупать. */\n  totalBuyRecommend: number;\n  /** Количество аналитиков рекомендующих держать. */\n  totalHoldRecommend: number;\n  /** Количество аналитиков рекомендующих продавать. */\n  totalSellRecommend: number;\n  /** Валюта прогнозов инструмента. */\n  currency: string;\n  /** Консенсус-прогноз. */\n  consensus: Recommendation;\n  /** Дата прогноза. */\n  prognosisDate: Date | undefined;\n}\n\n/** Запрос прогнозов инвестдомов. */\nexport interface GetForecastRequest {\n  /** Идентификатор инструмента. */\n  instrumentId: string;\n}\n\n/** Прогнозы инвестдомов по инструменту. */\nexport interface GetForecastResponse {\n  /** Массив прогнозов. */\n  targets: GetForecastResponse_TargetItem[];\n  /** Согласованный прогноз. */\n  consensus: GetForecastResponse_ConsensusItem | undefined;\n}\n\n/** Прогноз */\nexport interface GetForecastResponse_TargetItem {\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Название компании, давшей прогноз. */\n  company: string;\n  /** Прогноз. */\n  recommendation: Recommendation;\n  /** Дата прогноза. */\n  recommendationDate:\n    | Date\n    | undefined;\n  /** Валюта. */\n  currency: string;\n  /** Текущая цена. */\n  currentPrice:\n    | Quotation\n    | undefined;\n  /** Прогнозируемая цена. */\n  targetPrice:\n    | Quotation\n    | undefined;\n  /** Изменение цены. */\n  priceChange:\n    | Quotation\n    | undefined;\n  /** Относительное изменение цены. */\n  priceChangeRel:\n    | Quotation\n    | undefined;\n  /** Наименование инструмента. */\n  showName: string;\n}\n\n/** Консенсус-прогноз. */\nexport interface GetForecastResponse_ConsensusItem {\n  /** Уникальный идентификатор инструмента. */\n  uid: string;\n  /** Тикер инструмента. */\n  ticker: string;\n  /** Прогноз. */\n  recommendation: Recommendation;\n  /** Валюта. */\n  currency: string;\n  /** Текущая цена. */\n  currentPrice:\n    | Quotation\n    | undefined;\n  /** Прогнозируемая цена. */\n  consensus:\n    | Quotation\n    | undefined;\n  /** Минимальная цена прогноза. */\n  minTarget:\n    | Quotation\n    | undefined;\n  /** Максимальная цена прогноза. */\n  maxTarget:\n    | Quotation\n    | undefined;\n  /** Изменение цены. */\n  priceChange:\n    | Quotation\n    | undefined;\n  /** Относительное изменение цены. */\n  priceChangeRel: Quotation | undefined;\n}\n\nexport interface TradingInterval {\n  /** Название интервала. */\n  type: string;\n  /** Интервал. */\n  interval: TradingInterval_TimeInterval | undefined;\n}\n\nexport interface TradingInterval_TimeInterval {\n  /** Время начала интервала. */\n  startTs:\n    | Date\n    | undefined;\n  /** Время окончания интервала. */\n  endTs: Date | undefined;\n}\n\nfunction createBaseTradingSchedulesRequest(): TradingSchedulesRequest {\n  return { exchange: undefined, from: undefined, to: undefined };\n}\n\nexport const TradingSchedulesRequest: MessageFns<TradingSchedulesRequest> = {\n  encode(message: TradingSchedulesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.exchange !== undefined) {\n      writer.uint32(10).string(message.exchange);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradingSchedulesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradingSchedulesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradingSchedulesRequest {\n    return {\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : undefined,\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n    };\n  },\n\n  toJSON(message: TradingSchedulesRequest): unknown {\n    const obj: any = {};\n    if (message.exchange !== undefined) {\n      obj.exchange = message.exchange;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradingSchedulesRequest>): TradingSchedulesRequest {\n    return TradingSchedulesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradingSchedulesRequest>): TradingSchedulesRequest {\n    const message = createBaseTradingSchedulesRequest();\n    message.exchange = object.exchange ?? undefined;\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseTradingSchedulesResponse(): TradingSchedulesResponse {\n  return { exchanges: [] };\n}\n\nexport const TradingSchedulesResponse: MessageFns<TradingSchedulesResponse> = {\n  encode(message: TradingSchedulesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.exchanges) {\n      TradingSchedule.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradingSchedulesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradingSchedulesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.exchanges.push(TradingSchedule.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradingSchedulesResponse {\n    return {\n      exchanges: globalThis.Array.isArray(object?.exchanges)\n        ? object.exchanges.map((e: any) => TradingSchedule.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: TradingSchedulesResponse): unknown {\n    const obj: any = {};\n    if (message.exchanges?.length) {\n      obj.exchanges = message.exchanges.map((e) => TradingSchedule.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradingSchedulesResponse>): TradingSchedulesResponse {\n    return TradingSchedulesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradingSchedulesResponse>): TradingSchedulesResponse {\n    const message = createBaseTradingSchedulesResponse();\n    message.exchanges = object.exchanges?.map((e) => TradingSchedule.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseTradingSchedule(): TradingSchedule {\n  return { exchange: \"\", days: [] };\n}\n\nexport const TradingSchedule: MessageFns<TradingSchedule> = {\n  encode(message: TradingSchedule, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.exchange !== \"\") {\n      writer.uint32(10).string(message.exchange);\n    }\n    for (const v of message.days) {\n      TradingDay.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradingSchedule {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradingSchedule();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.days.push(TradingDay.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradingSchedule {\n    return {\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      days: globalThis.Array.isArray(object?.days) ? object.days.map((e: any) => TradingDay.fromJSON(e)) : [],\n    };\n  },\n\n  toJSON(message: TradingSchedule): unknown {\n    const obj: any = {};\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.days?.length) {\n      obj.days = message.days.map((e) => TradingDay.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradingSchedule>): TradingSchedule {\n    return TradingSchedule.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradingSchedule>): TradingSchedule {\n    const message = createBaseTradingSchedule();\n    message.exchange = object.exchange ?? \"\";\n    message.days = object.days?.map((e) => TradingDay.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseTradingDay(): TradingDay {\n  return {\n    date: undefined,\n    isTradingDay: false,\n    startTime: undefined,\n    endTime: undefined,\n    openingAuctionStartTime: undefined,\n    closingAuctionEndTime: undefined,\n    eveningOpeningAuctionStartTime: undefined,\n    eveningStartTime: undefined,\n    eveningEndTime: undefined,\n    clearingStartTime: undefined,\n    clearingEndTime: undefined,\n    premarketStartTime: undefined,\n    premarketEndTime: undefined,\n    closingAuctionStartTime: undefined,\n    openingAuctionEndTime: undefined,\n    intervals: [],\n  };\n}\n\nexport const TradingDay: MessageFns<TradingDay> = {\n  encode(message: TradingDay, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.date !== undefined) {\n      Timestamp.encode(toTimestamp(message.date), writer.uint32(10).fork()).join();\n    }\n    if (message.isTradingDay !== false) {\n      writer.uint32(16).bool(message.isTradingDay);\n    }\n    if (message.startTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.startTime), writer.uint32(26).fork()).join();\n    }\n    if (message.endTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.endTime), writer.uint32(34).fork()).join();\n    }\n    if (message.openingAuctionStartTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.openingAuctionStartTime), writer.uint32(58).fork()).join();\n    }\n    if (message.closingAuctionEndTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.closingAuctionEndTime), writer.uint32(66).fork()).join();\n    }\n    if (message.eveningOpeningAuctionStartTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.eveningOpeningAuctionStartTime), writer.uint32(74).fork()).join();\n    }\n    if (message.eveningStartTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.eveningStartTime), writer.uint32(82).fork()).join();\n    }\n    if (message.eveningEndTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.eveningEndTime), writer.uint32(90).fork()).join();\n    }\n    if (message.clearingStartTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.clearingStartTime), writer.uint32(98).fork()).join();\n    }\n    if (message.clearingEndTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.clearingEndTime), writer.uint32(106).fork()).join();\n    }\n    if (message.premarketStartTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.premarketStartTime), writer.uint32(114).fork()).join();\n    }\n    if (message.premarketEndTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.premarketEndTime), writer.uint32(122).fork()).join();\n    }\n    if (message.closingAuctionStartTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.closingAuctionStartTime), writer.uint32(130).fork()).join();\n    }\n    if (message.openingAuctionEndTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.openingAuctionEndTime), writer.uint32(138).fork()).join();\n    }\n    for (const v of message.intervals) {\n      TradingInterval.encode(v!, writer.uint32(146).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradingDay {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradingDay();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.date = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.isTradingDay = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.startTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.endTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.openingAuctionStartTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.closingAuctionEndTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.eveningOpeningAuctionStartTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.eveningStartTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.eveningEndTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.clearingStartTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.clearingEndTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.premarketStartTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.premarketEndTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.closingAuctionStartTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.openingAuctionEndTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.intervals.push(TradingInterval.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradingDay {\n    return {\n      date: isSet(object.date) ? fromJsonTimestamp(object.date) : undefined,\n      isTradingDay: isSet(object.isTradingDay) ? globalThis.Boolean(object.isTradingDay) : false,\n      startTime: isSet(object.startTime) ? fromJsonTimestamp(object.startTime) : undefined,\n      endTime: isSet(object.endTime) ? fromJsonTimestamp(object.endTime) : undefined,\n      openingAuctionStartTime: isSet(object.openingAuctionStartTime)\n        ? fromJsonTimestamp(object.openingAuctionStartTime)\n        : undefined,\n      closingAuctionEndTime: isSet(object.closingAuctionEndTime)\n        ? fromJsonTimestamp(object.closingAuctionEndTime)\n        : undefined,\n      eveningOpeningAuctionStartTime: isSet(object.eveningOpeningAuctionStartTime)\n        ? fromJsonTimestamp(object.eveningOpeningAuctionStartTime)\n        : undefined,\n      eveningStartTime: isSet(object.eveningStartTime) ? fromJsonTimestamp(object.eveningStartTime) : undefined,\n      eveningEndTime: isSet(object.eveningEndTime) ? fromJsonTimestamp(object.eveningEndTime) : undefined,\n      clearingStartTime: isSet(object.clearingStartTime) ? fromJsonTimestamp(object.clearingStartTime) : undefined,\n      clearingEndTime: isSet(object.clearingEndTime) ? fromJsonTimestamp(object.clearingEndTime) : undefined,\n      premarketStartTime: isSet(object.premarketStartTime) ? fromJsonTimestamp(object.premarketStartTime) : undefined,\n      premarketEndTime: isSet(object.premarketEndTime) ? fromJsonTimestamp(object.premarketEndTime) : undefined,\n      closingAuctionStartTime: isSet(object.closingAuctionStartTime)\n        ? fromJsonTimestamp(object.closingAuctionStartTime)\n        : undefined,\n      openingAuctionEndTime: isSet(object.openingAuctionEndTime)\n        ? fromJsonTimestamp(object.openingAuctionEndTime)\n        : undefined,\n      intervals: globalThis.Array.isArray(object?.intervals)\n        ? object.intervals.map((e: any) => TradingInterval.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: TradingDay): unknown {\n    const obj: any = {};\n    if (message.date !== undefined) {\n      obj.date = message.date.toISOString();\n    }\n    if (message.isTradingDay !== false) {\n      obj.isTradingDay = message.isTradingDay;\n    }\n    if (message.startTime !== undefined) {\n      obj.startTime = message.startTime.toISOString();\n    }\n    if (message.endTime !== undefined) {\n      obj.endTime = message.endTime.toISOString();\n    }\n    if (message.openingAuctionStartTime !== undefined) {\n      obj.openingAuctionStartTime = message.openingAuctionStartTime.toISOString();\n    }\n    if (message.closingAuctionEndTime !== undefined) {\n      obj.closingAuctionEndTime = message.closingAuctionEndTime.toISOString();\n    }\n    if (message.eveningOpeningAuctionStartTime !== undefined) {\n      obj.eveningOpeningAuctionStartTime = message.eveningOpeningAuctionStartTime.toISOString();\n    }\n    if (message.eveningStartTime !== undefined) {\n      obj.eveningStartTime = message.eveningStartTime.toISOString();\n    }\n    if (message.eveningEndTime !== undefined) {\n      obj.eveningEndTime = message.eveningEndTime.toISOString();\n    }\n    if (message.clearingStartTime !== undefined) {\n      obj.clearingStartTime = message.clearingStartTime.toISOString();\n    }\n    if (message.clearingEndTime !== undefined) {\n      obj.clearingEndTime = message.clearingEndTime.toISOString();\n    }\n    if (message.premarketStartTime !== undefined) {\n      obj.premarketStartTime = message.premarketStartTime.toISOString();\n    }\n    if (message.premarketEndTime !== undefined) {\n      obj.premarketEndTime = message.premarketEndTime.toISOString();\n    }\n    if (message.closingAuctionStartTime !== undefined) {\n      obj.closingAuctionStartTime = message.closingAuctionStartTime.toISOString();\n    }\n    if (message.openingAuctionEndTime !== undefined) {\n      obj.openingAuctionEndTime = message.openingAuctionEndTime.toISOString();\n    }\n    if (message.intervals?.length) {\n      obj.intervals = message.intervals.map((e) => TradingInterval.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradingDay>): TradingDay {\n    return TradingDay.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradingDay>): TradingDay {\n    const message = createBaseTradingDay();\n    message.date = object.date ?? undefined;\n    message.isTradingDay = object.isTradingDay ?? false;\n    message.startTime = object.startTime ?? undefined;\n    message.endTime = object.endTime ?? undefined;\n    message.openingAuctionStartTime = object.openingAuctionStartTime ?? undefined;\n    message.closingAuctionEndTime = object.closingAuctionEndTime ?? undefined;\n    message.eveningOpeningAuctionStartTime = object.eveningOpeningAuctionStartTime ?? undefined;\n    message.eveningStartTime = object.eveningStartTime ?? undefined;\n    message.eveningEndTime = object.eveningEndTime ?? undefined;\n    message.clearingStartTime = object.clearingStartTime ?? undefined;\n    message.clearingEndTime = object.clearingEndTime ?? undefined;\n    message.premarketStartTime = object.premarketStartTime ?? undefined;\n    message.premarketEndTime = object.premarketEndTime ?? undefined;\n    message.closingAuctionStartTime = object.closingAuctionStartTime ?? undefined;\n    message.openingAuctionEndTime = object.openingAuctionEndTime ?? undefined;\n    message.intervals = object.intervals?.map((e) => TradingInterval.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseInstrumentRequest(): InstrumentRequest {\n  return { idType: 0, classCode: undefined, id: \"\" };\n}\n\nexport const InstrumentRequest: MessageFns<InstrumentRequest> = {\n  encode(message: InstrumentRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.idType !== 0) {\n      writer.uint32(8).int32(message.idType);\n    }\n    if (message.classCode !== undefined) {\n      writer.uint32(18).string(message.classCode);\n    }\n    if (message.id !== \"\") {\n      writer.uint32(26).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InstrumentRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInstrumentRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.idType = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InstrumentRequest {\n    return {\n      idType: isSet(object.idType) ? instrumentIdTypeFromJSON(object.idType) : 0,\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : undefined,\n      id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n    };\n  },\n\n  toJSON(message: InstrumentRequest): unknown {\n    const obj: any = {};\n    if (message.idType !== 0) {\n      obj.idType = instrumentIdTypeToJSON(message.idType);\n    }\n    if (message.classCode !== undefined) {\n      obj.classCode = message.classCode;\n    }\n    if (message.id !== \"\") {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InstrumentRequest>): InstrumentRequest {\n    return InstrumentRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InstrumentRequest>): InstrumentRequest {\n    const message = createBaseInstrumentRequest();\n    message.idType = object.idType ?? 0;\n    message.classCode = object.classCode ?? undefined;\n    message.id = object.id ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseInstrumentsRequest(): InstrumentsRequest {\n  return { instrumentStatus: undefined, instrumentExchange: undefined };\n}\n\nexport const InstrumentsRequest: MessageFns<InstrumentsRequest> = {\n  encode(message: InstrumentsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrumentStatus !== undefined) {\n      writer.uint32(8).int32(message.instrumentStatus);\n    }\n    if (message.instrumentExchange !== undefined) {\n      writer.uint32(16).int32(message.instrumentExchange);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InstrumentsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInstrumentsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.instrumentStatus = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.instrumentExchange = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InstrumentsRequest {\n    return {\n      instrumentStatus: isSet(object.instrumentStatus) ? instrumentStatusFromJSON(object.instrumentStatus) : undefined,\n      instrumentExchange: isSet(object.instrumentExchange)\n        ? instrumentExchangeTypeFromJSON(object.instrumentExchange)\n        : undefined,\n    };\n  },\n\n  toJSON(message: InstrumentsRequest): unknown {\n    const obj: any = {};\n    if (message.instrumentStatus !== undefined) {\n      obj.instrumentStatus = instrumentStatusToJSON(message.instrumentStatus);\n    }\n    if (message.instrumentExchange !== undefined) {\n      obj.instrumentExchange = instrumentExchangeTypeToJSON(message.instrumentExchange);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InstrumentsRequest>): InstrumentsRequest {\n    return InstrumentsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InstrumentsRequest>): InstrumentsRequest {\n    const message = createBaseInstrumentsRequest();\n    message.instrumentStatus = object.instrumentStatus ?? undefined;\n    message.instrumentExchange = object.instrumentExchange ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseFilterOptionsRequest(): FilterOptionsRequest {\n  return { basicAssetUid: undefined, basicAssetPositionUid: undefined };\n}\n\nexport const FilterOptionsRequest: MessageFns<FilterOptionsRequest> = {\n  encode(message: FilterOptionsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.basicAssetUid !== undefined) {\n      writer.uint32(10).string(message.basicAssetUid);\n    }\n    if (message.basicAssetPositionUid !== undefined) {\n      writer.uint32(18).string(message.basicAssetPositionUid);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FilterOptionsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFilterOptionsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.basicAssetUid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.basicAssetPositionUid = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FilterOptionsRequest {\n    return {\n      basicAssetUid: isSet(object.basicAssetUid) ? globalThis.String(object.basicAssetUid) : undefined,\n      basicAssetPositionUid: isSet(object.basicAssetPositionUid)\n        ? globalThis.String(object.basicAssetPositionUid)\n        : undefined,\n    };\n  },\n\n  toJSON(message: FilterOptionsRequest): unknown {\n    const obj: any = {};\n    if (message.basicAssetUid !== undefined) {\n      obj.basicAssetUid = message.basicAssetUid;\n    }\n    if (message.basicAssetPositionUid !== undefined) {\n      obj.basicAssetPositionUid = message.basicAssetPositionUid;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FilterOptionsRequest>): FilterOptionsRequest {\n    return FilterOptionsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FilterOptionsRequest>): FilterOptionsRequest {\n    const message = createBaseFilterOptionsRequest();\n    message.basicAssetUid = object.basicAssetUid ?? undefined;\n    message.basicAssetPositionUid = object.basicAssetPositionUid ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseBondResponse(): BondResponse {\n  return { instrument: undefined };\n}\n\nexport const BondResponse: MessageFns<BondResponse> = {\n  encode(message: BondResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrument !== undefined) {\n      Bond.encode(message.instrument, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BondResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBondResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrument = Bond.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BondResponse {\n    return { instrument: isSet(object.instrument) ? Bond.fromJSON(object.instrument) : undefined };\n  },\n\n  toJSON(message: BondResponse): unknown {\n    const obj: any = {};\n    if (message.instrument !== undefined) {\n      obj.instrument = Bond.toJSON(message.instrument);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BondResponse>): BondResponse {\n    return BondResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BondResponse>): BondResponse {\n    const message = createBaseBondResponse();\n    message.instrument = (object.instrument !== undefined && object.instrument !== null)\n      ? Bond.fromPartial(object.instrument)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseBondsResponse(): BondsResponse {\n  return { instruments: [] };\n}\n\nexport const BondsResponse: MessageFns<BondsResponse> = {\n  encode(message: BondsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      Bond.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BondsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBondsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(Bond.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BondsResponse {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => Bond.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: BondsResponse): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => Bond.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BondsResponse>): BondsResponse {\n    return BondsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BondsResponse>): BondsResponse {\n    const message = createBaseBondsResponse();\n    message.instruments = object.instruments?.map((e) => Bond.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetBondCouponsRequest(): GetBondCouponsRequest {\n  return { figi: \"\", from: undefined, to: undefined, instrumentId: \"\" };\n}\n\nexport const GetBondCouponsRequest: MessageFns<GetBondCouponsRequest> = {\n  encode(message: GetBondCouponsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(34).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBondCouponsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBondCouponsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBondCouponsRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: GetBondCouponsRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBondCouponsRequest>): GetBondCouponsRequest {\n    return GetBondCouponsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBondCouponsRequest>): GetBondCouponsRequest {\n    const message = createBaseGetBondCouponsRequest();\n    message.figi = object.figi ?? \"\";\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetBondCouponsResponse(): GetBondCouponsResponse {\n  return { events: [] };\n}\n\nexport const GetBondCouponsResponse: MessageFns<GetBondCouponsResponse> = {\n  encode(message: GetBondCouponsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.events) {\n      Coupon.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBondCouponsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBondCouponsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.events.push(Coupon.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBondCouponsResponse {\n    return {\n      events: globalThis.Array.isArray(object?.events) ? object.events.map((e: any) => Coupon.fromJSON(e)) : [],\n    };\n  },\n\n  toJSON(message: GetBondCouponsResponse): unknown {\n    const obj: any = {};\n    if (message.events?.length) {\n      obj.events = message.events.map((e) => Coupon.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBondCouponsResponse>): GetBondCouponsResponse {\n    return GetBondCouponsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBondCouponsResponse>): GetBondCouponsResponse {\n    const message = createBaseGetBondCouponsResponse();\n    message.events = object.events?.map((e) => Coupon.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetBondEventsRequest(): GetBondEventsRequest {\n  return { from: undefined, to: undefined, instrumentId: \"\", type: 0 };\n}\n\nexport const GetBondEventsRequest: MessageFns<GetBondEventsRequest> = {\n  encode(message: GetBondEventsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(34).string(message.instrumentId);\n    }\n    if (message.type !== 0) {\n      writer.uint32(40).int32(message.type);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBondEventsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBondEventsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.type = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBondEventsRequest {\n    return {\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      type: isSet(object.type) ? getBondEventsRequest_EventTypeFromJSON(object.type) : 0,\n    };\n  },\n\n  toJSON(message: GetBondEventsRequest): unknown {\n    const obj: any = {};\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.type !== 0) {\n      obj.type = getBondEventsRequest_EventTypeToJSON(message.type);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBondEventsRequest>): GetBondEventsRequest {\n    return GetBondEventsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBondEventsRequest>): GetBondEventsRequest {\n    const message = createBaseGetBondEventsRequest();\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.type = object.type ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetBondEventsResponse(): GetBondEventsResponse {\n  return { events: [] };\n}\n\nexport const GetBondEventsResponse: MessageFns<GetBondEventsResponse> = {\n  encode(message: GetBondEventsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.events) {\n      GetBondEventsResponse_BondEvent.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBondEventsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBondEventsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.events.push(GetBondEventsResponse_BondEvent.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBondEventsResponse {\n    return {\n      events: globalThis.Array.isArray(object?.events)\n        ? object.events.map((e: any) => GetBondEventsResponse_BondEvent.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetBondEventsResponse): unknown {\n    const obj: any = {};\n    if (message.events?.length) {\n      obj.events = message.events.map((e) => GetBondEventsResponse_BondEvent.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBondEventsResponse>): GetBondEventsResponse {\n    return GetBondEventsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBondEventsResponse>): GetBondEventsResponse {\n    const message = createBaseGetBondEventsResponse();\n    message.events = object.events?.map((e) => GetBondEventsResponse_BondEvent.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetBondEventsResponse_BondEvent(): GetBondEventsResponse_BondEvent {\n  return {\n    instrumentId: \"\",\n    eventNumber: 0,\n    eventDate: undefined,\n    eventType: 0,\n    eventTotalVol: undefined,\n    fixDate: undefined,\n    rateDate: undefined,\n    defaultDate: undefined,\n    realPayDate: undefined,\n    payDate: undefined,\n    payOneBond: undefined,\n    moneyFlowVal: undefined,\n    execution: \"\",\n    operationType: \"\",\n    value: undefined,\n    note: \"\",\n    convertToFinToolId: \"\",\n    couponStartDate: undefined,\n    couponEndDate: undefined,\n    couponPeriod: 0,\n    couponInterestRate: undefined,\n  };\n}\n\nexport const GetBondEventsResponse_BondEvent: MessageFns<GetBondEventsResponse_BondEvent> = {\n  encode(message: GetBondEventsResponse_BondEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrumentId !== \"\") {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    if (message.eventNumber !== 0) {\n      writer.uint32(24).int32(message.eventNumber);\n    }\n    if (message.eventDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.eventDate), writer.uint32(34).fork()).join();\n    }\n    if (message.eventType !== 0) {\n      writer.uint32(40).int32(message.eventType);\n    }\n    if (message.eventTotalVol !== undefined) {\n      Quotation.encode(message.eventTotalVol, writer.uint32(50).fork()).join();\n    }\n    if (message.fixDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.fixDate), writer.uint32(58).fork()).join();\n    }\n    if (message.rateDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.rateDate), writer.uint32(66).fork()).join();\n    }\n    if (message.defaultDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.defaultDate), writer.uint32(74).fork()).join();\n    }\n    if (message.realPayDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.realPayDate), writer.uint32(82).fork()).join();\n    }\n    if (message.payDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.payDate), writer.uint32(90).fork()).join();\n    }\n    if (message.payOneBond !== undefined) {\n      MoneyValue.encode(message.payOneBond, writer.uint32(98).fork()).join();\n    }\n    if (message.moneyFlowVal !== undefined) {\n      MoneyValue.encode(message.moneyFlowVal, writer.uint32(106).fork()).join();\n    }\n    if (message.execution !== \"\") {\n      writer.uint32(114).string(message.execution);\n    }\n    if (message.operationType !== \"\") {\n      writer.uint32(122).string(message.operationType);\n    }\n    if (message.value !== undefined) {\n      Quotation.encode(message.value, writer.uint32(130).fork()).join();\n    }\n    if (message.note !== \"\") {\n      writer.uint32(138).string(message.note);\n    }\n    if (message.convertToFinToolId !== \"\") {\n      writer.uint32(146).string(message.convertToFinToolId);\n    }\n    if (message.couponStartDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.couponStartDate), writer.uint32(154).fork()).join();\n    }\n    if (message.couponEndDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.couponEndDate), writer.uint32(162).fork()).join();\n    }\n    if (message.couponPeriod !== 0) {\n      writer.uint32(168).int32(message.couponPeriod);\n    }\n    if (message.couponInterestRate !== undefined) {\n      Quotation.encode(message.couponInterestRate, writer.uint32(178).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBondEventsResponse_BondEvent {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBondEventsResponse_BondEvent();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.eventNumber = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.eventDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.eventType = reader.int32() as any;\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.eventTotalVol = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.fixDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.rateDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.defaultDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.realPayDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.payDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.payOneBond = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.moneyFlowVal = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.execution = reader.string();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.operationType = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.value = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.note = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.convertToFinToolId = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.couponStartDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.couponEndDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 21: {\n          if (tag !== 168) {\n            break;\n          }\n\n          message.couponPeriod = reader.int32();\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.couponInterestRate = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBondEventsResponse_BondEvent {\n    return {\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      eventNumber: isSet(object.eventNumber) ? globalThis.Number(object.eventNumber) : 0,\n      eventDate: isSet(object.eventDate) ? fromJsonTimestamp(object.eventDate) : undefined,\n      eventType: isSet(object.eventType) ? getBondEventsRequest_EventTypeFromJSON(object.eventType) : 0,\n      eventTotalVol: isSet(object.eventTotalVol) ? Quotation.fromJSON(object.eventTotalVol) : undefined,\n      fixDate: isSet(object.fixDate) ? fromJsonTimestamp(object.fixDate) : undefined,\n      rateDate: isSet(object.rateDate) ? fromJsonTimestamp(object.rateDate) : undefined,\n      defaultDate: isSet(object.defaultDate) ? fromJsonTimestamp(object.defaultDate) : undefined,\n      realPayDate: isSet(object.realPayDate) ? fromJsonTimestamp(object.realPayDate) : undefined,\n      payDate: isSet(object.payDate) ? fromJsonTimestamp(object.payDate) : undefined,\n      payOneBond: isSet(object.payOneBond) ? MoneyValue.fromJSON(object.payOneBond) : undefined,\n      moneyFlowVal: isSet(object.moneyFlowVal) ? MoneyValue.fromJSON(object.moneyFlowVal) : undefined,\n      execution: isSet(object.execution) ? globalThis.String(object.execution) : \"\",\n      operationType: isSet(object.operationType) ? globalThis.String(object.operationType) : \"\",\n      value: isSet(object.value) ? Quotation.fromJSON(object.value) : undefined,\n      note: isSet(object.note) ? globalThis.String(object.note) : \"\",\n      convertToFinToolId: isSet(object.convertToFinToolId) ? globalThis.String(object.convertToFinToolId) : \"\",\n      couponStartDate: isSet(object.couponStartDate) ? fromJsonTimestamp(object.couponStartDate) : undefined,\n      couponEndDate: isSet(object.couponEndDate) ? fromJsonTimestamp(object.couponEndDate) : undefined,\n      couponPeriod: isSet(object.couponPeriod) ? globalThis.Number(object.couponPeriod) : 0,\n      couponInterestRate: isSet(object.couponInterestRate) ? Quotation.fromJSON(object.couponInterestRate) : undefined,\n    };\n  },\n\n  toJSON(message: GetBondEventsResponse_BondEvent): unknown {\n    const obj: any = {};\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.eventNumber !== 0) {\n      obj.eventNumber = Math.round(message.eventNumber);\n    }\n    if (message.eventDate !== undefined) {\n      obj.eventDate = message.eventDate.toISOString();\n    }\n    if (message.eventType !== 0) {\n      obj.eventType = getBondEventsRequest_EventTypeToJSON(message.eventType);\n    }\n    if (message.eventTotalVol !== undefined) {\n      obj.eventTotalVol = Quotation.toJSON(message.eventTotalVol);\n    }\n    if (message.fixDate !== undefined) {\n      obj.fixDate = message.fixDate.toISOString();\n    }\n    if (message.rateDate !== undefined) {\n      obj.rateDate = message.rateDate.toISOString();\n    }\n    if (message.defaultDate !== undefined) {\n      obj.defaultDate = message.defaultDate.toISOString();\n    }\n    if (message.realPayDate !== undefined) {\n      obj.realPayDate = message.realPayDate.toISOString();\n    }\n    if (message.payDate !== undefined) {\n      obj.payDate = message.payDate.toISOString();\n    }\n    if (message.payOneBond !== undefined) {\n      obj.payOneBond = MoneyValue.toJSON(message.payOneBond);\n    }\n    if (message.moneyFlowVal !== undefined) {\n      obj.moneyFlowVal = MoneyValue.toJSON(message.moneyFlowVal);\n    }\n    if (message.execution !== \"\") {\n      obj.execution = message.execution;\n    }\n    if (message.operationType !== \"\") {\n      obj.operationType = message.operationType;\n    }\n    if (message.value !== undefined) {\n      obj.value = Quotation.toJSON(message.value);\n    }\n    if (message.note !== \"\") {\n      obj.note = message.note;\n    }\n    if (message.convertToFinToolId !== \"\") {\n      obj.convertToFinToolId = message.convertToFinToolId;\n    }\n    if (message.couponStartDate !== undefined) {\n      obj.couponStartDate = message.couponStartDate.toISOString();\n    }\n    if (message.couponEndDate !== undefined) {\n      obj.couponEndDate = message.couponEndDate.toISOString();\n    }\n    if (message.couponPeriod !== 0) {\n      obj.couponPeriod = Math.round(message.couponPeriod);\n    }\n    if (message.couponInterestRate !== undefined) {\n      obj.couponInterestRate = Quotation.toJSON(message.couponInterestRate);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBondEventsResponse_BondEvent>): GetBondEventsResponse_BondEvent {\n    return GetBondEventsResponse_BondEvent.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBondEventsResponse_BondEvent>): GetBondEventsResponse_BondEvent {\n    const message = createBaseGetBondEventsResponse_BondEvent();\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.eventNumber = object.eventNumber ?? 0;\n    message.eventDate = object.eventDate ?? undefined;\n    message.eventType = object.eventType ?? 0;\n    message.eventTotalVol = (object.eventTotalVol !== undefined && object.eventTotalVol !== null)\n      ? Quotation.fromPartial(object.eventTotalVol)\n      : undefined;\n    message.fixDate = object.fixDate ?? undefined;\n    message.rateDate = object.rateDate ?? undefined;\n    message.defaultDate = object.defaultDate ?? undefined;\n    message.realPayDate = object.realPayDate ?? undefined;\n    message.payDate = object.payDate ?? undefined;\n    message.payOneBond = (object.payOneBond !== undefined && object.payOneBond !== null)\n      ? MoneyValue.fromPartial(object.payOneBond)\n      : undefined;\n    message.moneyFlowVal = (object.moneyFlowVal !== undefined && object.moneyFlowVal !== null)\n      ? MoneyValue.fromPartial(object.moneyFlowVal)\n      : undefined;\n    message.execution = object.execution ?? \"\";\n    message.operationType = object.operationType ?? \"\";\n    message.value = (object.value !== undefined && object.value !== null)\n      ? Quotation.fromPartial(object.value)\n      : undefined;\n    message.note = object.note ?? \"\";\n    message.convertToFinToolId = object.convertToFinToolId ?? \"\";\n    message.couponStartDate = object.couponStartDate ?? undefined;\n    message.couponEndDate = object.couponEndDate ?? undefined;\n    message.couponPeriod = object.couponPeriod ?? 0;\n    message.couponInterestRate = (object.couponInterestRate !== undefined && object.couponInterestRate !== null)\n      ? Quotation.fromPartial(object.couponInterestRate)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCoupon(): Coupon {\n  return {\n    figi: \"\",\n    couponDate: undefined,\n    couponNumber: 0,\n    fixDate: undefined,\n    payOneBond: undefined,\n    couponType: 0,\n    couponStartDate: undefined,\n    couponEndDate: undefined,\n    couponPeriod: 0,\n  };\n}\n\nexport const Coupon: MessageFns<Coupon> = {\n  encode(message: Coupon, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.couponDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.couponDate), writer.uint32(18).fork()).join();\n    }\n    if (message.couponNumber !== 0) {\n      writer.uint32(24).int64(message.couponNumber);\n    }\n    if (message.fixDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.fixDate), writer.uint32(34).fork()).join();\n    }\n    if (message.payOneBond !== undefined) {\n      MoneyValue.encode(message.payOneBond, writer.uint32(42).fork()).join();\n    }\n    if (message.couponType !== 0) {\n      writer.uint32(48).int32(message.couponType);\n    }\n    if (message.couponStartDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.couponStartDate), writer.uint32(58).fork()).join();\n    }\n    if (message.couponEndDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.couponEndDate), writer.uint32(66).fork()).join();\n    }\n    if (message.couponPeriod !== 0) {\n      writer.uint32(72).int32(message.couponPeriod);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Coupon {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCoupon();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.couponDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.couponNumber = longToNumber(reader.int64());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.fixDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.payOneBond = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.couponType = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.couponStartDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.couponEndDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.couponPeriod = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Coupon {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      couponDate: isSet(object.couponDate) ? fromJsonTimestamp(object.couponDate) : undefined,\n      couponNumber: isSet(object.couponNumber) ? globalThis.Number(object.couponNumber) : 0,\n      fixDate: isSet(object.fixDate) ? fromJsonTimestamp(object.fixDate) : undefined,\n      payOneBond: isSet(object.payOneBond) ? MoneyValue.fromJSON(object.payOneBond) : undefined,\n      couponType: isSet(object.couponType) ? couponTypeFromJSON(object.couponType) : 0,\n      couponStartDate: isSet(object.couponStartDate) ? fromJsonTimestamp(object.couponStartDate) : undefined,\n      couponEndDate: isSet(object.couponEndDate) ? fromJsonTimestamp(object.couponEndDate) : undefined,\n      couponPeriod: isSet(object.couponPeriod) ? globalThis.Number(object.couponPeriod) : 0,\n    };\n  },\n\n  toJSON(message: Coupon): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.couponDate !== undefined) {\n      obj.couponDate = message.couponDate.toISOString();\n    }\n    if (message.couponNumber !== 0) {\n      obj.couponNumber = Math.round(message.couponNumber);\n    }\n    if (message.fixDate !== undefined) {\n      obj.fixDate = message.fixDate.toISOString();\n    }\n    if (message.payOneBond !== undefined) {\n      obj.payOneBond = MoneyValue.toJSON(message.payOneBond);\n    }\n    if (message.couponType !== 0) {\n      obj.couponType = couponTypeToJSON(message.couponType);\n    }\n    if (message.couponStartDate !== undefined) {\n      obj.couponStartDate = message.couponStartDate.toISOString();\n    }\n    if (message.couponEndDate !== undefined) {\n      obj.couponEndDate = message.couponEndDate.toISOString();\n    }\n    if (message.couponPeriod !== 0) {\n      obj.couponPeriod = Math.round(message.couponPeriod);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Coupon>): Coupon {\n    return Coupon.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Coupon>): Coupon {\n    const message = createBaseCoupon();\n    message.figi = object.figi ?? \"\";\n    message.couponDate = object.couponDate ?? undefined;\n    message.couponNumber = object.couponNumber ?? 0;\n    message.fixDate = object.fixDate ?? undefined;\n    message.payOneBond = (object.payOneBond !== undefined && object.payOneBond !== null)\n      ? MoneyValue.fromPartial(object.payOneBond)\n      : undefined;\n    message.couponType = object.couponType ?? 0;\n    message.couponStartDate = object.couponStartDate ?? undefined;\n    message.couponEndDate = object.couponEndDate ?? undefined;\n    message.couponPeriod = object.couponPeriod ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseCurrencyResponse(): CurrencyResponse {\n  return { instrument: undefined };\n}\n\nexport const CurrencyResponse: MessageFns<CurrencyResponse> = {\n  encode(message: CurrencyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrument !== undefined) {\n      Currency.encode(message.instrument, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CurrencyResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCurrencyResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrument = Currency.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CurrencyResponse {\n    return { instrument: isSet(object.instrument) ? Currency.fromJSON(object.instrument) : undefined };\n  },\n\n  toJSON(message: CurrencyResponse): unknown {\n    const obj: any = {};\n    if (message.instrument !== undefined) {\n      obj.instrument = Currency.toJSON(message.instrument);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CurrencyResponse>): CurrencyResponse {\n    return CurrencyResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CurrencyResponse>): CurrencyResponse {\n    const message = createBaseCurrencyResponse();\n    message.instrument = (object.instrument !== undefined && object.instrument !== null)\n      ? Currency.fromPartial(object.instrument)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCurrenciesResponse(): CurrenciesResponse {\n  return { instruments: [] };\n}\n\nexport const CurrenciesResponse: MessageFns<CurrenciesResponse> = {\n  encode(message: CurrenciesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      Currency.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CurrenciesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCurrenciesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(Currency.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CurrenciesResponse {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => Currency.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: CurrenciesResponse): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => Currency.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CurrenciesResponse>): CurrenciesResponse {\n    return CurrenciesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CurrenciesResponse>): CurrenciesResponse {\n    const message = createBaseCurrenciesResponse();\n    message.instruments = object.instruments?.map((e) => Currency.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseEtfResponse(): EtfResponse {\n  return { instrument: undefined };\n}\n\nexport const EtfResponse: MessageFns<EtfResponse> = {\n  encode(message: EtfResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrument !== undefined) {\n      Etf.encode(message.instrument, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EtfResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEtfResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrument = Etf.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EtfResponse {\n    return { instrument: isSet(object.instrument) ? Etf.fromJSON(object.instrument) : undefined };\n  },\n\n  toJSON(message: EtfResponse): unknown {\n    const obj: any = {};\n    if (message.instrument !== undefined) {\n      obj.instrument = Etf.toJSON(message.instrument);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EtfResponse>): EtfResponse {\n    return EtfResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EtfResponse>): EtfResponse {\n    const message = createBaseEtfResponse();\n    message.instrument = (object.instrument !== undefined && object.instrument !== null)\n      ? Etf.fromPartial(object.instrument)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseEtfsResponse(): EtfsResponse {\n  return { instruments: [] };\n}\n\nexport const EtfsResponse: MessageFns<EtfsResponse> = {\n  encode(message: EtfsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      Etf.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EtfsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEtfsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(Etf.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EtfsResponse {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => Etf.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: EtfsResponse): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => Etf.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EtfsResponse>): EtfsResponse {\n    return EtfsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EtfsResponse>): EtfsResponse {\n    const message = createBaseEtfsResponse();\n    message.instruments = object.instruments?.map((e) => Etf.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseFutureResponse(): FutureResponse {\n  return { instrument: undefined };\n}\n\nexport const FutureResponse: MessageFns<FutureResponse> = {\n  encode(message: FutureResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrument !== undefined) {\n      Future.encode(message.instrument, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FutureResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFutureResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrument = Future.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FutureResponse {\n    return { instrument: isSet(object.instrument) ? Future.fromJSON(object.instrument) : undefined };\n  },\n\n  toJSON(message: FutureResponse): unknown {\n    const obj: any = {};\n    if (message.instrument !== undefined) {\n      obj.instrument = Future.toJSON(message.instrument);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FutureResponse>): FutureResponse {\n    return FutureResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FutureResponse>): FutureResponse {\n    const message = createBaseFutureResponse();\n    message.instrument = (object.instrument !== undefined && object.instrument !== null)\n      ? Future.fromPartial(object.instrument)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFuturesResponse(): FuturesResponse {\n  return { instruments: [] };\n}\n\nexport const FuturesResponse: MessageFns<FuturesResponse> = {\n  encode(message: FuturesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      Future.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FuturesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFuturesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(Future.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FuturesResponse {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => Future.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: FuturesResponse): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => Future.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FuturesResponse>): FuturesResponse {\n    return FuturesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FuturesResponse>): FuturesResponse {\n    const message = createBaseFuturesResponse();\n    message.instruments = object.instruments?.map((e) => Future.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOptionResponse(): OptionResponse {\n  return { instrument: undefined };\n}\n\nexport const OptionResponse: MessageFns<OptionResponse> = {\n  encode(message: OptionResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrument !== undefined) {\n      Option.encode(message.instrument, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OptionResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOptionResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrument = Option.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OptionResponse {\n    return { instrument: isSet(object.instrument) ? Option.fromJSON(object.instrument) : undefined };\n  },\n\n  toJSON(message: OptionResponse): unknown {\n    const obj: any = {};\n    if (message.instrument !== undefined) {\n      obj.instrument = Option.toJSON(message.instrument);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OptionResponse>): OptionResponse {\n    return OptionResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OptionResponse>): OptionResponse {\n    const message = createBaseOptionResponse();\n    message.instrument = (object.instrument !== undefined && object.instrument !== null)\n      ? Option.fromPartial(object.instrument)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOptionsResponse(): OptionsResponse {\n  return { instruments: [] };\n}\n\nexport const OptionsResponse: MessageFns<OptionsResponse> = {\n  encode(message: OptionsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      Option.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OptionsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOptionsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(Option.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OptionsResponse {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => Option.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: OptionsResponse): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => Option.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OptionsResponse>): OptionsResponse {\n    return OptionsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OptionsResponse>): OptionsResponse {\n    const message = createBaseOptionsResponse();\n    message.instruments = object.instruments?.map((e) => Option.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOption(): Option {\n  return {\n    uid: \"\",\n    positionUid: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    basicAssetPositionUid: \"\",\n    tradingStatus: 0,\n    realExchange: 0,\n    direction: 0,\n    paymentType: 0,\n    style: 0,\n    settlementType: 0,\n    name: \"\",\n    currency: \"\",\n    settlementCurrency: \"\",\n    assetType: \"\",\n    basicAsset: \"\",\n    exchange: \"\",\n    countryOfRisk: \"\",\n    countryOfRiskName: \"\",\n    sector: \"\",\n    brand: undefined,\n    lot: 0,\n    basicAssetSize: undefined,\n    klong: undefined,\n    kshort: undefined,\n    dlong: undefined,\n    dshort: undefined,\n    dlongMin: undefined,\n    dshortMin: undefined,\n    minPriceIncrement: undefined,\n    strikePrice: undefined,\n    dlongClient: undefined,\n    dshortClient: undefined,\n    expirationDate: undefined,\n    firstTradeDate: undefined,\n    lastTradeDate: undefined,\n    first1minCandleDate: undefined,\n    first1dayCandleDate: undefined,\n    shortEnabledFlag: false,\n    forIisFlag: false,\n    otcFlag: false,\n    buyAvailableFlag: false,\n    sellAvailableFlag: false,\n    forQualInvestorFlag: false,\n    weekendFlag: false,\n    blockedTcaFlag: false,\n    apiTradeAvailableFlag: false,\n  };\n}\n\nexport const Option: MessageFns<Option> = {\n  encode(message: Option, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.uid !== \"\") {\n      writer.uint32(10).string(message.uid);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(18).string(message.positionUid);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(26).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(34).string(message.classCode);\n    }\n    if (message.basicAssetPositionUid !== \"\") {\n      writer.uint32(42).string(message.basicAssetPositionUid);\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(168).int32(message.tradingStatus);\n    }\n    if (message.realExchange !== 0) {\n      writer.uint32(248).int32(message.realExchange);\n    }\n    if (message.direction !== 0) {\n      writer.uint32(328).int32(message.direction);\n    }\n    if (message.paymentType !== 0) {\n      writer.uint32(336).int32(message.paymentType);\n    }\n    if (message.style !== 0) {\n      writer.uint32(344).int32(message.style);\n    }\n    if (message.settlementType !== 0) {\n      writer.uint32(352).int32(message.settlementType);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(810).string(message.name);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(890).string(message.currency);\n    }\n    if (message.settlementCurrency !== \"\") {\n      writer.uint32(898).string(message.settlementCurrency);\n    }\n    if (message.assetType !== \"\") {\n      writer.uint32(1050).string(message.assetType);\n    }\n    if (message.basicAsset !== \"\") {\n      writer.uint32(1058).string(message.basicAsset);\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(1130).string(message.exchange);\n    }\n    if (message.countryOfRisk !== \"\") {\n      writer.uint32(1210).string(message.countryOfRisk);\n    }\n    if (message.countryOfRiskName !== \"\") {\n      writer.uint32(1218).string(message.countryOfRiskName);\n    }\n    if (message.sector !== \"\") {\n      writer.uint32(1290).string(message.sector);\n    }\n    if (message.brand !== undefined) {\n      BrandData.encode(message.brand, writer.uint32(1298).fork()).join();\n    }\n    if (message.lot !== 0) {\n      writer.uint32(1608).int32(message.lot);\n    }\n    if (message.basicAssetSize !== undefined) {\n      Quotation.encode(message.basicAssetSize, writer.uint32(1690).fork()).join();\n    }\n    if (message.klong !== undefined) {\n      Quotation.encode(message.klong, writer.uint32(1770).fork()).join();\n    }\n    if (message.kshort !== undefined) {\n      Quotation.encode(message.kshort, writer.uint32(1778).fork()).join();\n    }\n    if (message.dlong !== undefined) {\n      Quotation.encode(message.dlong, writer.uint32(1786).fork()).join();\n    }\n    if (message.dshort !== undefined) {\n      Quotation.encode(message.dshort, writer.uint32(1794).fork()).join();\n    }\n    if (message.dlongMin !== undefined) {\n      Quotation.encode(message.dlongMin, writer.uint32(1802).fork()).join();\n    }\n    if (message.dshortMin !== undefined) {\n      Quotation.encode(message.dshortMin, writer.uint32(1810).fork()).join();\n    }\n    if (message.minPriceIncrement !== undefined) {\n      Quotation.encode(message.minPriceIncrement, writer.uint32(1850).fork()).join();\n    }\n    if (message.strikePrice !== undefined) {\n      MoneyValue.encode(message.strikePrice, writer.uint32(1930).fork()).join();\n    }\n    if (message.dlongClient !== undefined) {\n      Quotation.encode(message.dlongClient, writer.uint32(2322).fork()).join();\n    }\n    if (message.dshortClient !== undefined) {\n      Quotation.encode(message.dshortClient, writer.uint32(2330).fork()).join();\n    }\n    if (message.expirationDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.expirationDate), writer.uint32(2410).fork()).join();\n    }\n    if (message.firstTradeDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.firstTradeDate), writer.uint32(2490).fork()).join();\n    }\n    if (message.lastTradeDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.lastTradeDate), writer.uint32(2498).fork()).join();\n    }\n    if (message.first1minCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1minCandleDate), writer.uint32(2570).fork()).join();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1dayCandleDate), writer.uint32(2578).fork()).join();\n    }\n    if (message.shortEnabledFlag !== false) {\n      writer.uint32(3208).bool(message.shortEnabledFlag);\n    }\n    if (message.forIisFlag !== false) {\n      writer.uint32(3216).bool(message.forIisFlag);\n    }\n    if (message.otcFlag !== false) {\n      writer.uint32(3224).bool(message.otcFlag);\n    }\n    if (message.buyAvailableFlag !== false) {\n      writer.uint32(3232).bool(message.buyAvailableFlag);\n    }\n    if (message.sellAvailableFlag !== false) {\n      writer.uint32(3240).bool(message.sellAvailableFlag);\n    }\n    if (message.forQualInvestorFlag !== false) {\n      writer.uint32(3248).bool(message.forQualInvestorFlag);\n    }\n    if (message.weekendFlag !== false) {\n      writer.uint32(3256).bool(message.weekendFlag);\n    }\n    if (message.blockedTcaFlag !== false) {\n      writer.uint32(3264).bool(message.blockedTcaFlag);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(3272).bool(message.apiTradeAvailableFlag);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Option {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOption();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.basicAssetPositionUid = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 168) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 31: {\n          if (tag !== 248) {\n            break;\n          }\n\n          message.realExchange = reader.int32() as any;\n          continue;\n        }\n        case 41: {\n          if (tag !== 328) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 42: {\n          if (tag !== 336) {\n            break;\n          }\n\n          message.paymentType = reader.int32() as any;\n          continue;\n        }\n        case 43: {\n          if (tag !== 344) {\n            break;\n          }\n\n          message.style = reader.int32() as any;\n          continue;\n        }\n        case 44: {\n          if (tag !== 352) {\n            break;\n          }\n\n          message.settlementType = reader.int32() as any;\n          continue;\n        }\n        case 101: {\n          if (tag !== 810) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 111: {\n          if (tag !== 890) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 112: {\n          if (tag !== 898) {\n            break;\n          }\n\n          message.settlementCurrency = reader.string();\n          continue;\n        }\n        case 131: {\n          if (tag !== 1050) {\n            break;\n          }\n\n          message.assetType = reader.string();\n          continue;\n        }\n        case 132: {\n          if (tag !== 1058) {\n            break;\n          }\n\n          message.basicAsset = reader.string();\n          continue;\n        }\n        case 141: {\n          if (tag !== 1130) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 151: {\n          if (tag !== 1210) {\n            break;\n          }\n\n          message.countryOfRisk = reader.string();\n          continue;\n        }\n        case 152: {\n          if (tag !== 1218) {\n            break;\n          }\n\n          message.countryOfRiskName = reader.string();\n          continue;\n        }\n        case 161: {\n          if (tag !== 1290) {\n            break;\n          }\n\n          message.sector = reader.string();\n          continue;\n        }\n        case 162: {\n          if (tag !== 1298) {\n            break;\n          }\n\n          message.brand = BrandData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 201: {\n          if (tag !== 1608) {\n            break;\n          }\n\n          message.lot = reader.int32();\n          continue;\n        }\n        case 211: {\n          if (tag !== 1690) {\n            break;\n          }\n\n          message.basicAssetSize = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 221: {\n          if (tag !== 1770) {\n            break;\n          }\n\n          message.klong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 222: {\n          if (tag !== 1778) {\n            break;\n          }\n\n          message.kshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 223: {\n          if (tag !== 1786) {\n            break;\n          }\n\n          message.dlong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 224: {\n          if (tag !== 1794) {\n            break;\n          }\n\n          message.dshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 225: {\n          if (tag !== 1802) {\n            break;\n          }\n\n          message.dlongMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 226: {\n          if (tag !== 1810) {\n            break;\n          }\n\n          message.dshortMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 231: {\n          if (tag !== 1850) {\n            break;\n          }\n\n          message.minPriceIncrement = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 241: {\n          if (tag !== 1930) {\n            break;\n          }\n\n          message.strikePrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 290: {\n          if (tag !== 2322) {\n            break;\n          }\n\n          message.dlongClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 291: {\n          if (tag !== 2330) {\n            break;\n          }\n\n          message.dshortClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 301: {\n          if (tag !== 2410) {\n            break;\n          }\n\n          message.expirationDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 311: {\n          if (tag !== 2490) {\n            break;\n          }\n\n          message.firstTradeDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 312: {\n          if (tag !== 2498) {\n            break;\n          }\n\n          message.lastTradeDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 321: {\n          if (tag !== 2570) {\n            break;\n          }\n\n          message.first1minCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 322: {\n          if (tag !== 2578) {\n            break;\n          }\n\n          message.first1dayCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 401: {\n          if (tag !== 3208) {\n            break;\n          }\n\n          message.shortEnabledFlag = reader.bool();\n          continue;\n        }\n        case 402: {\n          if (tag !== 3216) {\n            break;\n          }\n\n          message.forIisFlag = reader.bool();\n          continue;\n        }\n        case 403: {\n          if (tag !== 3224) {\n            break;\n          }\n\n          message.otcFlag = reader.bool();\n          continue;\n        }\n        case 404: {\n          if (tag !== 3232) {\n            break;\n          }\n\n          message.buyAvailableFlag = reader.bool();\n          continue;\n        }\n        case 405: {\n          if (tag !== 3240) {\n            break;\n          }\n\n          message.sellAvailableFlag = reader.bool();\n          continue;\n        }\n        case 406: {\n          if (tag !== 3248) {\n            break;\n          }\n\n          message.forQualInvestorFlag = reader.bool();\n          continue;\n        }\n        case 407: {\n          if (tag !== 3256) {\n            break;\n          }\n\n          message.weekendFlag = reader.bool();\n          continue;\n        }\n        case 408: {\n          if (tag !== 3264) {\n            break;\n          }\n\n          message.blockedTcaFlag = reader.bool();\n          continue;\n        }\n        case 409: {\n          if (tag !== 3272) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Option {\n    return {\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      basicAssetPositionUid: isSet(object.basicAssetPositionUid) ? globalThis.String(object.basicAssetPositionUid) : \"\",\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      realExchange: isSet(object.realExchange) ? realExchangeFromJSON(object.realExchange) : 0,\n      direction: isSet(object.direction) ? optionDirectionFromJSON(object.direction) : 0,\n      paymentType: isSet(object.paymentType) ? optionPaymentTypeFromJSON(object.paymentType) : 0,\n      style: isSet(object.style) ? optionStyleFromJSON(object.style) : 0,\n      settlementType: isSet(object.settlementType) ? optionSettlementTypeFromJSON(object.settlementType) : 0,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      settlementCurrency: isSet(object.settlementCurrency) ? globalThis.String(object.settlementCurrency) : \"\",\n      assetType: isSet(object.assetType) ? globalThis.String(object.assetType) : \"\",\n      basicAsset: isSet(object.basicAsset) ? globalThis.String(object.basicAsset) : \"\",\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      countryOfRisk: isSet(object.countryOfRisk) ? globalThis.String(object.countryOfRisk) : \"\",\n      countryOfRiskName: isSet(object.countryOfRiskName) ? globalThis.String(object.countryOfRiskName) : \"\",\n      sector: isSet(object.sector) ? globalThis.String(object.sector) : \"\",\n      brand: isSet(object.brand) ? BrandData.fromJSON(object.brand) : undefined,\n      lot: isSet(object.lot) ? globalThis.Number(object.lot) : 0,\n      basicAssetSize: isSet(object.basicAssetSize) ? Quotation.fromJSON(object.basicAssetSize) : undefined,\n      klong: isSet(object.klong) ? Quotation.fromJSON(object.klong) : undefined,\n      kshort: isSet(object.kshort) ? Quotation.fromJSON(object.kshort) : undefined,\n      dlong: isSet(object.dlong) ? Quotation.fromJSON(object.dlong) : undefined,\n      dshort: isSet(object.dshort) ? Quotation.fromJSON(object.dshort) : undefined,\n      dlongMin: isSet(object.dlongMin) ? Quotation.fromJSON(object.dlongMin) : undefined,\n      dshortMin: isSet(object.dshortMin) ? Quotation.fromJSON(object.dshortMin) : undefined,\n      minPriceIncrement: isSet(object.minPriceIncrement) ? Quotation.fromJSON(object.minPriceIncrement) : undefined,\n      strikePrice: isSet(object.strikePrice) ? MoneyValue.fromJSON(object.strikePrice) : undefined,\n      dlongClient: isSet(object.dlongClient) ? Quotation.fromJSON(object.dlongClient) : undefined,\n      dshortClient: isSet(object.dshortClient) ? Quotation.fromJSON(object.dshortClient) : undefined,\n      expirationDate: isSet(object.expirationDate) ? fromJsonTimestamp(object.expirationDate) : undefined,\n      firstTradeDate: isSet(object.firstTradeDate) ? fromJsonTimestamp(object.firstTradeDate) : undefined,\n      lastTradeDate: isSet(object.lastTradeDate) ? fromJsonTimestamp(object.lastTradeDate) : undefined,\n      first1minCandleDate: isSet(object.first1minCandleDate)\n        ? fromJsonTimestamp(object.first1minCandleDate)\n        : undefined,\n      first1dayCandleDate: isSet(object.first1dayCandleDate)\n        ? fromJsonTimestamp(object.first1dayCandleDate)\n        : undefined,\n      shortEnabledFlag: isSet(object.shortEnabledFlag) ? globalThis.Boolean(object.shortEnabledFlag) : false,\n      forIisFlag: isSet(object.forIisFlag) ? globalThis.Boolean(object.forIisFlag) : false,\n      otcFlag: isSet(object.otcFlag) ? globalThis.Boolean(object.otcFlag) : false,\n      buyAvailableFlag: isSet(object.buyAvailableFlag) ? globalThis.Boolean(object.buyAvailableFlag) : false,\n      sellAvailableFlag: isSet(object.sellAvailableFlag) ? globalThis.Boolean(object.sellAvailableFlag) : false,\n      forQualInvestorFlag: isSet(object.forQualInvestorFlag) ? globalThis.Boolean(object.forQualInvestorFlag) : false,\n      weekendFlag: isSet(object.weekendFlag) ? globalThis.Boolean(object.weekendFlag) : false,\n      blockedTcaFlag: isSet(object.blockedTcaFlag) ? globalThis.Boolean(object.blockedTcaFlag) : false,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n    };\n  },\n\n  toJSON(message: Option): unknown {\n    const obj: any = {};\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.basicAssetPositionUid !== \"\") {\n      obj.basicAssetPositionUid = message.basicAssetPositionUid;\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.realExchange !== 0) {\n      obj.realExchange = realExchangeToJSON(message.realExchange);\n    }\n    if (message.direction !== 0) {\n      obj.direction = optionDirectionToJSON(message.direction);\n    }\n    if (message.paymentType !== 0) {\n      obj.paymentType = optionPaymentTypeToJSON(message.paymentType);\n    }\n    if (message.style !== 0) {\n      obj.style = optionStyleToJSON(message.style);\n    }\n    if (message.settlementType !== 0) {\n      obj.settlementType = optionSettlementTypeToJSON(message.settlementType);\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.settlementCurrency !== \"\") {\n      obj.settlementCurrency = message.settlementCurrency;\n    }\n    if (message.assetType !== \"\") {\n      obj.assetType = message.assetType;\n    }\n    if (message.basicAsset !== \"\") {\n      obj.basicAsset = message.basicAsset;\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.countryOfRisk !== \"\") {\n      obj.countryOfRisk = message.countryOfRisk;\n    }\n    if (message.countryOfRiskName !== \"\") {\n      obj.countryOfRiskName = message.countryOfRiskName;\n    }\n    if (message.sector !== \"\") {\n      obj.sector = message.sector;\n    }\n    if (message.brand !== undefined) {\n      obj.brand = BrandData.toJSON(message.brand);\n    }\n    if (message.lot !== 0) {\n      obj.lot = Math.round(message.lot);\n    }\n    if (message.basicAssetSize !== undefined) {\n      obj.basicAssetSize = Quotation.toJSON(message.basicAssetSize);\n    }\n    if (message.klong !== undefined) {\n      obj.klong = Quotation.toJSON(message.klong);\n    }\n    if (message.kshort !== undefined) {\n      obj.kshort = Quotation.toJSON(message.kshort);\n    }\n    if (message.dlong !== undefined) {\n      obj.dlong = Quotation.toJSON(message.dlong);\n    }\n    if (message.dshort !== undefined) {\n      obj.dshort = Quotation.toJSON(message.dshort);\n    }\n    if (message.dlongMin !== undefined) {\n      obj.dlongMin = Quotation.toJSON(message.dlongMin);\n    }\n    if (message.dshortMin !== undefined) {\n      obj.dshortMin = Quotation.toJSON(message.dshortMin);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      obj.minPriceIncrement = Quotation.toJSON(message.minPriceIncrement);\n    }\n    if (message.strikePrice !== undefined) {\n      obj.strikePrice = MoneyValue.toJSON(message.strikePrice);\n    }\n    if (message.dlongClient !== undefined) {\n      obj.dlongClient = Quotation.toJSON(message.dlongClient);\n    }\n    if (message.dshortClient !== undefined) {\n      obj.dshortClient = Quotation.toJSON(message.dshortClient);\n    }\n    if (message.expirationDate !== undefined) {\n      obj.expirationDate = message.expirationDate.toISOString();\n    }\n    if (message.firstTradeDate !== undefined) {\n      obj.firstTradeDate = message.firstTradeDate.toISOString();\n    }\n    if (message.lastTradeDate !== undefined) {\n      obj.lastTradeDate = message.lastTradeDate.toISOString();\n    }\n    if (message.first1minCandleDate !== undefined) {\n      obj.first1minCandleDate = message.first1minCandleDate.toISOString();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      obj.first1dayCandleDate = message.first1dayCandleDate.toISOString();\n    }\n    if (message.shortEnabledFlag !== false) {\n      obj.shortEnabledFlag = message.shortEnabledFlag;\n    }\n    if (message.forIisFlag !== false) {\n      obj.forIisFlag = message.forIisFlag;\n    }\n    if (message.otcFlag !== false) {\n      obj.otcFlag = message.otcFlag;\n    }\n    if (message.buyAvailableFlag !== false) {\n      obj.buyAvailableFlag = message.buyAvailableFlag;\n    }\n    if (message.sellAvailableFlag !== false) {\n      obj.sellAvailableFlag = message.sellAvailableFlag;\n    }\n    if (message.forQualInvestorFlag !== false) {\n      obj.forQualInvestorFlag = message.forQualInvestorFlag;\n    }\n    if (message.weekendFlag !== false) {\n      obj.weekendFlag = message.weekendFlag;\n    }\n    if (message.blockedTcaFlag !== false) {\n      obj.blockedTcaFlag = message.blockedTcaFlag;\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Option>): Option {\n    return Option.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Option>): Option {\n    const message = createBaseOption();\n    message.uid = object.uid ?? \"\";\n    message.positionUid = object.positionUid ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.basicAssetPositionUid = object.basicAssetPositionUid ?? \"\";\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.realExchange = object.realExchange ?? 0;\n    message.direction = object.direction ?? 0;\n    message.paymentType = object.paymentType ?? 0;\n    message.style = object.style ?? 0;\n    message.settlementType = object.settlementType ?? 0;\n    message.name = object.name ?? \"\";\n    message.currency = object.currency ?? \"\";\n    message.settlementCurrency = object.settlementCurrency ?? \"\";\n    message.assetType = object.assetType ?? \"\";\n    message.basicAsset = object.basicAsset ?? \"\";\n    message.exchange = object.exchange ?? \"\";\n    message.countryOfRisk = object.countryOfRisk ?? \"\";\n    message.countryOfRiskName = object.countryOfRiskName ?? \"\";\n    message.sector = object.sector ?? \"\";\n    message.brand = (object.brand !== undefined && object.brand !== null)\n      ? BrandData.fromPartial(object.brand)\n      : undefined;\n    message.lot = object.lot ?? 0;\n    message.basicAssetSize = (object.basicAssetSize !== undefined && object.basicAssetSize !== null)\n      ? Quotation.fromPartial(object.basicAssetSize)\n      : undefined;\n    message.klong = (object.klong !== undefined && object.klong !== null)\n      ? Quotation.fromPartial(object.klong)\n      : undefined;\n    message.kshort = (object.kshort !== undefined && object.kshort !== null)\n      ? Quotation.fromPartial(object.kshort)\n      : undefined;\n    message.dlong = (object.dlong !== undefined && object.dlong !== null)\n      ? Quotation.fromPartial(object.dlong)\n      : undefined;\n    message.dshort = (object.dshort !== undefined && object.dshort !== null)\n      ? Quotation.fromPartial(object.dshort)\n      : undefined;\n    message.dlongMin = (object.dlongMin !== undefined && object.dlongMin !== null)\n      ? Quotation.fromPartial(object.dlongMin)\n      : undefined;\n    message.dshortMin = (object.dshortMin !== undefined && object.dshortMin !== null)\n      ? Quotation.fromPartial(object.dshortMin)\n      : undefined;\n    message.minPriceIncrement = (object.minPriceIncrement !== undefined && object.minPriceIncrement !== null)\n      ? Quotation.fromPartial(object.minPriceIncrement)\n      : undefined;\n    message.strikePrice = (object.strikePrice !== undefined && object.strikePrice !== null)\n      ? MoneyValue.fromPartial(object.strikePrice)\n      : undefined;\n    message.dlongClient = (object.dlongClient !== undefined && object.dlongClient !== null)\n      ? Quotation.fromPartial(object.dlongClient)\n      : undefined;\n    message.dshortClient = (object.dshortClient !== undefined && object.dshortClient !== null)\n      ? Quotation.fromPartial(object.dshortClient)\n      : undefined;\n    message.expirationDate = object.expirationDate ?? undefined;\n    message.firstTradeDate = object.firstTradeDate ?? undefined;\n    message.lastTradeDate = object.lastTradeDate ?? undefined;\n    message.first1minCandleDate = object.first1minCandleDate ?? undefined;\n    message.first1dayCandleDate = object.first1dayCandleDate ?? undefined;\n    message.shortEnabledFlag = object.shortEnabledFlag ?? false;\n    message.forIisFlag = object.forIisFlag ?? false;\n    message.otcFlag = object.otcFlag ?? false;\n    message.buyAvailableFlag = object.buyAvailableFlag ?? false;\n    message.sellAvailableFlag = object.sellAvailableFlag ?? false;\n    message.forQualInvestorFlag = object.forQualInvestorFlag ?? false;\n    message.weekendFlag = object.weekendFlag ?? false;\n    message.blockedTcaFlag = object.blockedTcaFlag ?? false;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    return message;\n  },\n};\n\nfunction createBaseShareResponse(): ShareResponse {\n  return { instrument: undefined };\n}\n\nexport const ShareResponse: MessageFns<ShareResponse> = {\n  encode(message: ShareResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrument !== undefined) {\n      Share.encode(message.instrument, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ShareResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseShareResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrument = Share.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ShareResponse {\n    return { instrument: isSet(object.instrument) ? Share.fromJSON(object.instrument) : undefined };\n  },\n\n  toJSON(message: ShareResponse): unknown {\n    const obj: any = {};\n    if (message.instrument !== undefined) {\n      obj.instrument = Share.toJSON(message.instrument);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ShareResponse>): ShareResponse {\n    return ShareResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ShareResponse>): ShareResponse {\n    const message = createBaseShareResponse();\n    message.instrument = (object.instrument !== undefined && object.instrument !== null)\n      ? Share.fromPartial(object.instrument)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSharesResponse(): SharesResponse {\n  return { instruments: [] };\n}\n\nexport const SharesResponse: MessageFns<SharesResponse> = {\n  encode(message: SharesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      Share.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SharesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSharesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(Share.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SharesResponse {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => Share.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: SharesResponse): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => Share.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SharesResponse>): SharesResponse {\n    return SharesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SharesResponse>): SharesResponse {\n    const message = createBaseSharesResponse();\n    message.instruments = object.instruments?.map((e) => Share.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseBond(): Bond {\n  return {\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    isin: \"\",\n    lot: 0,\n    currency: \"\",\n    klong: undefined,\n    kshort: undefined,\n    dlong: undefined,\n    dshort: undefined,\n    dlongMin: undefined,\n    dshortMin: undefined,\n    shortEnabledFlag: false,\n    name: \"\",\n    exchange: \"\",\n    couponQuantityPerYear: 0,\n    maturityDate: undefined,\n    nominal: undefined,\n    initialNominal: undefined,\n    stateRegDate: undefined,\n    placementDate: undefined,\n    placementPrice: undefined,\n    aciValue: undefined,\n    countryOfRisk: \"\",\n    countryOfRiskName: \"\",\n    sector: \"\",\n    issueKind: \"\",\n    issueSize: 0,\n    issueSizePlan: 0,\n    tradingStatus: 0,\n    otcFlag: false,\n    buyAvailableFlag: false,\n    sellAvailableFlag: false,\n    floatingCouponFlag: false,\n    perpetualFlag: false,\n    amortizationFlag: false,\n    minPriceIncrement: undefined,\n    apiTradeAvailableFlag: false,\n    uid: \"\",\n    realExchange: 0,\n    positionUid: \"\",\n    assetUid: \"\",\n    forIisFlag: false,\n    forQualInvestorFlag: false,\n    weekendFlag: false,\n    blockedTcaFlag: false,\n    subordinatedFlag: false,\n    liquidityFlag: false,\n    first1minCandleDate: undefined,\n    first1dayCandleDate: undefined,\n    riskLevel: 0,\n    brand: undefined,\n    bondType: 0,\n    callDate: undefined,\n    dlongClient: undefined,\n    dshortClient: undefined,\n  };\n}\n\nexport const Bond: MessageFns<Bond> = {\n  encode(message: Bond, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(26).string(message.classCode);\n    }\n    if (message.isin !== \"\") {\n      writer.uint32(34).string(message.isin);\n    }\n    if (message.lot !== 0) {\n      writer.uint32(40).int32(message.lot);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(50).string(message.currency);\n    }\n    if (message.klong !== undefined) {\n      Quotation.encode(message.klong, writer.uint32(58).fork()).join();\n    }\n    if (message.kshort !== undefined) {\n      Quotation.encode(message.kshort, writer.uint32(66).fork()).join();\n    }\n    if (message.dlong !== undefined) {\n      Quotation.encode(message.dlong, writer.uint32(74).fork()).join();\n    }\n    if (message.dshort !== undefined) {\n      Quotation.encode(message.dshort, writer.uint32(82).fork()).join();\n    }\n    if (message.dlongMin !== undefined) {\n      Quotation.encode(message.dlongMin, writer.uint32(90).fork()).join();\n    }\n    if (message.dshortMin !== undefined) {\n      Quotation.encode(message.dshortMin, writer.uint32(98).fork()).join();\n    }\n    if (message.shortEnabledFlag !== false) {\n      writer.uint32(104).bool(message.shortEnabledFlag);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(122).string(message.name);\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(130).string(message.exchange);\n    }\n    if (message.couponQuantityPerYear !== 0) {\n      writer.uint32(136).int32(message.couponQuantityPerYear);\n    }\n    if (message.maturityDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.maturityDate), writer.uint32(146).fork()).join();\n    }\n    if (message.nominal !== undefined) {\n      MoneyValue.encode(message.nominal, writer.uint32(154).fork()).join();\n    }\n    if (message.initialNominal !== undefined) {\n      MoneyValue.encode(message.initialNominal, writer.uint32(162).fork()).join();\n    }\n    if (message.stateRegDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.stateRegDate), writer.uint32(170).fork()).join();\n    }\n    if (message.placementDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.placementDate), writer.uint32(178).fork()).join();\n    }\n    if (message.placementPrice !== undefined) {\n      MoneyValue.encode(message.placementPrice, writer.uint32(186).fork()).join();\n    }\n    if (message.aciValue !== undefined) {\n      MoneyValue.encode(message.aciValue, writer.uint32(194).fork()).join();\n    }\n    if (message.countryOfRisk !== \"\") {\n      writer.uint32(202).string(message.countryOfRisk);\n    }\n    if (message.countryOfRiskName !== \"\") {\n      writer.uint32(210).string(message.countryOfRiskName);\n    }\n    if (message.sector !== \"\") {\n      writer.uint32(218).string(message.sector);\n    }\n    if (message.issueKind !== \"\") {\n      writer.uint32(226).string(message.issueKind);\n    }\n    if (message.issueSize !== 0) {\n      writer.uint32(232).int64(message.issueSize);\n    }\n    if (message.issueSizePlan !== 0) {\n      writer.uint32(240).int64(message.issueSizePlan);\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(248).int32(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      writer.uint32(256).bool(message.otcFlag);\n    }\n    if (message.buyAvailableFlag !== false) {\n      writer.uint32(264).bool(message.buyAvailableFlag);\n    }\n    if (message.sellAvailableFlag !== false) {\n      writer.uint32(272).bool(message.sellAvailableFlag);\n    }\n    if (message.floatingCouponFlag !== false) {\n      writer.uint32(280).bool(message.floatingCouponFlag);\n    }\n    if (message.perpetualFlag !== false) {\n      writer.uint32(288).bool(message.perpetualFlag);\n    }\n    if (message.amortizationFlag !== false) {\n      writer.uint32(296).bool(message.amortizationFlag);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      Quotation.encode(message.minPriceIncrement, writer.uint32(306).fork()).join();\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(312).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(322).string(message.uid);\n    }\n    if (message.realExchange !== 0) {\n      writer.uint32(328).int32(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(338).string(message.positionUid);\n    }\n    if (message.assetUid !== \"\") {\n      writer.uint32(346).string(message.assetUid);\n    }\n    if (message.forIisFlag !== false) {\n      writer.uint32(408).bool(message.forIisFlag);\n    }\n    if (message.forQualInvestorFlag !== false) {\n      writer.uint32(416).bool(message.forQualInvestorFlag);\n    }\n    if (message.weekendFlag !== false) {\n      writer.uint32(424).bool(message.weekendFlag);\n    }\n    if (message.blockedTcaFlag !== false) {\n      writer.uint32(432).bool(message.blockedTcaFlag);\n    }\n    if (message.subordinatedFlag !== false) {\n      writer.uint32(440).bool(message.subordinatedFlag);\n    }\n    if (message.liquidityFlag !== false) {\n      writer.uint32(448).bool(message.liquidityFlag);\n    }\n    if (message.first1minCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1minCandleDate), writer.uint32(490).fork()).join();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1dayCandleDate), writer.uint32(498).fork()).join();\n    }\n    if (message.riskLevel !== 0) {\n      writer.uint32(504).int32(message.riskLevel);\n    }\n    if (message.brand !== undefined) {\n      BrandData.encode(message.brand, writer.uint32(514).fork()).join();\n    }\n    if (message.bondType !== 0) {\n      writer.uint32(520).int32(message.bondType);\n    }\n    if (message.callDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.callDate), writer.uint32(554).fork()).join();\n    }\n    if (message.dlongClient !== undefined) {\n      Quotation.encode(message.dlongClient, writer.uint32(722).fork()).join();\n    }\n    if (message.dshortClient !== undefined) {\n      Quotation.encode(message.dshortClient, writer.uint32(730).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Bond {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBond();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.lot = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.klong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.kshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.dlong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.dshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.dlongMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.dshortMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.shortEnabledFlag = reader.bool();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 136) {\n            break;\n          }\n\n          message.couponQuantityPerYear = reader.int32();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.maturityDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.nominal = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.initialNominal = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.stateRegDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.placementDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.placementPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.aciValue = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          message.countryOfRisk = reader.string();\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          message.countryOfRiskName = reader.string();\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.sector = reader.string();\n          continue;\n        }\n        case 28: {\n          if (tag !== 226) {\n            break;\n          }\n\n          message.issueKind = reader.string();\n          continue;\n        }\n        case 29: {\n          if (tag !== 232) {\n            break;\n          }\n\n          message.issueSize = longToNumber(reader.int64());\n          continue;\n        }\n        case 30: {\n          if (tag !== 240) {\n            break;\n          }\n\n          message.issueSizePlan = longToNumber(reader.int64());\n          continue;\n        }\n        case 31: {\n          if (tag !== 248) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 32: {\n          if (tag !== 256) {\n            break;\n          }\n\n          message.otcFlag = reader.bool();\n          continue;\n        }\n        case 33: {\n          if (tag !== 264) {\n            break;\n          }\n\n          message.buyAvailableFlag = reader.bool();\n          continue;\n        }\n        case 34: {\n          if (tag !== 272) {\n            break;\n          }\n\n          message.sellAvailableFlag = reader.bool();\n          continue;\n        }\n        case 35: {\n          if (tag !== 280) {\n            break;\n          }\n\n          message.floatingCouponFlag = reader.bool();\n          continue;\n        }\n        case 36: {\n          if (tag !== 288) {\n            break;\n          }\n\n          message.perpetualFlag = reader.bool();\n          continue;\n        }\n        case 37: {\n          if (tag !== 296) {\n            break;\n          }\n\n          message.amortizationFlag = reader.bool();\n          continue;\n        }\n        case 38: {\n          if (tag !== 306) {\n            break;\n          }\n\n          message.minPriceIncrement = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 39: {\n          if (tag !== 312) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 40: {\n          if (tag !== 322) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 41: {\n          if (tag !== 328) {\n            break;\n          }\n\n          message.realExchange = reader.int32() as any;\n          continue;\n        }\n        case 42: {\n          if (tag !== 338) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 43: {\n          if (tag !== 346) {\n            break;\n          }\n\n          message.assetUid = reader.string();\n          continue;\n        }\n        case 51: {\n          if (tag !== 408) {\n            break;\n          }\n\n          message.forIisFlag = reader.bool();\n          continue;\n        }\n        case 52: {\n          if (tag !== 416) {\n            break;\n          }\n\n          message.forQualInvestorFlag = reader.bool();\n          continue;\n        }\n        case 53: {\n          if (tag !== 424) {\n            break;\n          }\n\n          message.weekendFlag = reader.bool();\n          continue;\n        }\n        case 54: {\n          if (tag !== 432) {\n            break;\n          }\n\n          message.blockedTcaFlag = reader.bool();\n          continue;\n        }\n        case 55: {\n          if (tag !== 440) {\n            break;\n          }\n\n          message.subordinatedFlag = reader.bool();\n          continue;\n        }\n        case 56: {\n          if (tag !== 448) {\n            break;\n          }\n\n          message.liquidityFlag = reader.bool();\n          continue;\n        }\n        case 61: {\n          if (tag !== 490) {\n            break;\n          }\n\n          message.first1minCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 62: {\n          if (tag !== 498) {\n            break;\n          }\n\n          message.first1dayCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 63: {\n          if (tag !== 504) {\n            break;\n          }\n\n          message.riskLevel = reader.int32() as any;\n          continue;\n        }\n        case 64: {\n          if (tag !== 514) {\n            break;\n          }\n\n          message.brand = BrandData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 65: {\n          if (tag !== 520) {\n            break;\n          }\n\n          message.bondType = reader.int32() as any;\n          continue;\n        }\n        case 69: {\n          if (tag !== 554) {\n            break;\n          }\n\n          message.callDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 90: {\n          if (tag !== 722) {\n            break;\n          }\n\n          message.dlongClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 91: {\n          if (tag !== 730) {\n            break;\n          }\n\n          message.dshortClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Bond {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      lot: isSet(object.lot) ? globalThis.Number(object.lot) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      klong: isSet(object.klong) ? Quotation.fromJSON(object.klong) : undefined,\n      kshort: isSet(object.kshort) ? Quotation.fromJSON(object.kshort) : undefined,\n      dlong: isSet(object.dlong) ? Quotation.fromJSON(object.dlong) : undefined,\n      dshort: isSet(object.dshort) ? Quotation.fromJSON(object.dshort) : undefined,\n      dlongMin: isSet(object.dlongMin) ? Quotation.fromJSON(object.dlongMin) : undefined,\n      dshortMin: isSet(object.dshortMin) ? Quotation.fromJSON(object.dshortMin) : undefined,\n      shortEnabledFlag: isSet(object.shortEnabledFlag) ? globalThis.Boolean(object.shortEnabledFlag) : false,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      couponQuantityPerYear: isSet(object.couponQuantityPerYear) ? globalThis.Number(object.couponQuantityPerYear) : 0,\n      maturityDate: isSet(object.maturityDate) ? fromJsonTimestamp(object.maturityDate) : undefined,\n      nominal: isSet(object.nominal) ? MoneyValue.fromJSON(object.nominal) : undefined,\n      initialNominal: isSet(object.initialNominal) ? MoneyValue.fromJSON(object.initialNominal) : undefined,\n      stateRegDate: isSet(object.stateRegDate) ? fromJsonTimestamp(object.stateRegDate) : undefined,\n      placementDate: isSet(object.placementDate) ? fromJsonTimestamp(object.placementDate) : undefined,\n      placementPrice: isSet(object.placementPrice) ? MoneyValue.fromJSON(object.placementPrice) : undefined,\n      aciValue: isSet(object.aciValue) ? MoneyValue.fromJSON(object.aciValue) : undefined,\n      countryOfRisk: isSet(object.countryOfRisk) ? globalThis.String(object.countryOfRisk) : \"\",\n      countryOfRiskName: isSet(object.countryOfRiskName) ? globalThis.String(object.countryOfRiskName) : \"\",\n      sector: isSet(object.sector) ? globalThis.String(object.sector) : \"\",\n      issueKind: isSet(object.issueKind) ? globalThis.String(object.issueKind) : \"\",\n      issueSize: isSet(object.issueSize) ? globalThis.Number(object.issueSize) : 0,\n      issueSizePlan: isSet(object.issueSizePlan) ? globalThis.Number(object.issueSizePlan) : 0,\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      otcFlag: isSet(object.otcFlag) ? globalThis.Boolean(object.otcFlag) : false,\n      buyAvailableFlag: isSet(object.buyAvailableFlag) ? globalThis.Boolean(object.buyAvailableFlag) : false,\n      sellAvailableFlag: isSet(object.sellAvailableFlag) ? globalThis.Boolean(object.sellAvailableFlag) : false,\n      floatingCouponFlag: isSet(object.floatingCouponFlag) ? globalThis.Boolean(object.floatingCouponFlag) : false,\n      perpetualFlag: isSet(object.perpetualFlag) ? globalThis.Boolean(object.perpetualFlag) : false,\n      amortizationFlag: isSet(object.amortizationFlag) ? globalThis.Boolean(object.amortizationFlag) : false,\n      minPriceIncrement: isSet(object.minPriceIncrement) ? Quotation.fromJSON(object.minPriceIncrement) : undefined,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      realExchange: isSet(object.realExchange) ? realExchangeFromJSON(object.realExchange) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      assetUid: isSet(object.assetUid) ? globalThis.String(object.assetUid) : \"\",\n      forIisFlag: isSet(object.forIisFlag) ? globalThis.Boolean(object.forIisFlag) : false,\n      forQualInvestorFlag: isSet(object.forQualInvestorFlag) ? globalThis.Boolean(object.forQualInvestorFlag) : false,\n      weekendFlag: isSet(object.weekendFlag) ? globalThis.Boolean(object.weekendFlag) : false,\n      blockedTcaFlag: isSet(object.blockedTcaFlag) ? globalThis.Boolean(object.blockedTcaFlag) : false,\n      subordinatedFlag: isSet(object.subordinatedFlag) ? globalThis.Boolean(object.subordinatedFlag) : false,\n      liquidityFlag: isSet(object.liquidityFlag) ? globalThis.Boolean(object.liquidityFlag) : false,\n      first1minCandleDate: isSet(object.first1minCandleDate)\n        ? fromJsonTimestamp(object.first1minCandleDate)\n        : undefined,\n      first1dayCandleDate: isSet(object.first1dayCandleDate)\n        ? fromJsonTimestamp(object.first1dayCandleDate)\n        : undefined,\n      riskLevel: isSet(object.riskLevel) ? riskLevelFromJSON(object.riskLevel) : 0,\n      brand: isSet(object.brand) ? BrandData.fromJSON(object.brand) : undefined,\n      bondType: isSet(object.bondType) ? bondTypeFromJSON(object.bondType) : 0,\n      callDate: isSet(object.callDate) ? fromJsonTimestamp(object.callDate) : undefined,\n      dlongClient: isSet(object.dlongClient) ? Quotation.fromJSON(object.dlongClient) : undefined,\n      dshortClient: isSet(object.dshortClient) ? Quotation.fromJSON(object.dshortClient) : undefined,\n    };\n  },\n\n  toJSON(message: Bond): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.lot !== 0) {\n      obj.lot = Math.round(message.lot);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.klong !== undefined) {\n      obj.klong = Quotation.toJSON(message.klong);\n    }\n    if (message.kshort !== undefined) {\n      obj.kshort = Quotation.toJSON(message.kshort);\n    }\n    if (message.dlong !== undefined) {\n      obj.dlong = Quotation.toJSON(message.dlong);\n    }\n    if (message.dshort !== undefined) {\n      obj.dshort = Quotation.toJSON(message.dshort);\n    }\n    if (message.dlongMin !== undefined) {\n      obj.dlongMin = Quotation.toJSON(message.dlongMin);\n    }\n    if (message.dshortMin !== undefined) {\n      obj.dshortMin = Quotation.toJSON(message.dshortMin);\n    }\n    if (message.shortEnabledFlag !== false) {\n      obj.shortEnabledFlag = message.shortEnabledFlag;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.couponQuantityPerYear !== 0) {\n      obj.couponQuantityPerYear = Math.round(message.couponQuantityPerYear);\n    }\n    if (message.maturityDate !== undefined) {\n      obj.maturityDate = message.maturityDate.toISOString();\n    }\n    if (message.nominal !== undefined) {\n      obj.nominal = MoneyValue.toJSON(message.nominal);\n    }\n    if (message.initialNominal !== undefined) {\n      obj.initialNominal = MoneyValue.toJSON(message.initialNominal);\n    }\n    if (message.stateRegDate !== undefined) {\n      obj.stateRegDate = message.stateRegDate.toISOString();\n    }\n    if (message.placementDate !== undefined) {\n      obj.placementDate = message.placementDate.toISOString();\n    }\n    if (message.placementPrice !== undefined) {\n      obj.placementPrice = MoneyValue.toJSON(message.placementPrice);\n    }\n    if (message.aciValue !== undefined) {\n      obj.aciValue = MoneyValue.toJSON(message.aciValue);\n    }\n    if (message.countryOfRisk !== \"\") {\n      obj.countryOfRisk = message.countryOfRisk;\n    }\n    if (message.countryOfRiskName !== \"\") {\n      obj.countryOfRiskName = message.countryOfRiskName;\n    }\n    if (message.sector !== \"\") {\n      obj.sector = message.sector;\n    }\n    if (message.issueKind !== \"\") {\n      obj.issueKind = message.issueKind;\n    }\n    if (message.issueSize !== 0) {\n      obj.issueSize = Math.round(message.issueSize);\n    }\n    if (message.issueSizePlan !== 0) {\n      obj.issueSizePlan = Math.round(message.issueSizePlan);\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      obj.otcFlag = message.otcFlag;\n    }\n    if (message.buyAvailableFlag !== false) {\n      obj.buyAvailableFlag = message.buyAvailableFlag;\n    }\n    if (message.sellAvailableFlag !== false) {\n      obj.sellAvailableFlag = message.sellAvailableFlag;\n    }\n    if (message.floatingCouponFlag !== false) {\n      obj.floatingCouponFlag = message.floatingCouponFlag;\n    }\n    if (message.perpetualFlag !== false) {\n      obj.perpetualFlag = message.perpetualFlag;\n    }\n    if (message.amortizationFlag !== false) {\n      obj.amortizationFlag = message.amortizationFlag;\n    }\n    if (message.minPriceIncrement !== undefined) {\n      obj.minPriceIncrement = Quotation.toJSON(message.minPriceIncrement);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.realExchange !== 0) {\n      obj.realExchange = realExchangeToJSON(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.assetUid !== \"\") {\n      obj.assetUid = message.assetUid;\n    }\n    if (message.forIisFlag !== false) {\n      obj.forIisFlag = message.forIisFlag;\n    }\n    if (message.forQualInvestorFlag !== false) {\n      obj.forQualInvestorFlag = message.forQualInvestorFlag;\n    }\n    if (message.weekendFlag !== false) {\n      obj.weekendFlag = message.weekendFlag;\n    }\n    if (message.blockedTcaFlag !== false) {\n      obj.blockedTcaFlag = message.blockedTcaFlag;\n    }\n    if (message.subordinatedFlag !== false) {\n      obj.subordinatedFlag = message.subordinatedFlag;\n    }\n    if (message.liquidityFlag !== false) {\n      obj.liquidityFlag = message.liquidityFlag;\n    }\n    if (message.first1minCandleDate !== undefined) {\n      obj.first1minCandleDate = message.first1minCandleDate.toISOString();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      obj.first1dayCandleDate = message.first1dayCandleDate.toISOString();\n    }\n    if (message.riskLevel !== 0) {\n      obj.riskLevel = riskLevelToJSON(message.riskLevel);\n    }\n    if (message.brand !== undefined) {\n      obj.brand = BrandData.toJSON(message.brand);\n    }\n    if (message.bondType !== 0) {\n      obj.bondType = bondTypeToJSON(message.bondType);\n    }\n    if (message.callDate !== undefined) {\n      obj.callDate = message.callDate.toISOString();\n    }\n    if (message.dlongClient !== undefined) {\n      obj.dlongClient = Quotation.toJSON(message.dlongClient);\n    }\n    if (message.dshortClient !== undefined) {\n      obj.dshortClient = Quotation.toJSON(message.dshortClient);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Bond>): Bond {\n    return Bond.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Bond>): Bond {\n    const message = createBaseBond();\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.isin = object.isin ?? \"\";\n    message.lot = object.lot ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.klong = (object.klong !== undefined && object.klong !== null)\n      ? Quotation.fromPartial(object.klong)\n      : undefined;\n    message.kshort = (object.kshort !== undefined && object.kshort !== null)\n      ? Quotation.fromPartial(object.kshort)\n      : undefined;\n    message.dlong = (object.dlong !== undefined && object.dlong !== null)\n      ? Quotation.fromPartial(object.dlong)\n      : undefined;\n    message.dshort = (object.dshort !== undefined && object.dshort !== null)\n      ? Quotation.fromPartial(object.dshort)\n      : undefined;\n    message.dlongMin = (object.dlongMin !== undefined && object.dlongMin !== null)\n      ? Quotation.fromPartial(object.dlongMin)\n      : undefined;\n    message.dshortMin = (object.dshortMin !== undefined && object.dshortMin !== null)\n      ? Quotation.fromPartial(object.dshortMin)\n      : undefined;\n    message.shortEnabledFlag = object.shortEnabledFlag ?? false;\n    message.name = object.name ?? \"\";\n    message.exchange = object.exchange ?? \"\";\n    message.couponQuantityPerYear = object.couponQuantityPerYear ?? 0;\n    message.maturityDate = object.maturityDate ?? undefined;\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? MoneyValue.fromPartial(object.nominal)\n      : undefined;\n    message.initialNominal = (object.initialNominal !== undefined && object.initialNominal !== null)\n      ? MoneyValue.fromPartial(object.initialNominal)\n      : undefined;\n    message.stateRegDate = object.stateRegDate ?? undefined;\n    message.placementDate = object.placementDate ?? undefined;\n    message.placementPrice = (object.placementPrice !== undefined && object.placementPrice !== null)\n      ? MoneyValue.fromPartial(object.placementPrice)\n      : undefined;\n    message.aciValue = (object.aciValue !== undefined && object.aciValue !== null)\n      ? MoneyValue.fromPartial(object.aciValue)\n      : undefined;\n    message.countryOfRisk = object.countryOfRisk ?? \"\";\n    message.countryOfRiskName = object.countryOfRiskName ?? \"\";\n    message.sector = object.sector ?? \"\";\n    message.issueKind = object.issueKind ?? \"\";\n    message.issueSize = object.issueSize ?? 0;\n    message.issueSizePlan = object.issueSizePlan ?? 0;\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.otcFlag = object.otcFlag ?? false;\n    message.buyAvailableFlag = object.buyAvailableFlag ?? false;\n    message.sellAvailableFlag = object.sellAvailableFlag ?? false;\n    message.floatingCouponFlag = object.floatingCouponFlag ?? false;\n    message.perpetualFlag = object.perpetualFlag ?? false;\n    message.amortizationFlag = object.amortizationFlag ?? false;\n    message.minPriceIncrement = (object.minPriceIncrement !== undefined && object.minPriceIncrement !== null)\n      ? Quotation.fromPartial(object.minPriceIncrement)\n      : undefined;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.uid = object.uid ?? \"\";\n    message.realExchange = object.realExchange ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.assetUid = object.assetUid ?? \"\";\n    message.forIisFlag = object.forIisFlag ?? false;\n    message.forQualInvestorFlag = object.forQualInvestorFlag ?? false;\n    message.weekendFlag = object.weekendFlag ?? false;\n    message.blockedTcaFlag = object.blockedTcaFlag ?? false;\n    message.subordinatedFlag = object.subordinatedFlag ?? false;\n    message.liquidityFlag = object.liquidityFlag ?? false;\n    message.first1minCandleDate = object.first1minCandleDate ?? undefined;\n    message.first1dayCandleDate = object.first1dayCandleDate ?? undefined;\n    message.riskLevel = object.riskLevel ?? 0;\n    message.brand = (object.brand !== undefined && object.brand !== null)\n      ? BrandData.fromPartial(object.brand)\n      : undefined;\n    message.bondType = object.bondType ?? 0;\n    message.callDate = object.callDate ?? undefined;\n    message.dlongClient = (object.dlongClient !== undefined && object.dlongClient !== null)\n      ? Quotation.fromPartial(object.dlongClient)\n      : undefined;\n    message.dshortClient = (object.dshortClient !== undefined && object.dshortClient !== null)\n      ? Quotation.fromPartial(object.dshortClient)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCurrency(): Currency {\n  return {\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    isin: \"\",\n    lot: 0,\n    currency: \"\",\n    klong: undefined,\n    kshort: undefined,\n    dlong: undefined,\n    dshort: undefined,\n    dlongMin: undefined,\n    dshortMin: undefined,\n    shortEnabledFlag: false,\n    name: \"\",\n    exchange: \"\",\n    nominal: undefined,\n    countryOfRisk: \"\",\n    countryOfRiskName: \"\",\n    tradingStatus: 0,\n    otcFlag: false,\n    buyAvailableFlag: false,\n    sellAvailableFlag: false,\n    isoCurrencyName: \"\",\n    minPriceIncrement: undefined,\n    apiTradeAvailableFlag: false,\n    uid: \"\",\n    realExchange: 0,\n    positionUid: \"\",\n    forIisFlag: false,\n    forQualInvestorFlag: false,\n    weekendFlag: false,\n    blockedTcaFlag: false,\n    first1minCandleDate: undefined,\n    first1dayCandleDate: undefined,\n    brand: undefined,\n    dlongClient: undefined,\n    dshortClient: undefined,\n  };\n}\n\nexport const Currency: MessageFns<Currency> = {\n  encode(message: Currency, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(26).string(message.classCode);\n    }\n    if (message.isin !== \"\") {\n      writer.uint32(34).string(message.isin);\n    }\n    if (message.lot !== 0) {\n      writer.uint32(40).int32(message.lot);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(50).string(message.currency);\n    }\n    if (message.klong !== undefined) {\n      Quotation.encode(message.klong, writer.uint32(58).fork()).join();\n    }\n    if (message.kshort !== undefined) {\n      Quotation.encode(message.kshort, writer.uint32(66).fork()).join();\n    }\n    if (message.dlong !== undefined) {\n      Quotation.encode(message.dlong, writer.uint32(74).fork()).join();\n    }\n    if (message.dshort !== undefined) {\n      Quotation.encode(message.dshort, writer.uint32(82).fork()).join();\n    }\n    if (message.dlongMin !== undefined) {\n      Quotation.encode(message.dlongMin, writer.uint32(90).fork()).join();\n    }\n    if (message.dshortMin !== undefined) {\n      Quotation.encode(message.dshortMin, writer.uint32(98).fork()).join();\n    }\n    if (message.shortEnabledFlag !== false) {\n      writer.uint32(104).bool(message.shortEnabledFlag);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(122).string(message.name);\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(130).string(message.exchange);\n    }\n    if (message.nominal !== undefined) {\n      MoneyValue.encode(message.nominal, writer.uint32(138).fork()).join();\n    }\n    if (message.countryOfRisk !== \"\") {\n      writer.uint32(146).string(message.countryOfRisk);\n    }\n    if (message.countryOfRiskName !== \"\") {\n      writer.uint32(154).string(message.countryOfRiskName);\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(160).int32(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      writer.uint32(168).bool(message.otcFlag);\n    }\n    if (message.buyAvailableFlag !== false) {\n      writer.uint32(176).bool(message.buyAvailableFlag);\n    }\n    if (message.sellAvailableFlag !== false) {\n      writer.uint32(184).bool(message.sellAvailableFlag);\n    }\n    if (message.isoCurrencyName !== \"\") {\n      writer.uint32(194).string(message.isoCurrencyName);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      Quotation.encode(message.minPriceIncrement, writer.uint32(202).fork()).join();\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(208).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(218).string(message.uid);\n    }\n    if (message.realExchange !== 0) {\n      writer.uint32(224).int32(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(234).string(message.positionUid);\n    }\n    if (message.forIisFlag !== false) {\n      writer.uint32(328).bool(message.forIisFlag);\n    }\n    if (message.forQualInvestorFlag !== false) {\n      writer.uint32(416).bool(message.forQualInvestorFlag);\n    }\n    if (message.weekendFlag !== false) {\n      writer.uint32(424).bool(message.weekendFlag);\n    }\n    if (message.blockedTcaFlag !== false) {\n      writer.uint32(432).bool(message.blockedTcaFlag);\n    }\n    if (message.first1minCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1minCandleDate), writer.uint32(450).fork()).join();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1dayCandleDate), writer.uint32(458).fork()).join();\n    }\n    if (message.brand !== undefined) {\n      BrandData.encode(message.brand, writer.uint32(482).fork()).join();\n    }\n    if (message.dlongClient !== undefined) {\n      Quotation.encode(message.dlongClient, writer.uint32(722).fork()).join();\n    }\n    if (message.dshortClient !== undefined) {\n      Quotation.encode(message.dshortClient, writer.uint32(730).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Currency {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCurrency();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.lot = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.klong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.kshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.dlong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.dshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.dlongMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.dshortMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.shortEnabledFlag = reader.bool();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.nominal = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.countryOfRisk = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.countryOfRiskName = reader.string();\n          continue;\n        }\n        case 20: {\n          if (tag !== 160) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 21: {\n          if (tag !== 168) {\n            break;\n          }\n\n          message.otcFlag = reader.bool();\n          continue;\n        }\n        case 22: {\n          if (tag !== 176) {\n            break;\n          }\n\n          message.buyAvailableFlag = reader.bool();\n          continue;\n        }\n        case 23: {\n          if (tag !== 184) {\n            break;\n          }\n\n          message.sellAvailableFlag = reader.bool();\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.isoCurrencyName = reader.string();\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          message.minPriceIncrement = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 26: {\n          if (tag !== 208) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 28: {\n          if (tag !== 224) {\n            break;\n          }\n\n          message.realExchange = reader.int32() as any;\n          continue;\n        }\n        case 29: {\n          if (tag !== 234) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 41: {\n          if (tag !== 328) {\n            break;\n          }\n\n          message.forIisFlag = reader.bool();\n          continue;\n        }\n        case 52: {\n          if (tag !== 416) {\n            break;\n          }\n\n          message.forQualInvestorFlag = reader.bool();\n          continue;\n        }\n        case 53: {\n          if (tag !== 424) {\n            break;\n          }\n\n          message.weekendFlag = reader.bool();\n          continue;\n        }\n        case 54: {\n          if (tag !== 432) {\n            break;\n          }\n\n          message.blockedTcaFlag = reader.bool();\n          continue;\n        }\n        case 56: {\n          if (tag !== 450) {\n            break;\n          }\n\n          message.first1minCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 57: {\n          if (tag !== 458) {\n            break;\n          }\n\n          message.first1dayCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 60: {\n          if (tag !== 482) {\n            break;\n          }\n\n          message.brand = BrandData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 90: {\n          if (tag !== 722) {\n            break;\n          }\n\n          message.dlongClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 91: {\n          if (tag !== 730) {\n            break;\n          }\n\n          message.dshortClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Currency {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      lot: isSet(object.lot) ? globalThis.Number(object.lot) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      klong: isSet(object.klong) ? Quotation.fromJSON(object.klong) : undefined,\n      kshort: isSet(object.kshort) ? Quotation.fromJSON(object.kshort) : undefined,\n      dlong: isSet(object.dlong) ? Quotation.fromJSON(object.dlong) : undefined,\n      dshort: isSet(object.dshort) ? Quotation.fromJSON(object.dshort) : undefined,\n      dlongMin: isSet(object.dlongMin) ? Quotation.fromJSON(object.dlongMin) : undefined,\n      dshortMin: isSet(object.dshortMin) ? Quotation.fromJSON(object.dshortMin) : undefined,\n      shortEnabledFlag: isSet(object.shortEnabledFlag) ? globalThis.Boolean(object.shortEnabledFlag) : false,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      nominal: isSet(object.nominal) ? MoneyValue.fromJSON(object.nominal) : undefined,\n      countryOfRisk: isSet(object.countryOfRisk) ? globalThis.String(object.countryOfRisk) : \"\",\n      countryOfRiskName: isSet(object.countryOfRiskName) ? globalThis.String(object.countryOfRiskName) : \"\",\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      otcFlag: isSet(object.otcFlag) ? globalThis.Boolean(object.otcFlag) : false,\n      buyAvailableFlag: isSet(object.buyAvailableFlag) ? globalThis.Boolean(object.buyAvailableFlag) : false,\n      sellAvailableFlag: isSet(object.sellAvailableFlag) ? globalThis.Boolean(object.sellAvailableFlag) : false,\n      isoCurrencyName: isSet(object.isoCurrencyName) ? globalThis.String(object.isoCurrencyName) : \"\",\n      minPriceIncrement: isSet(object.minPriceIncrement) ? Quotation.fromJSON(object.minPriceIncrement) : undefined,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      realExchange: isSet(object.realExchange) ? realExchangeFromJSON(object.realExchange) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      forIisFlag: isSet(object.forIisFlag) ? globalThis.Boolean(object.forIisFlag) : false,\n      forQualInvestorFlag: isSet(object.forQualInvestorFlag) ? globalThis.Boolean(object.forQualInvestorFlag) : false,\n      weekendFlag: isSet(object.weekendFlag) ? globalThis.Boolean(object.weekendFlag) : false,\n      blockedTcaFlag: isSet(object.blockedTcaFlag) ? globalThis.Boolean(object.blockedTcaFlag) : false,\n      first1minCandleDate: isSet(object.first1minCandleDate)\n        ? fromJsonTimestamp(object.first1minCandleDate)\n        : undefined,\n      first1dayCandleDate: isSet(object.first1dayCandleDate)\n        ? fromJsonTimestamp(object.first1dayCandleDate)\n        : undefined,\n      brand: isSet(object.brand) ? BrandData.fromJSON(object.brand) : undefined,\n      dlongClient: isSet(object.dlongClient) ? Quotation.fromJSON(object.dlongClient) : undefined,\n      dshortClient: isSet(object.dshortClient) ? Quotation.fromJSON(object.dshortClient) : undefined,\n    };\n  },\n\n  toJSON(message: Currency): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.lot !== 0) {\n      obj.lot = Math.round(message.lot);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.klong !== undefined) {\n      obj.klong = Quotation.toJSON(message.klong);\n    }\n    if (message.kshort !== undefined) {\n      obj.kshort = Quotation.toJSON(message.kshort);\n    }\n    if (message.dlong !== undefined) {\n      obj.dlong = Quotation.toJSON(message.dlong);\n    }\n    if (message.dshort !== undefined) {\n      obj.dshort = Quotation.toJSON(message.dshort);\n    }\n    if (message.dlongMin !== undefined) {\n      obj.dlongMin = Quotation.toJSON(message.dlongMin);\n    }\n    if (message.dshortMin !== undefined) {\n      obj.dshortMin = Quotation.toJSON(message.dshortMin);\n    }\n    if (message.shortEnabledFlag !== false) {\n      obj.shortEnabledFlag = message.shortEnabledFlag;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.nominal !== undefined) {\n      obj.nominal = MoneyValue.toJSON(message.nominal);\n    }\n    if (message.countryOfRisk !== \"\") {\n      obj.countryOfRisk = message.countryOfRisk;\n    }\n    if (message.countryOfRiskName !== \"\") {\n      obj.countryOfRiskName = message.countryOfRiskName;\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      obj.otcFlag = message.otcFlag;\n    }\n    if (message.buyAvailableFlag !== false) {\n      obj.buyAvailableFlag = message.buyAvailableFlag;\n    }\n    if (message.sellAvailableFlag !== false) {\n      obj.sellAvailableFlag = message.sellAvailableFlag;\n    }\n    if (message.isoCurrencyName !== \"\") {\n      obj.isoCurrencyName = message.isoCurrencyName;\n    }\n    if (message.minPriceIncrement !== undefined) {\n      obj.minPriceIncrement = Quotation.toJSON(message.minPriceIncrement);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.realExchange !== 0) {\n      obj.realExchange = realExchangeToJSON(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.forIisFlag !== false) {\n      obj.forIisFlag = message.forIisFlag;\n    }\n    if (message.forQualInvestorFlag !== false) {\n      obj.forQualInvestorFlag = message.forQualInvestorFlag;\n    }\n    if (message.weekendFlag !== false) {\n      obj.weekendFlag = message.weekendFlag;\n    }\n    if (message.blockedTcaFlag !== false) {\n      obj.blockedTcaFlag = message.blockedTcaFlag;\n    }\n    if (message.first1minCandleDate !== undefined) {\n      obj.first1minCandleDate = message.first1minCandleDate.toISOString();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      obj.first1dayCandleDate = message.first1dayCandleDate.toISOString();\n    }\n    if (message.brand !== undefined) {\n      obj.brand = BrandData.toJSON(message.brand);\n    }\n    if (message.dlongClient !== undefined) {\n      obj.dlongClient = Quotation.toJSON(message.dlongClient);\n    }\n    if (message.dshortClient !== undefined) {\n      obj.dshortClient = Quotation.toJSON(message.dshortClient);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Currency>): Currency {\n    return Currency.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Currency>): Currency {\n    const message = createBaseCurrency();\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.isin = object.isin ?? \"\";\n    message.lot = object.lot ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.klong = (object.klong !== undefined && object.klong !== null)\n      ? Quotation.fromPartial(object.klong)\n      : undefined;\n    message.kshort = (object.kshort !== undefined && object.kshort !== null)\n      ? Quotation.fromPartial(object.kshort)\n      : undefined;\n    message.dlong = (object.dlong !== undefined && object.dlong !== null)\n      ? Quotation.fromPartial(object.dlong)\n      : undefined;\n    message.dshort = (object.dshort !== undefined && object.dshort !== null)\n      ? Quotation.fromPartial(object.dshort)\n      : undefined;\n    message.dlongMin = (object.dlongMin !== undefined && object.dlongMin !== null)\n      ? Quotation.fromPartial(object.dlongMin)\n      : undefined;\n    message.dshortMin = (object.dshortMin !== undefined && object.dshortMin !== null)\n      ? Quotation.fromPartial(object.dshortMin)\n      : undefined;\n    message.shortEnabledFlag = object.shortEnabledFlag ?? false;\n    message.name = object.name ?? \"\";\n    message.exchange = object.exchange ?? \"\";\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? MoneyValue.fromPartial(object.nominal)\n      : undefined;\n    message.countryOfRisk = object.countryOfRisk ?? \"\";\n    message.countryOfRiskName = object.countryOfRiskName ?? \"\";\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.otcFlag = object.otcFlag ?? false;\n    message.buyAvailableFlag = object.buyAvailableFlag ?? false;\n    message.sellAvailableFlag = object.sellAvailableFlag ?? false;\n    message.isoCurrencyName = object.isoCurrencyName ?? \"\";\n    message.minPriceIncrement = (object.minPriceIncrement !== undefined && object.minPriceIncrement !== null)\n      ? Quotation.fromPartial(object.minPriceIncrement)\n      : undefined;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.uid = object.uid ?? \"\";\n    message.realExchange = object.realExchange ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.forIisFlag = object.forIisFlag ?? false;\n    message.forQualInvestorFlag = object.forQualInvestorFlag ?? false;\n    message.weekendFlag = object.weekendFlag ?? false;\n    message.blockedTcaFlag = object.blockedTcaFlag ?? false;\n    message.first1minCandleDate = object.first1minCandleDate ?? undefined;\n    message.first1dayCandleDate = object.first1dayCandleDate ?? undefined;\n    message.brand = (object.brand !== undefined && object.brand !== null)\n      ? BrandData.fromPartial(object.brand)\n      : undefined;\n    message.dlongClient = (object.dlongClient !== undefined && object.dlongClient !== null)\n      ? Quotation.fromPartial(object.dlongClient)\n      : undefined;\n    message.dshortClient = (object.dshortClient !== undefined && object.dshortClient !== null)\n      ? Quotation.fromPartial(object.dshortClient)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseEtf(): Etf {\n  return {\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    isin: \"\",\n    lot: 0,\n    currency: \"\",\n    klong: undefined,\n    kshort: undefined,\n    dlong: undefined,\n    dshort: undefined,\n    dlongMin: undefined,\n    dshortMin: undefined,\n    shortEnabledFlag: false,\n    name: \"\",\n    exchange: \"\",\n    fixedCommission: undefined,\n    focusType: \"\",\n    releasedDate: undefined,\n    numShares: undefined,\n    countryOfRisk: \"\",\n    countryOfRiskName: \"\",\n    sector: \"\",\n    rebalancingFreq: \"\",\n    tradingStatus: 0,\n    otcFlag: false,\n    buyAvailableFlag: false,\n    sellAvailableFlag: false,\n    minPriceIncrement: undefined,\n    apiTradeAvailableFlag: false,\n    uid: \"\",\n    realExchange: 0,\n    positionUid: \"\",\n    assetUid: \"\",\n    instrumentExchange: 0,\n    forIisFlag: false,\n    forQualInvestorFlag: false,\n    weekendFlag: false,\n    blockedTcaFlag: false,\n    liquidityFlag: false,\n    first1minCandleDate: undefined,\n    first1dayCandleDate: undefined,\n    brand: undefined,\n    dlongClient: undefined,\n    dshortClient: undefined,\n  };\n}\n\nexport const Etf: MessageFns<Etf> = {\n  encode(message: Etf, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(26).string(message.classCode);\n    }\n    if (message.isin !== \"\") {\n      writer.uint32(34).string(message.isin);\n    }\n    if (message.lot !== 0) {\n      writer.uint32(40).int32(message.lot);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(50).string(message.currency);\n    }\n    if (message.klong !== undefined) {\n      Quotation.encode(message.klong, writer.uint32(58).fork()).join();\n    }\n    if (message.kshort !== undefined) {\n      Quotation.encode(message.kshort, writer.uint32(66).fork()).join();\n    }\n    if (message.dlong !== undefined) {\n      Quotation.encode(message.dlong, writer.uint32(74).fork()).join();\n    }\n    if (message.dshort !== undefined) {\n      Quotation.encode(message.dshort, writer.uint32(82).fork()).join();\n    }\n    if (message.dlongMin !== undefined) {\n      Quotation.encode(message.dlongMin, writer.uint32(90).fork()).join();\n    }\n    if (message.dshortMin !== undefined) {\n      Quotation.encode(message.dshortMin, writer.uint32(98).fork()).join();\n    }\n    if (message.shortEnabledFlag !== false) {\n      writer.uint32(104).bool(message.shortEnabledFlag);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(122).string(message.name);\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(130).string(message.exchange);\n    }\n    if (message.fixedCommission !== undefined) {\n      Quotation.encode(message.fixedCommission, writer.uint32(138).fork()).join();\n    }\n    if (message.focusType !== \"\") {\n      writer.uint32(146).string(message.focusType);\n    }\n    if (message.releasedDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.releasedDate), writer.uint32(154).fork()).join();\n    }\n    if (message.numShares !== undefined) {\n      Quotation.encode(message.numShares, writer.uint32(162).fork()).join();\n    }\n    if (message.countryOfRisk !== \"\") {\n      writer.uint32(170).string(message.countryOfRisk);\n    }\n    if (message.countryOfRiskName !== \"\") {\n      writer.uint32(178).string(message.countryOfRiskName);\n    }\n    if (message.sector !== \"\") {\n      writer.uint32(186).string(message.sector);\n    }\n    if (message.rebalancingFreq !== \"\") {\n      writer.uint32(194).string(message.rebalancingFreq);\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(200).int32(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      writer.uint32(208).bool(message.otcFlag);\n    }\n    if (message.buyAvailableFlag !== false) {\n      writer.uint32(216).bool(message.buyAvailableFlag);\n    }\n    if (message.sellAvailableFlag !== false) {\n      writer.uint32(224).bool(message.sellAvailableFlag);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      Quotation.encode(message.minPriceIncrement, writer.uint32(234).fork()).join();\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(240).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(250).string(message.uid);\n    }\n    if (message.realExchange !== 0) {\n      writer.uint32(256).int32(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(266).string(message.positionUid);\n    }\n    if (message.assetUid !== \"\") {\n      writer.uint32(274).string(message.assetUid);\n    }\n    if (message.instrumentExchange !== 0) {\n      writer.uint32(280).int32(message.instrumentExchange);\n    }\n    if (message.forIisFlag !== false) {\n      writer.uint32(328).bool(message.forIisFlag);\n    }\n    if (message.forQualInvestorFlag !== false) {\n      writer.uint32(336).bool(message.forQualInvestorFlag);\n    }\n    if (message.weekendFlag !== false) {\n      writer.uint32(344).bool(message.weekendFlag);\n    }\n    if (message.blockedTcaFlag !== false) {\n      writer.uint32(352).bool(message.blockedTcaFlag);\n    }\n    if (message.liquidityFlag !== false) {\n      writer.uint32(360).bool(message.liquidityFlag);\n    }\n    if (message.first1minCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1minCandleDate), writer.uint32(450).fork()).join();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1dayCandleDate), writer.uint32(458).fork()).join();\n    }\n    if (message.brand !== undefined) {\n      BrandData.encode(message.brand, writer.uint32(482).fork()).join();\n    }\n    if (message.dlongClient !== undefined) {\n      Quotation.encode(message.dlongClient, writer.uint32(722).fork()).join();\n    }\n    if (message.dshortClient !== undefined) {\n      Quotation.encode(message.dshortClient, writer.uint32(730).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Etf {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEtf();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.lot = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.klong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.kshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.dlong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.dshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.dlongMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.dshortMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.shortEnabledFlag = reader.bool();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.fixedCommission = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.focusType = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.releasedDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.numShares = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.countryOfRisk = reader.string();\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.countryOfRiskName = reader.string();\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.sector = reader.string();\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.rebalancingFreq = reader.string();\n          continue;\n        }\n        case 25: {\n          if (tag !== 200) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 26: {\n          if (tag !== 208) {\n            break;\n          }\n\n          message.otcFlag = reader.bool();\n          continue;\n        }\n        case 27: {\n          if (tag !== 216) {\n            break;\n          }\n\n          message.buyAvailableFlag = reader.bool();\n          continue;\n        }\n        case 28: {\n          if (tag !== 224) {\n            break;\n          }\n\n          message.sellAvailableFlag = reader.bool();\n          continue;\n        }\n        case 29: {\n          if (tag !== 234) {\n            break;\n          }\n\n          message.minPriceIncrement = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 30: {\n          if (tag !== 240) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 31: {\n          if (tag !== 250) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 32: {\n          if (tag !== 256) {\n            break;\n          }\n\n          message.realExchange = reader.int32() as any;\n          continue;\n        }\n        case 33: {\n          if (tag !== 266) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 34: {\n          if (tag !== 274) {\n            break;\n          }\n\n          message.assetUid = reader.string();\n          continue;\n        }\n        case 35: {\n          if (tag !== 280) {\n            break;\n          }\n\n          message.instrumentExchange = reader.int32() as any;\n          continue;\n        }\n        case 41: {\n          if (tag !== 328) {\n            break;\n          }\n\n          message.forIisFlag = reader.bool();\n          continue;\n        }\n        case 42: {\n          if (tag !== 336) {\n            break;\n          }\n\n          message.forQualInvestorFlag = reader.bool();\n          continue;\n        }\n        case 43: {\n          if (tag !== 344) {\n            break;\n          }\n\n          message.weekendFlag = reader.bool();\n          continue;\n        }\n        case 44: {\n          if (tag !== 352) {\n            break;\n          }\n\n          message.blockedTcaFlag = reader.bool();\n          continue;\n        }\n        case 45: {\n          if (tag !== 360) {\n            break;\n          }\n\n          message.liquidityFlag = reader.bool();\n          continue;\n        }\n        case 56: {\n          if (tag !== 450) {\n            break;\n          }\n\n          message.first1minCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 57: {\n          if (tag !== 458) {\n            break;\n          }\n\n          message.first1dayCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 60: {\n          if (tag !== 482) {\n            break;\n          }\n\n          message.brand = BrandData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 90: {\n          if (tag !== 722) {\n            break;\n          }\n\n          message.dlongClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 91: {\n          if (tag !== 730) {\n            break;\n          }\n\n          message.dshortClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Etf {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      lot: isSet(object.lot) ? globalThis.Number(object.lot) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      klong: isSet(object.klong) ? Quotation.fromJSON(object.klong) : undefined,\n      kshort: isSet(object.kshort) ? Quotation.fromJSON(object.kshort) : undefined,\n      dlong: isSet(object.dlong) ? Quotation.fromJSON(object.dlong) : undefined,\n      dshort: isSet(object.dshort) ? Quotation.fromJSON(object.dshort) : undefined,\n      dlongMin: isSet(object.dlongMin) ? Quotation.fromJSON(object.dlongMin) : undefined,\n      dshortMin: isSet(object.dshortMin) ? Quotation.fromJSON(object.dshortMin) : undefined,\n      shortEnabledFlag: isSet(object.shortEnabledFlag) ? globalThis.Boolean(object.shortEnabledFlag) : false,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      fixedCommission: isSet(object.fixedCommission) ? Quotation.fromJSON(object.fixedCommission) : undefined,\n      focusType: isSet(object.focusType) ? globalThis.String(object.focusType) : \"\",\n      releasedDate: isSet(object.releasedDate) ? fromJsonTimestamp(object.releasedDate) : undefined,\n      numShares: isSet(object.numShares) ? Quotation.fromJSON(object.numShares) : undefined,\n      countryOfRisk: isSet(object.countryOfRisk) ? globalThis.String(object.countryOfRisk) : \"\",\n      countryOfRiskName: isSet(object.countryOfRiskName) ? globalThis.String(object.countryOfRiskName) : \"\",\n      sector: isSet(object.sector) ? globalThis.String(object.sector) : \"\",\n      rebalancingFreq: isSet(object.rebalancingFreq) ? globalThis.String(object.rebalancingFreq) : \"\",\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      otcFlag: isSet(object.otcFlag) ? globalThis.Boolean(object.otcFlag) : false,\n      buyAvailableFlag: isSet(object.buyAvailableFlag) ? globalThis.Boolean(object.buyAvailableFlag) : false,\n      sellAvailableFlag: isSet(object.sellAvailableFlag) ? globalThis.Boolean(object.sellAvailableFlag) : false,\n      minPriceIncrement: isSet(object.minPriceIncrement) ? Quotation.fromJSON(object.minPriceIncrement) : undefined,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      realExchange: isSet(object.realExchange) ? realExchangeFromJSON(object.realExchange) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      assetUid: isSet(object.assetUid) ? globalThis.String(object.assetUid) : \"\",\n      instrumentExchange: isSet(object.instrumentExchange)\n        ? instrumentExchangeTypeFromJSON(object.instrumentExchange)\n        : 0,\n      forIisFlag: isSet(object.forIisFlag) ? globalThis.Boolean(object.forIisFlag) : false,\n      forQualInvestorFlag: isSet(object.forQualInvestorFlag) ? globalThis.Boolean(object.forQualInvestorFlag) : false,\n      weekendFlag: isSet(object.weekendFlag) ? globalThis.Boolean(object.weekendFlag) : false,\n      blockedTcaFlag: isSet(object.blockedTcaFlag) ? globalThis.Boolean(object.blockedTcaFlag) : false,\n      liquidityFlag: isSet(object.liquidityFlag) ? globalThis.Boolean(object.liquidityFlag) : false,\n      first1minCandleDate: isSet(object.first1minCandleDate)\n        ? fromJsonTimestamp(object.first1minCandleDate)\n        : undefined,\n      first1dayCandleDate: isSet(object.first1dayCandleDate)\n        ? fromJsonTimestamp(object.first1dayCandleDate)\n        : undefined,\n      brand: isSet(object.brand) ? BrandData.fromJSON(object.brand) : undefined,\n      dlongClient: isSet(object.dlongClient) ? Quotation.fromJSON(object.dlongClient) : undefined,\n      dshortClient: isSet(object.dshortClient) ? Quotation.fromJSON(object.dshortClient) : undefined,\n    };\n  },\n\n  toJSON(message: Etf): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.lot !== 0) {\n      obj.lot = Math.round(message.lot);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.klong !== undefined) {\n      obj.klong = Quotation.toJSON(message.klong);\n    }\n    if (message.kshort !== undefined) {\n      obj.kshort = Quotation.toJSON(message.kshort);\n    }\n    if (message.dlong !== undefined) {\n      obj.dlong = Quotation.toJSON(message.dlong);\n    }\n    if (message.dshort !== undefined) {\n      obj.dshort = Quotation.toJSON(message.dshort);\n    }\n    if (message.dlongMin !== undefined) {\n      obj.dlongMin = Quotation.toJSON(message.dlongMin);\n    }\n    if (message.dshortMin !== undefined) {\n      obj.dshortMin = Quotation.toJSON(message.dshortMin);\n    }\n    if (message.shortEnabledFlag !== false) {\n      obj.shortEnabledFlag = message.shortEnabledFlag;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.fixedCommission !== undefined) {\n      obj.fixedCommission = Quotation.toJSON(message.fixedCommission);\n    }\n    if (message.focusType !== \"\") {\n      obj.focusType = message.focusType;\n    }\n    if (message.releasedDate !== undefined) {\n      obj.releasedDate = message.releasedDate.toISOString();\n    }\n    if (message.numShares !== undefined) {\n      obj.numShares = Quotation.toJSON(message.numShares);\n    }\n    if (message.countryOfRisk !== \"\") {\n      obj.countryOfRisk = message.countryOfRisk;\n    }\n    if (message.countryOfRiskName !== \"\") {\n      obj.countryOfRiskName = message.countryOfRiskName;\n    }\n    if (message.sector !== \"\") {\n      obj.sector = message.sector;\n    }\n    if (message.rebalancingFreq !== \"\") {\n      obj.rebalancingFreq = message.rebalancingFreq;\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      obj.otcFlag = message.otcFlag;\n    }\n    if (message.buyAvailableFlag !== false) {\n      obj.buyAvailableFlag = message.buyAvailableFlag;\n    }\n    if (message.sellAvailableFlag !== false) {\n      obj.sellAvailableFlag = message.sellAvailableFlag;\n    }\n    if (message.minPriceIncrement !== undefined) {\n      obj.minPriceIncrement = Quotation.toJSON(message.minPriceIncrement);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.realExchange !== 0) {\n      obj.realExchange = realExchangeToJSON(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.assetUid !== \"\") {\n      obj.assetUid = message.assetUid;\n    }\n    if (message.instrumentExchange !== 0) {\n      obj.instrumentExchange = instrumentExchangeTypeToJSON(message.instrumentExchange);\n    }\n    if (message.forIisFlag !== false) {\n      obj.forIisFlag = message.forIisFlag;\n    }\n    if (message.forQualInvestorFlag !== false) {\n      obj.forQualInvestorFlag = message.forQualInvestorFlag;\n    }\n    if (message.weekendFlag !== false) {\n      obj.weekendFlag = message.weekendFlag;\n    }\n    if (message.blockedTcaFlag !== false) {\n      obj.blockedTcaFlag = message.blockedTcaFlag;\n    }\n    if (message.liquidityFlag !== false) {\n      obj.liquidityFlag = message.liquidityFlag;\n    }\n    if (message.first1minCandleDate !== undefined) {\n      obj.first1minCandleDate = message.first1minCandleDate.toISOString();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      obj.first1dayCandleDate = message.first1dayCandleDate.toISOString();\n    }\n    if (message.brand !== undefined) {\n      obj.brand = BrandData.toJSON(message.brand);\n    }\n    if (message.dlongClient !== undefined) {\n      obj.dlongClient = Quotation.toJSON(message.dlongClient);\n    }\n    if (message.dshortClient !== undefined) {\n      obj.dshortClient = Quotation.toJSON(message.dshortClient);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Etf>): Etf {\n    return Etf.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Etf>): Etf {\n    const message = createBaseEtf();\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.isin = object.isin ?? \"\";\n    message.lot = object.lot ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.klong = (object.klong !== undefined && object.klong !== null)\n      ? Quotation.fromPartial(object.klong)\n      : undefined;\n    message.kshort = (object.kshort !== undefined && object.kshort !== null)\n      ? Quotation.fromPartial(object.kshort)\n      : undefined;\n    message.dlong = (object.dlong !== undefined && object.dlong !== null)\n      ? Quotation.fromPartial(object.dlong)\n      : undefined;\n    message.dshort = (object.dshort !== undefined && object.dshort !== null)\n      ? Quotation.fromPartial(object.dshort)\n      : undefined;\n    message.dlongMin = (object.dlongMin !== undefined && object.dlongMin !== null)\n      ? Quotation.fromPartial(object.dlongMin)\n      : undefined;\n    message.dshortMin = (object.dshortMin !== undefined && object.dshortMin !== null)\n      ? Quotation.fromPartial(object.dshortMin)\n      : undefined;\n    message.shortEnabledFlag = object.shortEnabledFlag ?? false;\n    message.name = object.name ?? \"\";\n    message.exchange = object.exchange ?? \"\";\n    message.fixedCommission = (object.fixedCommission !== undefined && object.fixedCommission !== null)\n      ? Quotation.fromPartial(object.fixedCommission)\n      : undefined;\n    message.focusType = object.focusType ?? \"\";\n    message.releasedDate = object.releasedDate ?? undefined;\n    message.numShares = (object.numShares !== undefined && object.numShares !== null)\n      ? Quotation.fromPartial(object.numShares)\n      : undefined;\n    message.countryOfRisk = object.countryOfRisk ?? \"\";\n    message.countryOfRiskName = object.countryOfRiskName ?? \"\";\n    message.sector = object.sector ?? \"\";\n    message.rebalancingFreq = object.rebalancingFreq ?? \"\";\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.otcFlag = object.otcFlag ?? false;\n    message.buyAvailableFlag = object.buyAvailableFlag ?? false;\n    message.sellAvailableFlag = object.sellAvailableFlag ?? false;\n    message.minPriceIncrement = (object.minPriceIncrement !== undefined && object.minPriceIncrement !== null)\n      ? Quotation.fromPartial(object.minPriceIncrement)\n      : undefined;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.uid = object.uid ?? \"\";\n    message.realExchange = object.realExchange ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.assetUid = object.assetUid ?? \"\";\n    message.instrumentExchange = object.instrumentExchange ?? 0;\n    message.forIisFlag = object.forIisFlag ?? false;\n    message.forQualInvestorFlag = object.forQualInvestorFlag ?? false;\n    message.weekendFlag = object.weekendFlag ?? false;\n    message.blockedTcaFlag = object.blockedTcaFlag ?? false;\n    message.liquidityFlag = object.liquidityFlag ?? false;\n    message.first1minCandleDate = object.first1minCandleDate ?? undefined;\n    message.first1dayCandleDate = object.first1dayCandleDate ?? undefined;\n    message.brand = (object.brand !== undefined && object.brand !== null)\n      ? BrandData.fromPartial(object.brand)\n      : undefined;\n    message.dlongClient = (object.dlongClient !== undefined && object.dlongClient !== null)\n      ? Quotation.fromPartial(object.dlongClient)\n      : undefined;\n    message.dshortClient = (object.dshortClient !== undefined && object.dshortClient !== null)\n      ? Quotation.fromPartial(object.dshortClient)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFuture(): Future {\n  return {\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    lot: 0,\n    currency: \"\",\n    klong: undefined,\n    kshort: undefined,\n    dlong: undefined,\n    dshort: undefined,\n    dlongMin: undefined,\n    dshortMin: undefined,\n    shortEnabledFlag: false,\n    name: \"\",\n    exchange: \"\",\n    firstTradeDate: undefined,\n    lastTradeDate: undefined,\n    futuresType: \"\",\n    assetType: \"\",\n    basicAsset: \"\",\n    basicAssetSize: undefined,\n    countryOfRisk: \"\",\n    countryOfRiskName: \"\",\n    sector: \"\",\n    expirationDate: undefined,\n    tradingStatus: 0,\n    otcFlag: false,\n    buyAvailableFlag: false,\n    sellAvailableFlag: false,\n    minPriceIncrement: undefined,\n    apiTradeAvailableFlag: false,\n    uid: \"\",\n    realExchange: 0,\n    positionUid: \"\",\n    basicAssetPositionUid: \"\",\n    forIisFlag: false,\n    forQualInvestorFlag: false,\n    weekendFlag: false,\n    blockedTcaFlag: false,\n    first1minCandleDate: undefined,\n    first1dayCandleDate: undefined,\n    initialMarginOnBuy: undefined,\n    initialMarginOnSell: undefined,\n    minPriceIncrementAmount: undefined,\n    brand: undefined,\n    dlongClient: undefined,\n    dshortClient: undefined,\n  };\n}\n\nexport const Future: MessageFns<Future> = {\n  encode(message: Future, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(26).string(message.classCode);\n    }\n    if (message.lot !== 0) {\n      writer.uint32(32).int32(message.lot);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(42).string(message.currency);\n    }\n    if (message.klong !== undefined) {\n      Quotation.encode(message.klong, writer.uint32(50).fork()).join();\n    }\n    if (message.kshort !== undefined) {\n      Quotation.encode(message.kshort, writer.uint32(58).fork()).join();\n    }\n    if (message.dlong !== undefined) {\n      Quotation.encode(message.dlong, writer.uint32(66).fork()).join();\n    }\n    if (message.dshort !== undefined) {\n      Quotation.encode(message.dshort, writer.uint32(74).fork()).join();\n    }\n    if (message.dlongMin !== undefined) {\n      Quotation.encode(message.dlongMin, writer.uint32(82).fork()).join();\n    }\n    if (message.dshortMin !== undefined) {\n      Quotation.encode(message.dshortMin, writer.uint32(90).fork()).join();\n    }\n    if (message.shortEnabledFlag !== false) {\n      writer.uint32(96).bool(message.shortEnabledFlag);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(106).string(message.name);\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(114).string(message.exchange);\n    }\n    if (message.firstTradeDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.firstTradeDate), writer.uint32(122).fork()).join();\n    }\n    if (message.lastTradeDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.lastTradeDate), writer.uint32(130).fork()).join();\n    }\n    if (message.futuresType !== \"\") {\n      writer.uint32(138).string(message.futuresType);\n    }\n    if (message.assetType !== \"\") {\n      writer.uint32(146).string(message.assetType);\n    }\n    if (message.basicAsset !== \"\") {\n      writer.uint32(154).string(message.basicAsset);\n    }\n    if (message.basicAssetSize !== undefined) {\n      Quotation.encode(message.basicAssetSize, writer.uint32(162).fork()).join();\n    }\n    if (message.countryOfRisk !== \"\") {\n      writer.uint32(170).string(message.countryOfRisk);\n    }\n    if (message.countryOfRiskName !== \"\") {\n      writer.uint32(178).string(message.countryOfRiskName);\n    }\n    if (message.sector !== \"\") {\n      writer.uint32(186).string(message.sector);\n    }\n    if (message.expirationDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.expirationDate), writer.uint32(194).fork()).join();\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(200).int32(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      writer.uint32(208).bool(message.otcFlag);\n    }\n    if (message.buyAvailableFlag !== false) {\n      writer.uint32(216).bool(message.buyAvailableFlag);\n    }\n    if (message.sellAvailableFlag !== false) {\n      writer.uint32(224).bool(message.sellAvailableFlag);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      Quotation.encode(message.minPriceIncrement, writer.uint32(234).fork()).join();\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(240).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(250).string(message.uid);\n    }\n    if (message.realExchange !== 0) {\n      writer.uint32(256).int32(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(266).string(message.positionUid);\n    }\n    if (message.basicAssetPositionUid !== \"\") {\n      writer.uint32(274).string(message.basicAssetPositionUid);\n    }\n    if (message.forIisFlag !== false) {\n      writer.uint32(328).bool(message.forIisFlag);\n    }\n    if (message.forQualInvestorFlag !== false) {\n      writer.uint32(336).bool(message.forQualInvestorFlag);\n    }\n    if (message.weekendFlag !== false) {\n      writer.uint32(344).bool(message.weekendFlag);\n    }\n    if (message.blockedTcaFlag !== false) {\n      writer.uint32(352).bool(message.blockedTcaFlag);\n    }\n    if (message.first1minCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1minCandleDate), writer.uint32(450).fork()).join();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1dayCandleDate), writer.uint32(458).fork()).join();\n    }\n    if (message.initialMarginOnBuy !== undefined) {\n      MoneyValue.encode(message.initialMarginOnBuy, writer.uint32(490).fork()).join();\n    }\n    if (message.initialMarginOnSell !== undefined) {\n      MoneyValue.encode(message.initialMarginOnSell, writer.uint32(498).fork()).join();\n    }\n    if (message.minPriceIncrementAmount !== undefined) {\n      Quotation.encode(message.minPriceIncrementAmount, writer.uint32(506).fork()).join();\n    }\n    if (message.brand !== undefined) {\n      BrandData.encode(message.brand, writer.uint32(514).fork()).join();\n    }\n    if (message.dlongClient !== undefined) {\n      Quotation.encode(message.dlongClient, writer.uint32(722).fork()).join();\n    }\n    if (message.dshortClient !== undefined) {\n      Quotation.encode(message.dshortClient, writer.uint32(730).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Future {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFuture();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.lot = reader.int32();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.klong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.kshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.dlong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.dshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.dlongMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.dshortMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.shortEnabledFlag = reader.bool();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.firstTradeDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.lastTradeDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.futuresType = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.assetType = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.basicAsset = reader.string();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.basicAssetSize = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.countryOfRisk = reader.string();\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.countryOfRiskName = reader.string();\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.sector = reader.string();\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.expirationDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 25: {\n          if (tag !== 200) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 26: {\n          if (tag !== 208) {\n            break;\n          }\n\n          message.otcFlag = reader.bool();\n          continue;\n        }\n        case 27: {\n          if (tag !== 216) {\n            break;\n          }\n\n          message.buyAvailableFlag = reader.bool();\n          continue;\n        }\n        case 28: {\n          if (tag !== 224) {\n            break;\n          }\n\n          message.sellAvailableFlag = reader.bool();\n          continue;\n        }\n        case 29: {\n          if (tag !== 234) {\n            break;\n          }\n\n          message.minPriceIncrement = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 30: {\n          if (tag !== 240) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 31: {\n          if (tag !== 250) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 32: {\n          if (tag !== 256) {\n            break;\n          }\n\n          message.realExchange = reader.int32() as any;\n          continue;\n        }\n        case 33: {\n          if (tag !== 266) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 34: {\n          if (tag !== 274) {\n            break;\n          }\n\n          message.basicAssetPositionUid = reader.string();\n          continue;\n        }\n        case 41: {\n          if (tag !== 328) {\n            break;\n          }\n\n          message.forIisFlag = reader.bool();\n          continue;\n        }\n        case 42: {\n          if (tag !== 336) {\n            break;\n          }\n\n          message.forQualInvestorFlag = reader.bool();\n          continue;\n        }\n        case 43: {\n          if (tag !== 344) {\n            break;\n          }\n\n          message.weekendFlag = reader.bool();\n          continue;\n        }\n        case 44: {\n          if (tag !== 352) {\n            break;\n          }\n\n          message.blockedTcaFlag = reader.bool();\n          continue;\n        }\n        case 56: {\n          if (tag !== 450) {\n            break;\n          }\n\n          message.first1minCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 57: {\n          if (tag !== 458) {\n            break;\n          }\n\n          message.first1dayCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 61: {\n          if (tag !== 490) {\n            break;\n          }\n\n          message.initialMarginOnBuy = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 62: {\n          if (tag !== 498) {\n            break;\n          }\n\n          message.initialMarginOnSell = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 63: {\n          if (tag !== 506) {\n            break;\n          }\n\n          message.minPriceIncrementAmount = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 64: {\n          if (tag !== 514) {\n            break;\n          }\n\n          message.brand = BrandData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 90: {\n          if (tag !== 722) {\n            break;\n          }\n\n          message.dlongClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 91: {\n          if (tag !== 730) {\n            break;\n          }\n\n          message.dshortClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Future {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      lot: isSet(object.lot) ? globalThis.Number(object.lot) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      klong: isSet(object.klong) ? Quotation.fromJSON(object.klong) : undefined,\n      kshort: isSet(object.kshort) ? Quotation.fromJSON(object.kshort) : undefined,\n      dlong: isSet(object.dlong) ? Quotation.fromJSON(object.dlong) : undefined,\n      dshort: isSet(object.dshort) ? Quotation.fromJSON(object.dshort) : undefined,\n      dlongMin: isSet(object.dlongMin) ? Quotation.fromJSON(object.dlongMin) : undefined,\n      dshortMin: isSet(object.dshortMin) ? Quotation.fromJSON(object.dshortMin) : undefined,\n      shortEnabledFlag: isSet(object.shortEnabledFlag) ? globalThis.Boolean(object.shortEnabledFlag) : false,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      firstTradeDate: isSet(object.firstTradeDate) ? fromJsonTimestamp(object.firstTradeDate) : undefined,\n      lastTradeDate: isSet(object.lastTradeDate) ? fromJsonTimestamp(object.lastTradeDate) : undefined,\n      futuresType: isSet(object.futuresType) ? globalThis.String(object.futuresType) : \"\",\n      assetType: isSet(object.assetType) ? globalThis.String(object.assetType) : \"\",\n      basicAsset: isSet(object.basicAsset) ? globalThis.String(object.basicAsset) : \"\",\n      basicAssetSize: isSet(object.basicAssetSize) ? Quotation.fromJSON(object.basicAssetSize) : undefined,\n      countryOfRisk: isSet(object.countryOfRisk) ? globalThis.String(object.countryOfRisk) : \"\",\n      countryOfRiskName: isSet(object.countryOfRiskName) ? globalThis.String(object.countryOfRiskName) : \"\",\n      sector: isSet(object.sector) ? globalThis.String(object.sector) : \"\",\n      expirationDate: isSet(object.expirationDate) ? fromJsonTimestamp(object.expirationDate) : undefined,\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      otcFlag: isSet(object.otcFlag) ? globalThis.Boolean(object.otcFlag) : false,\n      buyAvailableFlag: isSet(object.buyAvailableFlag) ? globalThis.Boolean(object.buyAvailableFlag) : false,\n      sellAvailableFlag: isSet(object.sellAvailableFlag) ? globalThis.Boolean(object.sellAvailableFlag) : false,\n      minPriceIncrement: isSet(object.minPriceIncrement) ? Quotation.fromJSON(object.minPriceIncrement) : undefined,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      realExchange: isSet(object.realExchange) ? realExchangeFromJSON(object.realExchange) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      basicAssetPositionUid: isSet(object.basicAssetPositionUid) ? globalThis.String(object.basicAssetPositionUid) : \"\",\n      forIisFlag: isSet(object.forIisFlag) ? globalThis.Boolean(object.forIisFlag) : false,\n      forQualInvestorFlag: isSet(object.forQualInvestorFlag) ? globalThis.Boolean(object.forQualInvestorFlag) : false,\n      weekendFlag: isSet(object.weekendFlag) ? globalThis.Boolean(object.weekendFlag) : false,\n      blockedTcaFlag: isSet(object.blockedTcaFlag) ? globalThis.Boolean(object.blockedTcaFlag) : false,\n      first1minCandleDate: isSet(object.first1minCandleDate)\n        ? fromJsonTimestamp(object.first1minCandleDate)\n        : undefined,\n      first1dayCandleDate: isSet(object.first1dayCandleDate)\n        ? fromJsonTimestamp(object.first1dayCandleDate)\n        : undefined,\n      initialMarginOnBuy: isSet(object.initialMarginOnBuy) ? MoneyValue.fromJSON(object.initialMarginOnBuy) : undefined,\n      initialMarginOnSell: isSet(object.initialMarginOnSell)\n        ? MoneyValue.fromJSON(object.initialMarginOnSell)\n        : undefined,\n      minPriceIncrementAmount: isSet(object.minPriceIncrementAmount)\n        ? Quotation.fromJSON(object.minPriceIncrementAmount)\n        : undefined,\n      brand: isSet(object.brand) ? BrandData.fromJSON(object.brand) : undefined,\n      dlongClient: isSet(object.dlongClient) ? Quotation.fromJSON(object.dlongClient) : undefined,\n      dshortClient: isSet(object.dshortClient) ? Quotation.fromJSON(object.dshortClient) : undefined,\n    };\n  },\n\n  toJSON(message: Future): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.lot !== 0) {\n      obj.lot = Math.round(message.lot);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.klong !== undefined) {\n      obj.klong = Quotation.toJSON(message.klong);\n    }\n    if (message.kshort !== undefined) {\n      obj.kshort = Quotation.toJSON(message.kshort);\n    }\n    if (message.dlong !== undefined) {\n      obj.dlong = Quotation.toJSON(message.dlong);\n    }\n    if (message.dshort !== undefined) {\n      obj.dshort = Quotation.toJSON(message.dshort);\n    }\n    if (message.dlongMin !== undefined) {\n      obj.dlongMin = Quotation.toJSON(message.dlongMin);\n    }\n    if (message.dshortMin !== undefined) {\n      obj.dshortMin = Quotation.toJSON(message.dshortMin);\n    }\n    if (message.shortEnabledFlag !== false) {\n      obj.shortEnabledFlag = message.shortEnabledFlag;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.firstTradeDate !== undefined) {\n      obj.firstTradeDate = message.firstTradeDate.toISOString();\n    }\n    if (message.lastTradeDate !== undefined) {\n      obj.lastTradeDate = message.lastTradeDate.toISOString();\n    }\n    if (message.futuresType !== \"\") {\n      obj.futuresType = message.futuresType;\n    }\n    if (message.assetType !== \"\") {\n      obj.assetType = message.assetType;\n    }\n    if (message.basicAsset !== \"\") {\n      obj.basicAsset = message.basicAsset;\n    }\n    if (message.basicAssetSize !== undefined) {\n      obj.basicAssetSize = Quotation.toJSON(message.basicAssetSize);\n    }\n    if (message.countryOfRisk !== \"\") {\n      obj.countryOfRisk = message.countryOfRisk;\n    }\n    if (message.countryOfRiskName !== \"\") {\n      obj.countryOfRiskName = message.countryOfRiskName;\n    }\n    if (message.sector !== \"\") {\n      obj.sector = message.sector;\n    }\n    if (message.expirationDate !== undefined) {\n      obj.expirationDate = message.expirationDate.toISOString();\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      obj.otcFlag = message.otcFlag;\n    }\n    if (message.buyAvailableFlag !== false) {\n      obj.buyAvailableFlag = message.buyAvailableFlag;\n    }\n    if (message.sellAvailableFlag !== false) {\n      obj.sellAvailableFlag = message.sellAvailableFlag;\n    }\n    if (message.minPriceIncrement !== undefined) {\n      obj.minPriceIncrement = Quotation.toJSON(message.minPriceIncrement);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.realExchange !== 0) {\n      obj.realExchange = realExchangeToJSON(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.basicAssetPositionUid !== \"\") {\n      obj.basicAssetPositionUid = message.basicAssetPositionUid;\n    }\n    if (message.forIisFlag !== false) {\n      obj.forIisFlag = message.forIisFlag;\n    }\n    if (message.forQualInvestorFlag !== false) {\n      obj.forQualInvestorFlag = message.forQualInvestorFlag;\n    }\n    if (message.weekendFlag !== false) {\n      obj.weekendFlag = message.weekendFlag;\n    }\n    if (message.blockedTcaFlag !== false) {\n      obj.blockedTcaFlag = message.blockedTcaFlag;\n    }\n    if (message.first1minCandleDate !== undefined) {\n      obj.first1minCandleDate = message.first1minCandleDate.toISOString();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      obj.first1dayCandleDate = message.first1dayCandleDate.toISOString();\n    }\n    if (message.initialMarginOnBuy !== undefined) {\n      obj.initialMarginOnBuy = MoneyValue.toJSON(message.initialMarginOnBuy);\n    }\n    if (message.initialMarginOnSell !== undefined) {\n      obj.initialMarginOnSell = MoneyValue.toJSON(message.initialMarginOnSell);\n    }\n    if (message.minPriceIncrementAmount !== undefined) {\n      obj.minPriceIncrementAmount = Quotation.toJSON(message.minPriceIncrementAmount);\n    }\n    if (message.brand !== undefined) {\n      obj.brand = BrandData.toJSON(message.brand);\n    }\n    if (message.dlongClient !== undefined) {\n      obj.dlongClient = Quotation.toJSON(message.dlongClient);\n    }\n    if (message.dshortClient !== undefined) {\n      obj.dshortClient = Quotation.toJSON(message.dshortClient);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Future>): Future {\n    return Future.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Future>): Future {\n    const message = createBaseFuture();\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.lot = object.lot ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.klong = (object.klong !== undefined && object.klong !== null)\n      ? Quotation.fromPartial(object.klong)\n      : undefined;\n    message.kshort = (object.kshort !== undefined && object.kshort !== null)\n      ? Quotation.fromPartial(object.kshort)\n      : undefined;\n    message.dlong = (object.dlong !== undefined && object.dlong !== null)\n      ? Quotation.fromPartial(object.dlong)\n      : undefined;\n    message.dshort = (object.dshort !== undefined && object.dshort !== null)\n      ? Quotation.fromPartial(object.dshort)\n      : undefined;\n    message.dlongMin = (object.dlongMin !== undefined && object.dlongMin !== null)\n      ? Quotation.fromPartial(object.dlongMin)\n      : undefined;\n    message.dshortMin = (object.dshortMin !== undefined && object.dshortMin !== null)\n      ? Quotation.fromPartial(object.dshortMin)\n      : undefined;\n    message.shortEnabledFlag = object.shortEnabledFlag ?? false;\n    message.name = object.name ?? \"\";\n    message.exchange = object.exchange ?? \"\";\n    message.firstTradeDate = object.firstTradeDate ?? undefined;\n    message.lastTradeDate = object.lastTradeDate ?? undefined;\n    message.futuresType = object.futuresType ?? \"\";\n    message.assetType = object.assetType ?? \"\";\n    message.basicAsset = object.basicAsset ?? \"\";\n    message.basicAssetSize = (object.basicAssetSize !== undefined && object.basicAssetSize !== null)\n      ? Quotation.fromPartial(object.basicAssetSize)\n      : undefined;\n    message.countryOfRisk = object.countryOfRisk ?? \"\";\n    message.countryOfRiskName = object.countryOfRiskName ?? \"\";\n    message.sector = object.sector ?? \"\";\n    message.expirationDate = object.expirationDate ?? undefined;\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.otcFlag = object.otcFlag ?? false;\n    message.buyAvailableFlag = object.buyAvailableFlag ?? false;\n    message.sellAvailableFlag = object.sellAvailableFlag ?? false;\n    message.minPriceIncrement = (object.minPriceIncrement !== undefined && object.minPriceIncrement !== null)\n      ? Quotation.fromPartial(object.minPriceIncrement)\n      : undefined;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.uid = object.uid ?? \"\";\n    message.realExchange = object.realExchange ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.basicAssetPositionUid = object.basicAssetPositionUid ?? \"\";\n    message.forIisFlag = object.forIisFlag ?? false;\n    message.forQualInvestorFlag = object.forQualInvestorFlag ?? false;\n    message.weekendFlag = object.weekendFlag ?? false;\n    message.blockedTcaFlag = object.blockedTcaFlag ?? false;\n    message.first1minCandleDate = object.first1minCandleDate ?? undefined;\n    message.first1dayCandleDate = object.first1dayCandleDate ?? undefined;\n    message.initialMarginOnBuy = (object.initialMarginOnBuy !== undefined && object.initialMarginOnBuy !== null)\n      ? MoneyValue.fromPartial(object.initialMarginOnBuy)\n      : undefined;\n    message.initialMarginOnSell = (object.initialMarginOnSell !== undefined && object.initialMarginOnSell !== null)\n      ? MoneyValue.fromPartial(object.initialMarginOnSell)\n      : undefined;\n    message.minPriceIncrementAmount =\n      (object.minPriceIncrementAmount !== undefined && object.minPriceIncrementAmount !== null)\n        ? Quotation.fromPartial(object.minPriceIncrementAmount)\n        : undefined;\n    message.brand = (object.brand !== undefined && object.brand !== null)\n      ? BrandData.fromPartial(object.brand)\n      : undefined;\n    message.dlongClient = (object.dlongClient !== undefined && object.dlongClient !== null)\n      ? Quotation.fromPartial(object.dlongClient)\n      : undefined;\n    message.dshortClient = (object.dshortClient !== undefined && object.dshortClient !== null)\n      ? Quotation.fromPartial(object.dshortClient)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseShare(): Share {\n  return {\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    isin: \"\",\n    lot: 0,\n    currency: \"\",\n    klong: undefined,\n    kshort: undefined,\n    dlong: undefined,\n    dshort: undefined,\n    dlongMin: undefined,\n    dshortMin: undefined,\n    shortEnabledFlag: false,\n    name: \"\",\n    exchange: \"\",\n    ipoDate: undefined,\n    issueSize: 0,\n    countryOfRisk: \"\",\n    countryOfRiskName: \"\",\n    sector: \"\",\n    issueSizePlan: 0,\n    nominal: undefined,\n    tradingStatus: 0,\n    otcFlag: false,\n    buyAvailableFlag: false,\n    sellAvailableFlag: false,\n    divYieldFlag: false,\n    shareType: 0,\n    minPriceIncrement: undefined,\n    apiTradeAvailableFlag: false,\n    uid: \"\",\n    realExchange: 0,\n    positionUid: \"\",\n    assetUid: \"\",\n    instrumentExchange: 0,\n    forIisFlag: false,\n    forQualInvestorFlag: false,\n    weekendFlag: false,\n    blockedTcaFlag: false,\n    liquidityFlag: false,\n    first1minCandleDate: undefined,\n    first1dayCandleDate: undefined,\n    brand: undefined,\n    dlongClient: undefined,\n    dshortClient: undefined,\n  };\n}\n\nexport const Share: MessageFns<Share> = {\n  encode(message: Share, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(26).string(message.classCode);\n    }\n    if (message.isin !== \"\") {\n      writer.uint32(34).string(message.isin);\n    }\n    if (message.lot !== 0) {\n      writer.uint32(40).int32(message.lot);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(50).string(message.currency);\n    }\n    if (message.klong !== undefined) {\n      Quotation.encode(message.klong, writer.uint32(58).fork()).join();\n    }\n    if (message.kshort !== undefined) {\n      Quotation.encode(message.kshort, writer.uint32(66).fork()).join();\n    }\n    if (message.dlong !== undefined) {\n      Quotation.encode(message.dlong, writer.uint32(74).fork()).join();\n    }\n    if (message.dshort !== undefined) {\n      Quotation.encode(message.dshort, writer.uint32(82).fork()).join();\n    }\n    if (message.dlongMin !== undefined) {\n      Quotation.encode(message.dlongMin, writer.uint32(90).fork()).join();\n    }\n    if (message.dshortMin !== undefined) {\n      Quotation.encode(message.dshortMin, writer.uint32(98).fork()).join();\n    }\n    if (message.shortEnabledFlag !== false) {\n      writer.uint32(104).bool(message.shortEnabledFlag);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(122).string(message.name);\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(130).string(message.exchange);\n    }\n    if (message.ipoDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.ipoDate), writer.uint32(138).fork()).join();\n    }\n    if (message.issueSize !== 0) {\n      writer.uint32(144).int64(message.issueSize);\n    }\n    if (message.countryOfRisk !== \"\") {\n      writer.uint32(154).string(message.countryOfRisk);\n    }\n    if (message.countryOfRiskName !== \"\") {\n      writer.uint32(162).string(message.countryOfRiskName);\n    }\n    if (message.sector !== \"\") {\n      writer.uint32(170).string(message.sector);\n    }\n    if (message.issueSizePlan !== 0) {\n      writer.uint32(176).int64(message.issueSizePlan);\n    }\n    if (message.nominal !== undefined) {\n      MoneyValue.encode(message.nominal, writer.uint32(186).fork()).join();\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(200).int32(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      writer.uint32(208).bool(message.otcFlag);\n    }\n    if (message.buyAvailableFlag !== false) {\n      writer.uint32(216).bool(message.buyAvailableFlag);\n    }\n    if (message.sellAvailableFlag !== false) {\n      writer.uint32(224).bool(message.sellAvailableFlag);\n    }\n    if (message.divYieldFlag !== false) {\n      writer.uint32(232).bool(message.divYieldFlag);\n    }\n    if (message.shareType !== 0) {\n      writer.uint32(240).int32(message.shareType);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      Quotation.encode(message.minPriceIncrement, writer.uint32(250).fork()).join();\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(256).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(266).string(message.uid);\n    }\n    if (message.realExchange !== 0) {\n      writer.uint32(272).int32(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(282).string(message.positionUid);\n    }\n    if (message.assetUid !== \"\") {\n      writer.uint32(290).string(message.assetUid);\n    }\n    if (message.instrumentExchange !== 0) {\n      writer.uint32(296).int32(message.instrumentExchange);\n    }\n    if (message.forIisFlag !== false) {\n      writer.uint32(368).bool(message.forIisFlag);\n    }\n    if (message.forQualInvestorFlag !== false) {\n      writer.uint32(376).bool(message.forQualInvestorFlag);\n    }\n    if (message.weekendFlag !== false) {\n      writer.uint32(384).bool(message.weekendFlag);\n    }\n    if (message.blockedTcaFlag !== false) {\n      writer.uint32(392).bool(message.blockedTcaFlag);\n    }\n    if (message.liquidityFlag !== false) {\n      writer.uint32(400).bool(message.liquidityFlag);\n    }\n    if (message.first1minCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1minCandleDate), writer.uint32(450).fork()).join();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1dayCandleDate), writer.uint32(458).fork()).join();\n    }\n    if (message.brand !== undefined) {\n      BrandData.encode(message.brand, writer.uint32(482).fork()).join();\n    }\n    if (message.dlongClient !== undefined) {\n      Quotation.encode(message.dlongClient, writer.uint32(722).fork()).join();\n    }\n    if (message.dshortClient !== undefined) {\n      Quotation.encode(message.dshortClient, writer.uint32(730).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Share {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseShare();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.lot = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.klong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.kshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.dlong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.dshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.dlongMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.dshortMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.shortEnabledFlag = reader.bool();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.ipoDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 18: {\n          if (tag !== 144) {\n            break;\n          }\n\n          message.issueSize = longToNumber(reader.int64());\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.countryOfRisk = reader.string();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.countryOfRiskName = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.sector = reader.string();\n          continue;\n        }\n        case 22: {\n          if (tag !== 176) {\n            break;\n          }\n\n          message.issueSizePlan = longToNumber(reader.int64());\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.nominal = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 25: {\n          if (tag !== 200) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 26: {\n          if (tag !== 208) {\n            break;\n          }\n\n          message.otcFlag = reader.bool();\n          continue;\n        }\n        case 27: {\n          if (tag !== 216) {\n            break;\n          }\n\n          message.buyAvailableFlag = reader.bool();\n          continue;\n        }\n        case 28: {\n          if (tag !== 224) {\n            break;\n          }\n\n          message.sellAvailableFlag = reader.bool();\n          continue;\n        }\n        case 29: {\n          if (tag !== 232) {\n            break;\n          }\n\n          message.divYieldFlag = reader.bool();\n          continue;\n        }\n        case 30: {\n          if (tag !== 240) {\n            break;\n          }\n\n          message.shareType = reader.int32() as any;\n          continue;\n        }\n        case 31: {\n          if (tag !== 250) {\n            break;\n          }\n\n          message.minPriceIncrement = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 32: {\n          if (tag !== 256) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 33: {\n          if (tag !== 266) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 34: {\n          if (tag !== 272) {\n            break;\n          }\n\n          message.realExchange = reader.int32() as any;\n          continue;\n        }\n        case 35: {\n          if (tag !== 282) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 36: {\n          if (tag !== 290) {\n            break;\n          }\n\n          message.assetUid = reader.string();\n          continue;\n        }\n        case 37: {\n          if (tag !== 296) {\n            break;\n          }\n\n          message.instrumentExchange = reader.int32() as any;\n          continue;\n        }\n        case 46: {\n          if (tag !== 368) {\n            break;\n          }\n\n          message.forIisFlag = reader.bool();\n          continue;\n        }\n        case 47: {\n          if (tag !== 376) {\n            break;\n          }\n\n          message.forQualInvestorFlag = reader.bool();\n          continue;\n        }\n        case 48: {\n          if (tag !== 384) {\n            break;\n          }\n\n          message.weekendFlag = reader.bool();\n          continue;\n        }\n        case 49: {\n          if (tag !== 392) {\n            break;\n          }\n\n          message.blockedTcaFlag = reader.bool();\n          continue;\n        }\n        case 50: {\n          if (tag !== 400) {\n            break;\n          }\n\n          message.liquidityFlag = reader.bool();\n          continue;\n        }\n        case 56: {\n          if (tag !== 450) {\n            break;\n          }\n\n          message.first1minCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 57: {\n          if (tag !== 458) {\n            break;\n          }\n\n          message.first1dayCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 60: {\n          if (tag !== 482) {\n            break;\n          }\n\n          message.brand = BrandData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 90: {\n          if (tag !== 722) {\n            break;\n          }\n\n          message.dlongClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 91: {\n          if (tag !== 730) {\n            break;\n          }\n\n          message.dshortClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Share {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      lot: isSet(object.lot) ? globalThis.Number(object.lot) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      klong: isSet(object.klong) ? Quotation.fromJSON(object.klong) : undefined,\n      kshort: isSet(object.kshort) ? Quotation.fromJSON(object.kshort) : undefined,\n      dlong: isSet(object.dlong) ? Quotation.fromJSON(object.dlong) : undefined,\n      dshort: isSet(object.dshort) ? Quotation.fromJSON(object.dshort) : undefined,\n      dlongMin: isSet(object.dlongMin) ? Quotation.fromJSON(object.dlongMin) : undefined,\n      dshortMin: isSet(object.dshortMin) ? Quotation.fromJSON(object.dshortMin) : undefined,\n      shortEnabledFlag: isSet(object.shortEnabledFlag) ? globalThis.Boolean(object.shortEnabledFlag) : false,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      ipoDate: isSet(object.ipoDate) ? fromJsonTimestamp(object.ipoDate) : undefined,\n      issueSize: isSet(object.issueSize) ? globalThis.Number(object.issueSize) : 0,\n      countryOfRisk: isSet(object.countryOfRisk) ? globalThis.String(object.countryOfRisk) : \"\",\n      countryOfRiskName: isSet(object.countryOfRiskName) ? globalThis.String(object.countryOfRiskName) : \"\",\n      sector: isSet(object.sector) ? globalThis.String(object.sector) : \"\",\n      issueSizePlan: isSet(object.issueSizePlan) ? globalThis.Number(object.issueSizePlan) : 0,\n      nominal: isSet(object.nominal) ? MoneyValue.fromJSON(object.nominal) : undefined,\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      otcFlag: isSet(object.otcFlag) ? globalThis.Boolean(object.otcFlag) : false,\n      buyAvailableFlag: isSet(object.buyAvailableFlag) ? globalThis.Boolean(object.buyAvailableFlag) : false,\n      sellAvailableFlag: isSet(object.sellAvailableFlag) ? globalThis.Boolean(object.sellAvailableFlag) : false,\n      divYieldFlag: isSet(object.divYieldFlag) ? globalThis.Boolean(object.divYieldFlag) : false,\n      shareType: isSet(object.shareType) ? shareTypeFromJSON(object.shareType) : 0,\n      minPriceIncrement: isSet(object.minPriceIncrement) ? Quotation.fromJSON(object.minPriceIncrement) : undefined,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      realExchange: isSet(object.realExchange) ? realExchangeFromJSON(object.realExchange) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      assetUid: isSet(object.assetUid) ? globalThis.String(object.assetUid) : \"\",\n      instrumentExchange: isSet(object.instrumentExchange)\n        ? instrumentExchangeTypeFromJSON(object.instrumentExchange)\n        : 0,\n      forIisFlag: isSet(object.forIisFlag) ? globalThis.Boolean(object.forIisFlag) : false,\n      forQualInvestorFlag: isSet(object.forQualInvestorFlag) ? globalThis.Boolean(object.forQualInvestorFlag) : false,\n      weekendFlag: isSet(object.weekendFlag) ? globalThis.Boolean(object.weekendFlag) : false,\n      blockedTcaFlag: isSet(object.blockedTcaFlag) ? globalThis.Boolean(object.blockedTcaFlag) : false,\n      liquidityFlag: isSet(object.liquidityFlag) ? globalThis.Boolean(object.liquidityFlag) : false,\n      first1minCandleDate: isSet(object.first1minCandleDate)\n        ? fromJsonTimestamp(object.first1minCandleDate)\n        : undefined,\n      first1dayCandleDate: isSet(object.first1dayCandleDate)\n        ? fromJsonTimestamp(object.first1dayCandleDate)\n        : undefined,\n      brand: isSet(object.brand) ? BrandData.fromJSON(object.brand) : undefined,\n      dlongClient: isSet(object.dlongClient) ? Quotation.fromJSON(object.dlongClient) : undefined,\n      dshortClient: isSet(object.dshortClient) ? Quotation.fromJSON(object.dshortClient) : undefined,\n    };\n  },\n\n  toJSON(message: Share): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.lot !== 0) {\n      obj.lot = Math.round(message.lot);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.klong !== undefined) {\n      obj.klong = Quotation.toJSON(message.klong);\n    }\n    if (message.kshort !== undefined) {\n      obj.kshort = Quotation.toJSON(message.kshort);\n    }\n    if (message.dlong !== undefined) {\n      obj.dlong = Quotation.toJSON(message.dlong);\n    }\n    if (message.dshort !== undefined) {\n      obj.dshort = Quotation.toJSON(message.dshort);\n    }\n    if (message.dlongMin !== undefined) {\n      obj.dlongMin = Quotation.toJSON(message.dlongMin);\n    }\n    if (message.dshortMin !== undefined) {\n      obj.dshortMin = Quotation.toJSON(message.dshortMin);\n    }\n    if (message.shortEnabledFlag !== false) {\n      obj.shortEnabledFlag = message.shortEnabledFlag;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.ipoDate !== undefined) {\n      obj.ipoDate = message.ipoDate.toISOString();\n    }\n    if (message.issueSize !== 0) {\n      obj.issueSize = Math.round(message.issueSize);\n    }\n    if (message.countryOfRisk !== \"\") {\n      obj.countryOfRisk = message.countryOfRisk;\n    }\n    if (message.countryOfRiskName !== \"\") {\n      obj.countryOfRiskName = message.countryOfRiskName;\n    }\n    if (message.sector !== \"\") {\n      obj.sector = message.sector;\n    }\n    if (message.issueSizePlan !== 0) {\n      obj.issueSizePlan = Math.round(message.issueSizePlan);\n    }\n    if (message.nominal !== undefined) {\n      obj.nominal = MoneyValue.toJSON(message.nominal);\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      obj.otcFlag = message.otcFlag;\n    }\n    if (message.buyAvailableFlag !== false) {\n      obj.buyAvailableFlag = message.buyAvailableFlag;\n    }\n    if (message.sellAvailableFlag !== false) {\n      obj.sellAvailableFlag = message.sellAvailableFlag;\n    }\n    if (message.divYieldFlag !== false) {\n      obj.divYieldFlag = message.divYieldFlag;\n    }\n    if (message.shareType !== 0) {\n      obj.shareType = shareTypeToJSON(message.shareType);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      obj.minPriceIncrement = Quotation.toJSON(message.minPriceIncrement);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.realExchange !== 0) {\n      obj.realExchange = realExchangeToJSON(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.assetUid !== \"\") {\n      obj.assetUid = message.assetUid;\n    }\n    if (message.instrumentExchange !== 0) {\n      obj.instrumentExchange = instrumentExchangeTypeToJSON(message.instrumentExchange);\n    }\n    if (message.forIisFlag !== false) {\n      obj.forIisFlag = message.forIisFlag;\n    }\n    if (message.forQualInvestorFlag !== false) {\n      obj.forQualInvestorFlag = message.forQualInvestorFlag;\n    }\n    if (message.weekendFlag !== false) {\n      obj.weekendFlag = message.weekendFlag;\n    }\n    if (message.blockedTcaFlag !== false) {\n      obj.blockedTcaFlag = message.blockedTcaFlag;\n    }\n    if (message.liquidityFlag !== false) {\n      obj.liquidityFlag = message.liquidityFlag;\n    }\n    if (message.first1minCandleDate !== undefined) {\n      obj.first1minCandleDate = message.first1minCandleDate.toISOString();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      obj.first1dayCandleDate = message.first1dayCandleDate.toISOString();\n    }\n    if (message.brand !== undefined) {\n      obj.brand = BrandData.toJSON(message.brand);\n    }\n    if (message.dlongClient !== undefined) {\n      obj.dlongClient = Quotation.toJSON(message.dlongClient);\n    }\n    if (message.dshortClient !== undefined) {\n      obj.dshortClient = Quotation.toJSON(message.dshortClient);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Share>): Share {\n    return Share.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Share>): Share {\n    const message = createBaseShare();\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.isin = object.isin ?? \"\";\n    message.lot = object.lot ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.klong = (object.klong !== undefined && object.klong !== null)\n      ? Quotation.fromPartial(object.klong)\n      : undefined;\n    message.kshort = (object.kshort !== undefined && object.kshort !== null)\n      ? Quotation.fromPartial(object.kshort)\n      : undefined;\n    message.dlong = (object.dlong !== undefined && object.dlong !== null)\n      ? Quotation.fromPartial(object.dlong)\n      : undefined;\n    message.dshort = (object.dshort !== undefined && object.dshort !== null)\n      ? Quotation.fromPartial(object.dshort)\n      : undefined;\n    message.dlongMin = (object.dlongMin !== undefined && object.dlongMin !== null)\n      ? Quotation.fromPartial(object.dlongMin)\n      : undefined;\n    message.dshortMin = (object.dshortMin !== undefined && object.dshortMin !== null)\n      ? Quotation.fromPartial(object.dshortMin)\n      : undefined;\n    message.shortEnabledFlag = object.shortEnabledFlag ?? false;\n    message.name = object.name ?? \"\";\n    message.exchange = object.exchange ?? \"\";\n    message.ipoDate = object.ipoDate ?? undefined;\n    message.issueSize = object.issueSize ?? 0;\n    message.countryOfRisk = object.countryOfRisk ?? \"\";\n    message.countryOfRiskName = object.countryOfRiskName ?? \"\";\n    message.sector = object.sector ?? \"\";\n    message.issueSizePlan = object.issueSizePlan ?? 0;\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? MoneyValue.fromPartial(object.nominal)\n      : undefined;\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.otcFlag = object.otcFlag ?? false;\n    message.buyAvailableFlag = object.buyAvailableFlag ?? false;\n    message.sellAvailableFlag = object.sellAvailableFlag ?? false;\n    message.divYieldFlag = object.divYieldFlag ?? false;\n    message.shareType = object.shareType ?? 0;\n    message.minPriceIncrement = (object.minPriceIncrement !== undefined && object.minPriceIncrement !== null)\n      ? Quotation.fromPartial(object.minPriceIncrement)\n      : undefined;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.uid = object.uid ?? \"\";\n    message.realExchange = object.realExchange ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.assetUid = object.assetUid ?? \"\";\n    message.instrumentExchange = object.instrumentExchange ?? 0;\n    message.forIisFlag = object.forIisFlag ?? false;\n    message.forQualInvestorFlag = object.forQualInvestorFlag ?? false;\n    message.weekendFlag = object.weekendFlag ?? false;\n    message.blockedTcaFlag = object.blockedTcaFlag ?? false;\n    message.liquidityFlag = object.liquidityFlag ?? false;\n    message.first1minCandleDate = object.first1minCandleDate ?? undefined;\n    message.first1dayCandleDate = object.first1dayCandleDate ?? undefined;\n    message.brand = (object.brand !== undefined && object.brand !== null)\n      ? BrandData.fromPartial(object.brand)\n      : undefined;\n    message.dlongClient = (object.dlongClient !== undefined && object.dlongClient !== null)\n      ? Quotation.fromPartial(object.dlongClient)\n      : undefined;\n    message.dshortClient = (object.dshortClient !== undefined && object.dshortClient !== null)\n      ? Quotation.fromPartial(object.dshortClient)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetAccruedInterestsRequest(): GetAccruedInterestsRequest {\n  return { figi: \"\", from: undefined, to: undefined, instrumentId: \"\" };\n}\n\nexport const GetAccruedInterestsRequest: MessageFns<GetAccruedInterestsRequest> = {\n  encode(message: GetAccruedInterestsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(34).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAccruedInterestsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAccruedInterestsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAccruedInterestsRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: GetAccruedInterestsRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetAccruedInterestsRequest>): GetAccruedInterestsRequest {\n    return GetAccruedInterestsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetAccruedInterestsRequest>): GetAccruedInterestsRequest {\n    const message = createBaseGetAccruedInterestsRequest();\n    message.figi = object.figi ?? \"\";\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetAccruedInterestsResponse(): GetAccruedInterestsResponse {\n  return { accruedInterests: [] };\n}\n\nexport const GetAccruedInterestsResponse: MessageFns<GetAccruedInterestsResponse> = {\n  encode(message: GetAccruedInterestsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.accruedInterests) {\n      AccruedInterest.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAccruedInterestsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAccruedInterestsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accruedInterests.push(AccruedInterest.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAccruedInterestsResponse {\n    return {\n      accruedInterests: globalThis.Array.isArray(object?.accruedInterests)\n        ? object.accruedInterests.map((e: any) => AccruedInterest.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetAccruedInterestsResponse): unknown {\n    const obj: any = {};\n    if (message.accruedInterests?.length) {\n      obj.accruedInterests = message.accruedInterests.map((e) => AccruedInterest.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetAccruedInterestsResponse>): GetAccruedInterestsResponse {\n    return GetAccruedInterestsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetAccruedInterestsResponse>): GetAccruedInterestsResponse {\n    const message = createBaseGetAccruedInterestsResponse();\n    message.accruedInterests = object.accruedInterests?.map((e) => AccruedInterest.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseAccruedInterest(): AccruedInterest {\n  return { date: undefined, value: undefined, valuePercent: undefined, nominal: undefined };\n}\n\nexport const AccruedInterest: MessageFns<AccruedInterest> = {\n  encode(message: AccruedInterest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.date !== undefined) {\n      Timestamp.encode(toTimestamp(message.date), writer.uint32(10).fork()).join();\n    }\n    if (message.value !== undefined) {\n      Quotation.encode(message.value, writer.uint32(18).fork()).join();\n    }\n    if (message.valuePercent !== undefined) {\n      Quotation.encode(message.valuePercent, writer.uint32(26).fork()).join();\n    }\n    if (message.nominal !== undefined) {\n      Quotation.encode(message.nominal, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AccruedInterest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAccruedInterest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.date = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.value = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.valuePercent = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.nominal = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AccruedInterest {\n    return {\n      date: isSet(object.date) ? fromJsonTimestamp(object.date) : undefined,\n      value: isSet(object.value) ? Quotation.fromJSON(object.value) : undefined,\n      valuePercent: isSet(object.valuePercent) ? Quotation.fromJSON(object.valuePercent) : undefined,\n      nominal: isSet(object.nominal) ? Quotation.fromJSON(object.nominal) : undefined,\n    };\n  },\n\n  toJSON(message: AccruedInterest): unknown {\n    const obj: any = {};\n    if (message.date !== undefined) {\n      obj.date = message.date.toISOString();\n    }\n    if (message.value !== undefined) {\n      obj.value = Quotation.toJSON(message.value);\n    }\n    if (message.valuePercent !== undefined) {\n      obj.valuePercent = Quotation.toJSON(message.valuePercent);\n    }\n    if (message.nominal !== undefined) {\n      obj.nominal = Quotation.toJSON(message.nominal);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AccruedInterest>): AccruedInterest {\n    return AccruedInterest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AccruedInterest>): AccruedInterest {\n    const message = createBaseAccruedInterest();\n    message.date = object.date ?? undefined;\n    message.value = (object.value !== undefined && object.value !== null)\n      ? Quotation.fromPartial(object.value)\n      : undefined;\n    message.valuePercent = (object.valuePercent !== undefined && object.valuePercent !== null)\n      ? Quotation.fromPartial(object.valuePercent)\n      : undefined;\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? Quotation.fromPartial(object.nominal)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetFuturesMarginRequest(): GetFuturesMarginRequest {\n  return { figi: \"\", instrumentId: \"\" };\n}\n\nexport const GetFuturesMarginRequest: MessageFns<GetFuturesMarginRequest> = {\n  encode(message: GetFuturesMarginRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(34).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetFuturesMarginRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetFuturesMarginRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetFuturesMarginRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: GetFuturesMarginRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetFuturesMarginRequest>): GetFuturesMarginRequest {\n    return GetFuturesMarginRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetFuturesMarginRequest>): GetFuturesMarginRequest {\n    const message = createBaseGetFuturesMarginRequest();\n    message.figi = object.figi ?? \"\";\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetFuturesMarginResponse(): GetFuturesMarginResponse {\n  return {\n    initialMarginOnBuy: undefined,\n    initialMarginOnSell: undefined,\n    minPriceIncrement: undefined,\n    minPriceIncrementAmount: undefined,\n  };\n}\n\nexport const GetFuturesMarginResponse: MessageFns<GetFuturesMarginResponse> = {\n  encode(message: GetFuturesMarginResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.initialMarginOnBuy !== undefined) {\n      MoneyValue.encode(message.initialMarginOnBuy, writer.uint32(10).fork()).join();\n    }\n    if (message.initialMarginOnSell !== undefined) {\n      MoneyValue.encode(message.initialMarginOnSell, writer.uint32(18).fork()).join();\n    }\n    if (message.minPriceIncrement !== undefined) {\n      Quotation.encode(message.minPriceIncrement, writer.uint32(26).fork()).join();\n    }\n    if (message.minPriceIncrementAmount !== undefined) {\n      Quotation.encode(message.minPriceIncrementAmount, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetFuturesMarginResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetFuturesMarginResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.initialMarginOnBuy = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.initialMarginOnSell = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.minPriceIncrement = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.minPriceIncrementAmount = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetFuturesMarginResponse {\n    return {\n      initialMarginOnBuy: isSet(object.initialMarginOnBuy) ? MoneyValue.fromJSON(object.initialMarginOnBuy) : undefined,\n      initialMarginOnSell: isSet(object.initialMarginOnSell)\n        ? MoneyValue.fromJSON(object.initialMarginOnSell)\n        : undefined,\n      minPriceIncrement: isSet(object.minPriceIncrement) ? Quotation.fromJSON(object.minPriceIncrement) : undefined,\n      minPriceIncrementAmount: isSet(object.minPriceIncrementAmount)\n        ? Quotation.fromJSON(object.minPriceIncrementAmount)\n        : undefined,\n    };\n  },\n\n  toJSON(message: GetFuturesMarginResponse): unknown {\n    const obj: any = {};\n    if (message.initialMarginOnBuy !== undefined) {\n      obj.initialMarginOnBuy = MoneyValue.toJSON(message.initialMarginOnBuy);\n    }\n    if (message.initialMarginOnSell !== undefined) {\n      obj.initialMarginOnSell = MoneyValue.toJSON(message.initialMarginOnSell);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      obj.minPriceIncrement = Quotation.toJSON(message.minPriceIncrement);\n    }\n    if (message.minPriceIncrementAmount !== undefined) {\n      obj.minPriceIncrementAmount = Quotation.toJSON(message.minPriceIncrementAmount);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetFuturesMarginResponse>): GetFuturesMarginResponse {\n    return GetFuturesMarginResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetFuturesMarginResponse>): GetFuturesMarginResponse {\n    const message = createBaseGetFuturesMarginResponse();\n    message.initialMarginOnBuy = (object.initialMarginOnBuy !== undefined && object.initialMarginOnBuy !== null)\n      ? MoneyValue.fromPartial(object.initialMarginOnBuy)\n      : undefined;\n    message.initialMarginOnSell = (object.initialMarginOnSell !== undefined && object.initialMarginOnSell !== null)\n      ? MoneyValue.fromPartial(object.initialMarginOnSell)\n      : undefined;\n    message.minPriceIncrement = (object.minPriceIncrement !== undefined && object.minPriceIncrement !== null)\n      ? Quotation.fromPartial(object.minPriceIncrement)\n      : undefined;\n    message.minPriceIncrementAmount =\n      (object.minPriceIncrementAmount !== undefined && object.minPriceIncrementAmount !== null)\n        ? Quotation.fromPartial(object.minPriceIncrementAmount)\n        : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInstrumentResponse(): InstrumentResponse {\n  return { instrument: undefined };\n}\n\nexport const InstrumentResponse: MessageFns<InstrumentResponse> = {\n  encode(message: InstrumentResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrument !== undefined) {\n      Instrument.encode(message.instrument, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InstrumentResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInstrumentResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrument = Instrument.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InstrumentResponse {\n    return { instrument: isSet(object.instrument) ? Instrument.fromJSON(object.instrument) : undefined };\n  },\n\n  toJSON(message: InstrumentResponse): unknown {\n    const obj: any = {};\n    if (message.instrument !== undefined) {\n      obj.instrument = Instrument.toJSON(message.instrument);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InstrumentResponse>): InstrumentResponse {\n    return InstrumentResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InstrumentResponse>): InstrumentResponse {\n    const message = createBaseInstrumentResponse();\n    message.instrument = (object.instrument !== undefined && object.instrument !== null)\n      ? Instrument.fromPartial(object.instrument)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInstrument(): Instrument {\n  return {\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    isin: \"\",\n    lot: 0,\n    currency: \"\",\n    klong: undefined,\n    kshort: undefined,\n    dlong: undefined,\n    dshort: undefined,\n    dlongMin: undefined,\n    dshortMin: undefined,\n    shortEnabledFlag: false,\n    name: \"\",\n    exchange: \"\",\n    countryOfRisk: \"\",\n    countryOfRiskName: \"\",\n    instrumentType: \"\",\n    tradingStatus: 0,\n    otcFlag: false,\n    buyAvailableFlag: false,\n    sellAvailableFlag: false,\n    minPriceIncrement: undefined,\n    apiTradeAvailableFlag: false,\n    uid: \"\",\n    realExchange: 0,\n    positionUid: \"\",\n    assetUid: \"\",\n    forIisFlag: false,\n    forQualInvestorFlag: false,\n    weekendFlag: false,\n    blockedTcaFlag: false,\n    instrumentKind: 0,\n    first1minCandleDate: undefined,\n    first1dayCandleDate: undefined,\n    brand: undefined,\n    dlongClient: undefined,\n    dshortClient: undefined,\n  };\n}\n\nexport const Instrument: MessageFns<Instrument> = {\n  encode(message: Instrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(26).string(message.classCode);\n    }\n    if (message.isin !== \"\") {\n      writer.uint32(34).string(message.isin);\n    }\n    if (message.lot !== 0) {\n      writer.uint32(40).int32(message.lot);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(50).string(message.currency);\n    }\n    if (message.klong !== undefined) {\n      Quotation.encode(message.klong, writer.uint32(58).fork()).join();\n    }\n    if (message.kshort !== undefined) {\n      Quotation.encode(message.kshort, writer.uint32(66).fork()).join();\n    }\n    if (message.dlong !== undefined) {\n      Quotation.encode(message.dlong, writer.uint32(74).fork()).join();\n    }\n    if (message.dshort !== undefined) {\n      Quotation.encode(message.dshort, writer.uint32(82).fork()).join();\n    }\n    if (message.dlongMin !== undefined) {\n      Quotation.encode(message.dlongMin, writer.uint32(90).fork()).join();\n    }\n    if (message.dshortMin !== undefined) {\n      Quotation.encode(message.dshortMin, writer.uint32(98).fork()).join();\n    }\n    if (message.shortEnabledFlag !== false) {\n      writer.uint32(104).bool(message.shortEnabledFlag);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(114).string(message.name);\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(122).string(message.exchange);\n    }\n    if (message.countryOfRisk !== \"\") {\n      writer.uint32(130).string(message.countryOfRisk);\n    }\n    if (message.countryOfRiskName !== \"\") {\n      writer.uint32(138).string(message.countryOfRiskName);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(146).string(message.instrumentType);\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(152).int32(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      writer.uint32(160).bool(message.otcFlag);\n    }\n    if (message.buyAvailableFlag !== false) {\n      writer.uint32(168).bool(message.buyAvailableFlag);\n    }\n    if (message.sellAvailableFlag !== false) {\n      writer.uint32(176).bool(message.sellAvailableFlag);\n    }\n    if (message.minPriceIncrement !== undefined) {\n      Quotation.encode(message.minPriceIncrement, writer.uint32(186).fork()).join();\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(192).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(202).string(message.uid);\n    }\n    if (message.realExchange !== 0) {\n      writer.uint32(208).int32(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(218).string(message.positionUid);\n    }\n    if (message.assetUid !== \"\") {\n      writer.uint32(226).string(message.assetUid);\n    }\n    if (message.forIisFlag !== false) {\n      writer.uint32(288).bool(message.forIisFlag);\n    }\n    if (message.forQualInvestorFlag !== false) {\n      writer.uint32(296).bool(message.forQualInvestorFlag);\n    }\n    if (message.weekendFlag !== false) {\n      writer.uint32(304).bool(message.weekendFlag);\n    }\n    if (message.blockedTcaFlag !== false) {\n      writer.uint32(312).bool(message.blockedTcaFlag);\n    }\n    if (message.instrumentKind !== 0) {\n      writer.uint32(320).int32(message.instrumentKind);\n    }\n    if (message.first1minCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1minCandleDate), writer.uint32(450).fork()).join();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1dayCandleDate), writer.uint32(458).fork()).join();\n    }\n    if (message.brand !== undefined) {\n      BrandData.encode(message.brand, writer.uint32(482).fork()).join();\n    }\n    if (message.dlongClient !== undefined) {\n      Quotation.encode(message.dlongClient, writer.uint32(3922).fork()).join();\n    }\n    if (message.dshortClient !== undefined) {\n      Quotation.encode(message.dshortClient, writer.uint32(3930).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Instrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.lot = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.klong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.kshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.dlong = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.dshort = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.dlongMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.dshortMin = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.shortEnabledFlag = reader.bool();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.countryOfRisk = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.countryOfRiskName = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 152) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 20: {\n          if (tag !== 160) {\n            break;\n          }\n\n          message.otcFlag = reader.bool();\n          continue;\n        }\n        case 21: {\n          if (tag !== 168) {\n            break;\n          }\n\n          message.buyAvailableFlag = reader.bool();\n          continue;\n        }\n        case 22: {\n          if (tag !== 176) {\n            break;\n          }\n\n          message.sellAvailableFlag = reader.bool();\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.minPriceIncrement = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 24: {\n          if (tag !== 192) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 26: {\n          if (tag !== 208) {\n            break;\n          }\n\n          message.realExchange = reader.int32() as any;\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 28: {\n          if (tag !== 226) {\n            break;\n          }\n\n          message.assetUid = reader.string();\n          continue;\n        }\n        case 36: {\n          if (tag !== 288) {\n            break;\n          }\n\n          message.forIisFlag = reader.bool();\n          continue;\n        }\n        case 37: {\n          if (tag !== 296) {\n            break;\n          }\n\n          message.forQualInvestorFlag = reader.bool();\n          continue;\n        }\n        case 38: {\n          if (tag !== 304) {\n            break;\n          }\n\n          message.weekendFlag = reader.bool();\n          continue;\n        }\n        case 39: {\n          if (tag !== 312) {\n            break;\n          }\n\n          message.blockedTcaFlag = reader.bool();\n          continue;\n        }\n        case 40: {\n          if (tag !== 320) {\n            break;\n          }\n\n          message.instrumentKind = reader.int32() as any;\n          continue;\n        }\n        case 56: {\n          if (tag !== 450) {\n            break;\n          }\n\n          message.first1minCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 57: {\n          if (tag !== 458) {\n            break;\n          }\n\n          message.first1dayCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 60: {\n          if (tag !== 482) {\n            break;\n          }\n\n          message.brand = BrandData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 490: {\n          if (tag !== 3922) {\n            break;\n          }\n\n          message.dlongClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 491: {\n          if (tag !== 3930) {\n            break;\n          }\n\n          message.dshortClient = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Instrument {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      lot: isSet(object.lot) ? globalThis.Number(object.lot) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      klong: isSet(object.klong) ? Quotation.fromJSON(object.klong) : undefined,\n      kshort: isSet(object.kshort) ? Quotation.fromJSON(object.kshort) : undefined,\n      dlong: isSet(object.dlong) ? Quotation.fromJSON(object.dlong) : undefined,\n      dshort: isSet(object.dshort) ? Quotation.fromJSON(object.dshort) : undefined,\n      dlongMin: isSet(object.dlongMin) ? Quotation.fromJSON(object.dlongMin) : undefined,\n      dshortMin: isSet(object.dshortMin) ? Quotation.fromJSON(object.dshortMin) : undefined,\n      shortEnabledFlag: isSet(object.shortEnabledFlag) ? globalThis.Boolean(object.shortEnabledFlag) : false,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      countryOfRisk: isSet(object.countryOfRisk) ? globalThis.String(object.countryOfRisk) : \"\",\n      countryOfRiskName: isSet(object.countryOfRiskName) ? globalThis.String(object.countryOfRiskName) : \"\",\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      otcFlag: isSet(object.otcFlag) ? globalThis.Boolean(object.otcFlag) : false,\n      buyAvailableFlag: isSet(object.buyAvailableFlag) ? globalThis.Boolean(object.buyAvailableFlag) : false,\n      sellAvailableFlag: isSet(object.sellAvailableFlag) ? globalThis.Boolean(object.sellAvailableFlag) : false,\n      minPriceIncrement: isSet(object.minPriceIncrement) ? Quotation.fromJSON(object.minPriceIncrement) : undefined,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      realExchange: isSet(object.realExchange) ? realExchangeFromJSON(object.realExchange) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      assetUid: isSet(object.assetUid) ? globalThis.String(object.assetUid) : \"\",\n      forIisFlag: isSet(object.forIisFlag) ? globalThis.Boolean(object.forIisFlag) : false,\n      forQualInvestorFlag: isSet(object.forQualInvestorFlag) ? globalThis.Boolean(object.forQualInvestorFlag) : false,\n      weekendFlag: isSet(object.weekendFlag) ? globalThis.Boolean(object.weekendFlag) : false,\n      blockedTcaFlag: isSet(object.blockedTcaFlag) ? globalThis.Boolean(object.blockedTcaFlag) : false,\n      instrumentKind: isSet(object.instrumentKind) ? instrumentTypeFromJSON(object.instrumentKind) : 0,\n      first1minCandleDate: isSet(object.first1minCandleDate)\n        ? fromJsonTimestamp(object.first1minCandleDate)\n        : undefined,\n      first1dayCandleDate: isSet(object.first1dayCandleDate)\n        ? fromJsonTimestamp(object.first1dayCandleDate)\n        : undefined,\n      brand: isSet(object.brand) ? BrandData.fromJSON(object.brand) : undefined,\n      dlongClient: isSet(object.dlongClient) ? Quotation.fromJSON(object.dlongClient) : undefined,\n      dshortClient: isSet(object.dshortClient) ? Quotation.fromJSON(object.dshortClient) : undefined,\n    };\n  },\n\n  toJSON(message: Instrument): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.lot !== 0) {\n      obj.lot = Math.round(message.lot);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.klong !== undefined) {\n      obj.klong = Quotation.toJSON(message.klong);\n    }\n    if (message.kshort !== undefined) {\n      obj.kshort = Quotation.toJSON(message.kshort);\n    }\n    if (message.dlong !== undefined) {\n      obj.dlong = Quotation.toJSON(message.dlong);\n    }\n    if (message.dshort !== undefined) {\n      obj.dshort = Quotation.toJSON(message.dshort);\n    }\n    if (message.dlongMin !== undefined) {\n      obj.dlongMin = Quotation.toJSON(message.dlongMin);\n    }\n    if (message.dshortMin !== undefined) {\n      obj.dshortMin = Quotation.toJSON(message.dshortMin);\n    }\n    if (message.shortEnabledFlag !== false) {\n      obj.shortEnabledFlag = message.shortEnabledFlag;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.countryOfRisk !== \"\") {\n      obj.countryOfRisk = message.countryOfRisk;\n    }\n    if (message.countryOfRiskName !== \"\") {\n      obj.countryOfRiskName = message.countryOfRiskName;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.otcFlag !== false) {\n      obj.otcFlag = message.otcFlag;\n    }\n    if (message.buyAvailableFlag !== false) {\n      obj.buyAvailableFlag = message.buyAvailableFlag;\n    }\n    if (message.sellAvailableFlag !== false) {\n      obj.sellAvailableFlag = message.sellAvailableFlag;\n    }\n    if (message.minPriceIncrement !== undefined) {\n      obj.minPriceIncrement = Quotation.toJSON(message.minPriceIncrement);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.realExchange !== 0) {\n      obj.realExchange = realExchangeToJSON(message.realExchange);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.assetUid !== \"\") {\n      obj.assetUid = message.assetUid;\n    }\n    if (message.forIisFlag !== false) {\n      obj.forIisFlag = message.forIisFlag;\n    }\n    if (message.forQualInvestorFlag !== false) {\n      obj.forQualInvestorFlag = message.forQualInvestorFlag;\n    }\n    if (message.weekendFlag !== false) {\n      obj.weekendFlag = message.weekendFlag;\n    }\n    if (message.blockedTcaFlag !== false) {\n      obj.blockedTcaFlag = message.blockedTcaFlag;\n    }\n    if (message.instrumentKind !== 0) {\n      obj.instrumentKind = instrumentTypeToJSON(message.instrumentKind);\n    }\n    if (message.first1minCandleDate !== undefined) {\n      obj.first1minCandleDate = message.first1minCandleDate.toISOString();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      obj.first1dayCandleDate = message.first1dayCandleDate.toISOString();\n    }\n    if (message.brand !== undefined) {\n      obj.brand = BrandData.toJSON(message.brand);\n    }\n    if (message.dlongClient !== undefined) {\n      obj.dlongClient = Quotation.toJSON(message.dlongClient);\n    }\n    if (message.dshortClient !== undefined) {\n      obj.dshortClient = Quotation.toJSON(message.dshortClient);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Instrument>): Instrument {\n    return Instrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Instrument>): Instrument {\n    const message = createBaseInstrument();\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.isin = object.isin ?? \"\";\n    message.lot = object.lot ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.klong = (object.klong !== undefined && object.klong !== null)\n      ? Quotation.fromPartial(object.klong)\n      : undefined;\n    message.kshort = (object.kshort !== undefined && object.kshort !== null)\n      ? Quotation.fromPartial(object.kshort)\n      : undefined;\n    message.dlong = (object.dlong !== undefined && object.dlong !== null)\n      ? Quotation.fromPartial(object.dlong)\n      : undefined;\n    message.dshort = (object.dshort !== undefined && object.dshort !== null)\n      ? Quotation.fromPartial(object.dshort)\n      : undefined;\n    message.dlongMin = (object.dlongMin !== undefined && object.dlongMin !== null)\n      ? Quotation.fromPartial(object.dlongMin)\n      : undefined;\n    message.dshortMin = (object.dshortMin !== undefined && object.dshortMin !== null)\n      ? Quotation.fromPartial(object.dshortMin)\n      : undefined;\n    message.shortEnabledFlag = object.shortEnabledFlag ?? false;\n    message.name = object.name ?? \"\";\n    message.exchange = object.exchange ?? \"\";\n    message.countryOfRisk = object.countryOfRisk ?? \"\";\n    message.countryOfRiskName = object.countryOfRiskName ?? \"\";\n    message.instrumentType = object.instrumentType ?? \"\";\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.otcFlag = object.otcFlag ?? false;\n    message.buyAvailableFlag = object.buyAvailableFlag ?? false;\n    message.sellAvailableFlag = object.sellAvailableFlag ?? false;\n    message.minPriceIncrement = (object.minPriceIncrement !== undefined && object.minPriceIncrement !== null)\n      ? Quotation.fromPartial(object.minPriceIncrement)\n      : undefined;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.uid = object.uid ?? \"\";\n    message.realExchange = object.realExchange ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.assetUid = object.assetUid ?? \"\";\n    message.forIisFlag = object.forIisFlag ?? false;\n    message.forQualInvestorFlag = object.forQualInvestorFlag ?? false;\n    message.weekendFlag = object.weekendFlag ?? false;\n    message.blockedTcaFlag = object.blockedTcaFlag ?? false;\n    message.instrumentKind = object.instrumentKind ?? 0;\n    message.first1minCandleDate = object.first1minCandleDate ?? undefined;\n    message.first1dayCandleDate = object.first1dayCandleDate ?? undefined;\n    message.brand = (object.brand !== undefined && object.brand !== null)\n      ? BrandData.fromPartial(object.brand)\n      : undefined;\n    message.dlongClient = (object.dlongClient !== undefined && object.dlongClient !== null)\n      ? Quotation.fromPartial(object.dlongClient)\n      : undefined;\n    message.dshortClient = (object.dshortClient !== undefined && object.dshortClient !== null)\n      ? Quotation.fromPartial(object.dshortClient)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetDividendsRequest(): GetDividendsRequest {\n  return { figi: \"\", from: undefined, to: undefined, instrumentId: \"\" };\n}\n\nexport const GetDividendsRequest: MessageFns<GetDividendsRequest> = {\n  encode(message: GetDividendsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(34).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetDividendsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetDividendsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetDividendsRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: GetDividendsRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetDividendsRequest>): GetDividendsRequest {\n    return GetDividendsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetDividendsRequest>): GetDividendsRequest {\n    const message = createBaseGetDividendsRequest();\n    message.figi = object.figi ?? \"\";\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetDividendsResponse(): GetDividendsResponse {\n  return { dividends: [] };\n}\n\nexport const GetDividendsResponse: MessageFns<GetDividendsResponse> = {\n  encode(message: GetDividendsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.dividends) {\n      Dividend.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetDividendsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetDividendsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.dividends.push(Dividend.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetDividendsResponse {\n    return {\n      dividends: globalThis.Array.isArray(object?.dividends)\n        ? object.dividends.map((e: any) => Dividend.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetDividendsResponse): unknown {\n    const obj: any = {};\n    if (message.dividends?.length) {\n      obj.dividends = message.dividends.map((e) => Dividend.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetDividendsResponse>): GetDividendsResponse {\n    return GetDividendsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetDividendsResponse>): GetDividendsResponse {\n    const message = createBaseGetDividendsResponse();\n    message.dividends = object.dividends?.map((e) => Dividend.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseDividend(): Dividend {\n  return {\n    dividendNet: undefined,\n    paymentDate: undefined,\n    declaredDate: undefined,\n    lastBuyDate: undefined,\n    dividendType: \"\",\n    recordDate: undefined,\n    regularity: \"\",\n    closePrice: undefined,\n    yieldValue: undefined,\n    createdAt: undefined,\n  };\n}\n\nexport const Dividend: MessageFns<Dividend> = {\n  encode(message: Dividend, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.dividendNet !== undefined) {\n      MoneyValue.encode(message.dividendNet, writer.uint32(10).fork()).join();\n    }\n    if (message.paymentDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.paymentDate), writer.uint32(18).fork()).join();\n    }\n    if (message.declaredDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.declaredDate), writer.uint32(26).fork()).join();\n    }\n    if (message.lastBuyDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.lastBuyDate), writer.uint32(34).fork()).join();\n    }\n    if (message.dividendType !== \"\") {\n      writer.uint32(42).string(message.dividendType);\n    }\n    if (message.recordDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.recordDate), writer.uint32(50).fork()).join();\n    }\n    if (message.regularity !== \"\") {\n      writer.uint32(58).string(message.regularity);\n    }\n    if (message.closePrice !== undefined) {\n      MoneyValue.encode(message.closePrice, writer.uint32(66).fork()).join();\n    }\n    if (message.yieldValue !== undefined) {\n      Quotation.encode(message.yieldValue, writer.uint32(74).fork()).join();\n    }\n    if (message.createdAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.createdAt), writer.uint32(82).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Dividend {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDividend();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.dividendNet = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.paymentDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.declaredDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.lastBuyDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.dividendType = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.recordDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.regularity = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.closePrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.yieldValue = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.createdAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Dividend {\n    return {\n      dividendNet: isSet(object.dividendNet) ? MoneyValue.fromJSON(object.dividendNet) : undefined,\n      paymentDate: isSet(object.paymentDate) ? fromJsonTimestamp(object.paymentDate) : undefined,\n      declaredDate: isSet(object.declaredDate) ? fromJsonTimestamp(object.declaredDate) : undefined,\n      lastBuyDate: isSet(object.lastBuyDate) ? fromJsonTimestamp(object.lastBuyDate) : undefined,\n      dividendType: isSet(object.dividendType) ? globalThis.String(object.dividendType) : \"\",\n      recordDate: isSet(object.recordDate) ? fromJsonTimestamp(object.recordDate) : undefined,\n      regularity: isSet(object.regularity) ? globalThis.String(object.regularity) : \"\",\n      closePrice: isSet(object.closePrice) ? MoneyValue.fromJSON(object.closePrice) : undefined,\n      yieldValue: isSet(object.yieldValue) ? Quotation.fromJSON(object.yieldValue) : undefined,\n      createdAt: isSet(object.createdAt) ? fromJsonTimestamp(object.createdAt) : undefined,\n    };\n  },\n\n  toJSON(message: Dividend): unknown {\n    const obj: any = {};\n    if (message.dividendNet !== undefined) {\n      obj.dividendNet = MoneyValue.toJSON(message.dividendNet);\n    }\n    if (message.paymentDate !== undefined) {\n      obj.paymentDate = message.paymentDate.toISOString();\n    }\n    if (message.declaredDate !== undefined) {\n      obj.declaredDate = message.declaredDate.toISOString();\n    }\n    if (message.lastBuyDate !== undefined) {\n      obj.lastBuyDate = message.lastBuyDate.toISOString();\n    }\n    if (message.dividendType !== \"\") {\n      obj.dividendType = message.dividendType;\n    }\n    if (message.recordDate !== undefined) {\n      obj.recordDate = message.recordDate.toISOString();\n    }\n    if (message.regularity !== \"\") {\n      obj.regularity = message.regularity;\n    }\n    if (message.closePrice !== undefined) {\n      obj.closePrice = MoneyValue.toJSON(message.closePrice);\n    }\n    if (message.yieldValue !== undefined) {\n      obj.yieldValue = Quotation.toJSON(message.yieldValue);\n    }\n    if (message.createdAt !== undefined) {\n      obj.createdAt = message.createdAt.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Dividend>): Dividend {\n    return Dividend.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Dividend>): Dividend {\n    const message = createBaseDividend();\n    message.dividendNet = (object.dividendNet !== undefined && object.dividendNet !== null)\n      ? MoneyValue.fromPartial(object.dividendNet)\n      : undefined;\n    message.paymentDate = object.paymentDate ?? undefined;\n    message.declaredDate = object.declaredDate ?? undefined;\n    message.lastBuyDate = object.lastBuyDate ?? undefined;\n    message.dividendType = object.dividendType ?? \"\";\n    message.recordDate = object.recordDate ?? undefined;\n    message.regularity = object.regularity ?? \"\";\n    message.closePrice = (object.closePrice !== undefined && object.closePrice !== null)\n      ? MoneyValue.fromPartial(object.closePrice)\n      : undefined;\n    message.yieldValue = (object.yieldValue !== undefined && object.yieldValue !== null)\n      ? Quotation.fromPartial(object.yieldValue)\n      : undefined;\n    message.createdAt = object.createdAt ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseAssetRequest(): AssetRequest {\n  return { id: \"\" };\n}\n\nexport const AssetRequest: MessageFns<AssetRequest> = {\n  encode(message: AssetRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== \"\") {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetRequest {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : \"\" };\n  },\n\n  toJSON(message: AssetRequest): unknown {\n    const obj: any = {};\n    if (message.id !== \"\") {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetRequest>): AssetRequest {\n    return AssetRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetRequest>): AssetRequest {\n    const message = createBaseAssetRequest();\n    message.id = object.id ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseAssetResponse(): AssetResponse {\n  return { asset: undefined };\n}\n\nexport const AssetResponse: MessageFns<AssetResponse> = {\n  encode(message: AssetResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.asset !== undefined) {\n      AssetFull.encode(message.asset, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.asset = AssetFull.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetResponse {\n    return { asset: isSet(object.asset) ? AssetFull.fromJSON(object.asset) : undefined };\n  },\n\n  toJSON(message: AssetResponse): unknown {\n    const obj: any = {};\n    if (message.asset !== undefined) {\n      obj.asset = AssetFull.toJSON(message.asset);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetResponse>): AssetResponse {\n    return AssetResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetResponse>): AssetResponse {\n    const message = createBaseAssetResponse();\n    message.asset = (object.asset !== undefined && object.asset !== null)\n      ? AssetFull.fromPartial(object.asset)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAssetsRequest(): AssetsRequest {\n  return { instrumentType: undefined, instrumentStatus: undefined };\n}\n\nexport const AssetsRequest: MessageFns<AssetsRequest> = {\n  encode(message: AssetsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrumentType !== undefined) {\n      writer.uint32(8).int32(message.instrumentType);\n    }\n    if (message.instrumentStatus !== undefined) {\n      writer.uint32(16).int32(message.instrumentStatus);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.instrumentType = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.instrumentStatus = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetsRequest {\n    return {\n      instrumentType: isSet(object.instrumentType) ? instrumentTypeFromJSON(object.instrumentType) : undefined,\n      instrumentStatus: isSet(object.instrumentStatus) ? instrumentStatusFromJSON(object.instrumentStatus) : undefined,\n    };\n  },\n\n  toJSON(message: AssetsRequest): unknown {\n    const obj: any = {};\n    if (message.instrumentType !== undefined) {\n      obj.instrumentType = instrumentTypeToJSON(message.instrumentType);\n    }\n    if (message.instrumentStatus !== undefined) {\n      obj.instrumentStatus = instrumentStatusToJSON(message.instrumentStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetsRequest>): AssetsRequest {\n    return AssetsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetsRequest>): AssetsRequest {\n    const message = createBaseAssetsRequest();\n    message.instrumentType = object.instrumentType ?? undefined;\n    message.instrumentStatus = object.instrumentStatus ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseAssetsResponse(): AssetsResponse {\n  return { assets: [] };\n}\n\nexport const AssetsResponse: MessageFns<AssetsResponse> = {\n  encode(message: AssetsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.assets) {\n      Asset.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.assets.push(Asset.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetsResponse {\n    return { assets: globalThis.Array.isArray(object?.assets) ? object.assets.map((e: any) => Asset.fromJSON(e)) : [] };\n  },\n\n  toJSON(message: AssetsResponse): unknown {\n    const obj: any = {};\n    if (message.assets?.length) {\n      obj.assets = message.assets.map((e) => Asset.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetsResponse>): AssetsResponse {\n    return AssetsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetsResponse>): AssetsResponse {\n    const message = createBaseAssetsResponse();\n    message.assets = object.assets?.map((e) => Asset.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseAssetFull(): AssetFull {\n  return {\n    uid: \"\",\n    type: 0,\n    name: \"\",\n    nameBrief: \"\",\n    description: \"\",\n    deletedAt: undefined,\n    requiredTests: [],\n    currency: undefined,\n    security: undefined,\n    gosRegCode: \"\",\n    cfi: \"\",\n    codeNsd: \"\",\n    status: \"\",\n    brand: undefined,\n    updatedAt: undefined,\n    brCode: \"\",\n    brCodeName: \"\",\n    instruments: [],\n  };\n}\n\nexport const AssetFull: MessageFns<AssetFull> = {\n  encode(message: AssetFull, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.uid !== \"\") {\n      writer.uint32(10).string(message.uid);\n    }\n    if (message.type !== 0) {\n      writer.uint32(16).int32(message.type);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.nameBrief !== \"\") {\n      writer.uint32(34).string(message.nameBrief);\n    }\n    if (message.description !== \"\") {\n      writer.uint32(42).string(message.description);\n    }\n    if (message.deletedAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.deletedAt), writer.uint32(50).fork()).join();\n    }\n    for (const v of message.requiredTests) {\n      writer.uint32(58).string(v!);\n    }\n    if (message.currency !== undefined) {\n      AssetCurrency.encode(message.currency, writer.uint32(66).fork()).join();\n    }\n    if (message.security !== undefined) {\n      AssetSecurity.encode(message.security, writer.uint32(74).fork()).join();\n    }\n    if (message.gosRegCode !== \"\") {\n      writer.uint32(82).string(message.gosRegCode);\n    }\n    if (message.cfi !== \"\") {\n      writer.uint32(90).string(message.cfi);\n    }\n    if (message.codeNsd !== \"\") {\n      writer.uint32(98).string(message.codeNsd);\n    }\n    if (message.status !== \"\") {\n      writer.uint32(106).string(message.status);\n    }\n    if (message.brand !== undefined) {\n      Brand.encode(message.brand, writer.uint32(114).fork()).join();\n    }\n    if (message.updatedAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.updatedAt), writer.uint32(122).fork()).join();\n    }\n    if (message.brCode !== \"\") {\n      writer.uint32(130).string(message.brCode);\n    }\n    if (message.brCodeName !== \"\") {\n      writer.uint32(138).string(message.brCodeName);\n    }\n    for (const v of message.instruments) {\n      AssetInstrument.encode(v!, writer.uint32(146).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetFull {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetFull();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.type = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.nameBrief = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.deletedAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.requiredTests.push(reader.string());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.currency = AssetCurrency.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.security = AssetSecurity.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.gosRegCode = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.cfi = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.codeNsd = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.status = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.brand = Brand.decode(reader, reader.uint32());\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.updatedAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.brCode = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.brCodeName = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.instruments.push(AssetInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetFull {\n    return {\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      type: isSet(object.type) ? assetTypeFromJSON(object.type) : 0,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      nameBrief: isSet(object.nameBrief) ? globalThis.String(object.nameBrief) : \"\",\n      description: isSet(object.description) ? globalThis.String(object.description) : \"\",\n      deletedAt: isSet(object.deletedAt) ? fromJsonTimestamp(object.deletedAt) : undefined,\n      requiredTests: globalThis.Array.isArray(object?.requiredTests)\n        ? object.requiredTests.map((e: any) => globalThis.String(e))\n        : [],\n      currency: isSet(object.currency) ? AssetCurrency.fromJSON(object.currency) : undefined,\n      security: isSet(object.security) ? AssetSecurity.fromJSON(object.security) : undefined,\n      gosRegCode: isSet(object.gosRegCode) ? globalThis.String(object.gosRegCode) : \"\",\n      cfi: isSet(object.cfi) ? globalThis.String(object.cfi) : \"\",\n      codeNsd: isSet(object.codeNsd) ? globalThis.String(object.codeNsd) : \"\",\n      status: isSet(object.status) ? globalThis.String(object.status) : \"\",\n      brand: isSet(object.brand) ? Brand.fromJSON(object.brand) : undefined,\n      updatedAt: isSet(object.updatedAt) ? fromJsonTimestamp(object.updatedAt) : undefined,\n      brCode: isSet(object.brCode) ? globalThis.String(object.brCode) : \"\",\n      brCodeName: isSet(object.brCodeName) ? globalThis.String(object.brCodeName) : \"\",\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => AssetInstrument.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: AssetFull): unknown {\n    const obj: any = {};\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.type !== 0) {\n      obj.type = assetTypeToJSON(message.type);\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.nameBrief !== \"\") {\n      obj.nameBrief = message.nameBrief;\n    }\n    if (message.description !== \"\") {\n      obj.description = message.description;\n    }\n    if (message.deletedAt !== undefined) {\n      obj.deletedAt = message.deletedAt.toISOString();\n    }\n    if (message.requiredTests?.length) {\n      obj.requiredTests = message.requiredTests;\n    }\n    if (message.currency !== undefined) {\n      obj.currency = AssetCurrency.toJSON(message.currency);\n    }\n    if (message.security !== undefined) {\n      obj.security = AssetSecurity.toJSON(message.security);\n    }\n    if (message.gosRegCode !== \"\") {\n      obj.gosRegCode = message.gosRegCode;\n    }\n    if (message.cfi !== \"\") {\n      obj.cfi = message.cfi;\n    }\n    if (message.codeNsd !== \"\") {\n      obj.codeNsd = message.codeNsd;\n    }\n    if (message.status !== \"\") {\n      obj.status = message.status;\n    }\n    if (message.brand !== undefined) {\n      obj.brand = Brand.toJSON(message.brand);\n    }\n    if (message.updatedAt !== undefined) {\n      obj.updatedAt = message.updatedAt.toISOString();\n    }\n    if (message.brCode !== \"\") {\n      obj.brCode = message.brCode;\n    }\n    if (message.brCodeName !== \"\") {\n      obj.brCodeName = message.brCodeName;\n    }\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => AssetInstrument.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetFull>): AssetFull {\n    return AssetFull.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetFull>): AssetFull {\n    const message = createBaseAssetFull();\n    message.uid = object.uid ?? \"\";\n    message.type = object.type ?? 0;\n    message.name = object.name ?? \"\";\n    message.nameBrief = object.nameBrief ?? \"\";\n    message.description = object.description ?? \"\";\n    message.deletedAt = object.deletedAt ?? undefined;\n    message.requiredTests = object.requiredTests?.map((e) => e) || [];\n    message.currency = (object.currency !== undefined && object.currency !== null)\n      ? AssetCurrency.fromPartial(object.currency)\n      : undefined;\n    message.security = (object.security !== undefined && object.security !== null)\n      ? AssetSecurity.fromPartial(object.security)\n      : undefined;\n    message.gosRegCode = object.gosRegCode ?? \"\";\n    message.cfi = object.cfi ?? \"\";\n    message.codeNsd = object.codeNsd ?? \"\";\n    message.status = object.status ?? \"\";\n    message.brand = (object.brand !== undefined && object.brand !== null) ? Brand.fromPartial(object.brand) : undefined;\n    message.updatedAt = object.updatedAt ?? undefined;\n    message.brCode = object.brCode ?? \"\";\n    message.brCodeName = object.brCodeName ?? \"\";\n    message.instruments = object.instruments?.map((e) => AssetInstrument.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseAsset(): Asset {\n  return { uid: \"\", type: 0, name: \"\", instruments: [] };\n}\n\nexport const Asset: MessageFns<Asset> = {\n  encode(message: Asset, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.uid !== \"\") {\n      writer.uint32(10).string(message.uid);\n    }\n    if (message.type !== 0) {\n      writer.uint32(16).int32(message.type);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(26).string(message.name);\n    }\n    for (const v of message.instruments) {\n      AssetInstrument.encode(v!, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Asset {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAsset();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.type = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instruments.push(AssetInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Asset {\n    return {\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      type: isSet(object.type) ? assetTypeFromJSON(object.type) : 0,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => AssetInstrument.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: Asset): unknown {\n    const obj: any = {};\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.type !== 0) {\n      obj.type = assetTypeToJSON(message.type);\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => AssetInstrument.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Asset>): Asset {\n    return Asset.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Asset>): Asset {\n    const message = createBaseAsset();\n    message.uid = object.uid ?? \"\";\n    message.type = object.type ?? 0;\n    message.name = object.name ?? \"\";\n    message.instruments = object.instruments?.map((e) => AssetInstrument.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseAssetCurrency(): AssetCurrency {\n  return { baseCurrency: \"\" };\n}\n\nexport const AssetCurrency: MessageFns<AssetCurrency> = {\n  encode(message: AssetCurrency, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.baseCurrency !== \"\") {\n      writer.uint32(10).string(message.baseCurrency);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetCurrency {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetCurrency();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.baseCurrency = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetCurrency {\n    return { baseCurrency: isSet(object.baseCurrency) ? globalThis.String(object.baseCurrency) : \"\" };\n  },\n\n  toJSON(message: AssetCurrency): unknown {\n    const obj: any = {};\n    if (message.baseCurrency !== \"\") {\n      obj.baseCurrency = message.baseCurrency;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetCurrency>): AssetCurrency {\n    return AssetCurrency.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetCurrency>): AssetCurrency {\n    const message = createBaseAssetCurrency();\n    message.baseCurrency = object.baseCurrency ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseAssetSecurity(): AssetSecurity {\n  return {\n    isin: \"\",\n    type: \"\",\n    instrumentKind: 0,\n    share: undefined,\n    bond: undefined,\n    sp: undefined,\n    etf: undefined,\n    clearingCertificate: undefined,\n  };\n}\n\nexport const AssetSecurity: MessageFns<AssetSecurity> = {\n  encode(message: AssetSecurity, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.isin !== \"\") {\n      writer.uint32(10).string(message.isin);\n    }\n    if (message.type !== \"\") {\n      writer.uint32(18).string(message.type);\n    }\n    if (message.instrumentKind !== 0) {\n      writer.uint32(80).int32(message.instrumentKind);\n    }\n    if (message.share !== undefined) {\n      AssetShare.encode(message.share, writer.uint32(26).fork()).join();\n    }\n    if (message.bond !== undefined) {\n      AssetBond.encode(message.bond, writer.uint32(34).fork()).join();\n    }\n    if (message.sp !== undefined) {\n      AssetStructuredProduct.encode(message.sp, writer.uint32(42).fork()).join();\n    }\n    if (message.etf !== undefined) {\n      AssetEtf.encode(message.etf, writer.uint32(50).fork()).join();\n    }\n    if (message.clearingCertificate !== undefined) {\n      AssetClearingCertificate.encode(message.clearingCertificate, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetSecurity {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetSecurity();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.instrumentKind = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.share = AssetShare.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.bond = AssetBond.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.sp = AssetStructuredProduct.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.etf = AssetEtf.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.clearingCertificate = AssetClearingCertificate.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetSecurity {\n    return {\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      type: isSet(object.type) ? globalThis.String(object.type) : \"\",\n      instrumentKind: isSet(object.instrumentKind) ? instrumentTypeFromJSON(object.instrumentKind) : 0,\n      share: isSet(object.share) ? AssetShare.fromJSON(object.share) : undefined,\n      bond: isSet(object.bond) ? AssetBond.fromJSON(object.bond) : undefined,\n      sp: isSet(object.sp) ? AssetStructuredProduct.fromJSON(object.sp) : undefined,\n      etf: isSet(object.etf) ? AssetEtf.fromJSON(object.etf) : undefined,\n      clearingCertificate: isSet(object.clearingCertificate)\n        ? AssetClearingCertificate.fromJSON(object.clearingCertificate)\n        : undefined,\n    };\n  },\n\n  toJSON(message: AssetSecurity): unknown {\n    const obj: any = {};\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.type !== \"\") {\n      obj.type = message.type;\n    }\n    if (message.instrumentKind !== 0) {\n      obj.instrumentKind = instrumentTypeToJSON(message.instrumentKind);\n    }\n    if (message.share !== undefined) {\n      obj.share = AssetShare.toJSON(message.share);\n    }\n    if (message.bond !== undefined) {\n      obj.bond = AssetBond.toJSON(message.bond);\n    }\n    if (message.sp !== undefined) {\n      obj.sp = AssetStructuredProduct.toJSON(message.sp);\n    }\n    if (message.etf !== undefined) {\n      obj.etf = AssetEtf.toJSON(message.etf);\n    }\n    if (message.clearingCertificate !== undefined) {\n      obj.clearingCertificate = AssetClearingCertificate.toJSON(message.clearingCertificate);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetSecurity>): AssetSecurity {\n    return AssetSecurity.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetSecurity>): AssetSecurity {\n    const message = createBaseAssetSecurity();\n    message.isin = object.isin ?? \"\";\n    message.type = object.type ?? \"\";\n    message.instrumentKind = object.instrumentKind ?? 0;\n    message.share = (object.share !== undefined && object.share !== null)\n      ? AssetShare.fromPartial(object.share)\n      : undefined;\n    message.bond = (object.bond !== undefined && object.bond !== null) ? AssetBond.fromPartial(object.bond) : undefined;\n    message.sp = (object.sp !== undefined && object.sp !== null)\n      ? AssetStructuredProduct.fromPartial(object.sp)\n      : undefined;\n    message.etf = (object.etf !== undefined && object.etf !== null) ? AssetEtf.fromPartial(object.etf) : undefined;\n    message.clearingCertificate = (object.clearingCertificate !== undefined && object.clearingCertificate !== null)\n      ? AssetClearingCertificate.fromPartial(object.clearingCertificate)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAssetShare(): AssetShare {\n  return {\n    type: 0,\n    issueSize: undefined,\n    nominal: undefined,\n    nominalCurrency: \"\",\n    primaryIndex: \"\",\n    dividendRate: undefined,\n    preferredShareType: \"\",\n    ipoDate: undefined,\n    registryDate: undefined,\n    divYieldFlag: false,\n    issueKind: \"\",\n    placementDate: undefined,\n    represIsin: \"\",\n    issueSizePlan: undefined,\n    totalFloat: undefined,\n  };\n}\n\nexport const AssetShare: MessageFns<AssetShare> = {\n  encode(message: AssetShare, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.type !== 0) {\n      writer.uint32(8).int32(message.type);\n    }\n    if (message.issueSize !== undefined) {\n      Quotation.encode(message.issueSize, writer.uint32(18).fork()).join();\n    }\n    if (message.nominal !== undefined) {\n      Quotation.encode(message.nominal, writer.uint32(26).fork()).join();\n    }\n    if (message.nominalCurrency !== \"\") {\n      writer.uint32(34).string(message.nominalCurrency);\n    }\n    if (message.primaryIndex !== \"\") {\n      writer.uint32(42).string(message.primaryIndex);\n    }\n    if (message.dividendRate !== undefined) {\n      Quotation.encode(message.dividendRate, writer.uint32(50).fork()).join();\n    }\n    if (message.preferredShareType !== \"\") {\n      writer.uint32(58).string(message.preferredShareType);\n    }\n    if (message.ipoDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.ipoDate), writer.uint32(66).fork()).join();\n    }\n    if (message.registryDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.registryDate), writer.uint32(74).fork()).join();\n    }\n    if (message.divYieldFlag !== false) {\n      writer.uint32(80).bool(message.divYieldFlag);\n    }\n    if (message.issueKind !== \"\") {\n      writer.uint32(90).string(message.issueKind);\n    }\n    if (message.placementDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.placementDate), writer.uint32(98).fork()).join();\n    }\n    if (message.represIsin !== \"\") {\n      writer.uint32(106).string(message.represIsin);\n    }\n    if (message.issueSizePlan !== undefined) {\n      Quotation.encode(message.issueSizePlan, writer.uint32(114).fork()).join();\n    }\n    if (message.totalFloat !== undefined) {\n      Quotation.encode(message.totalFloat, writer.uint32(122).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetShare {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetShare();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.type = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.issueSize = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.nominal = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.nominalCurrency = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.primaryIndex = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.dividendRate = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.preferredShareType = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.ipoDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.registryDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.divYieldFlag = reader.bool();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.issueKind = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.placementDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.represIsin = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.issueSizePlan = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.totalFloat = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetShare {\n    return {\n      type: isSet(object.type) ? shareTypeFromJSON(object.type) : 0,\n      issueSize: isSet(object.issueSize) ? Quotation.fromJSON(object.issueSize) : undefined,\n      nominal: isSet(object.nominal) ? Quotation.fromJSON(object.nominal) : undefined,\n      nominalCurrency: isSet(object.nominalCurrency) ? globalThis.String(object.nominalCurrency) : \"\",\n      primaryIndex: isSet(object.primaryIndex) ? globalThis.String(object.primaryIndex) : \"\",\n      dividendRate: isSet(object.dividendRate) ? Quotation.fromJSON(object.dividendRate) : undefined,\n      preferredShareType: isSet(object.preferredShareType) ? globalThis.String(object.preferredShareType) : \"\",\n      ipoDate: isSet(object.ipoDate) ? fromJsonTimestamp(object.ipoDate) : undefined,\n      registryDate: isSet(object.registryDate) ? fromJsonTimestamp(object.registryDate) : undefined,\n      divYieldFlag: isSet(object.divYieldFlag) ? globalThis.Boolean(object.divYieldFlag) : false,\n      issueKind: isSet(object.issueKind) ? globalThis.String(object.issueKind) : \"\",\n      placementDate: isSet(object.placementDate) ? fromJsonTimestamp(object.placementDate) : undefined,\n      represIsin: isSet(object.represIsin) ? globalThis.String(object.represIsin) : \"\",\n      issueSizePlan: isSet(object.issueSizePlan) ? Quotation.fromJSON(object.issueSizePlan) : undefined,\n      totalFloat: isSet(object.totalFloat) ? Quotation.fromJSON(object.totalFloat) : undefined,\n    };\n  },\n\n  toJSON(message: AssetShare): unknown {\n    const obj: any = {};\n    if (message.type !== 0) {\n      obj.type = shareTypeToJSON(message.type);\n    }\n    if (message.issueSize !== undefined) {\n      obj.issueSize = Quotation.toJSON(message.issueSize);\n    }\n    if (message.nominal !== undefined) {\n      obj.nominal = Quotation.toJSON(message.nominal);\n    }\n    if (message.nominalCurrency !== \"\") {\n      obj.nominalCurrency = message.nominalCurrency;\n    }\n    if (message.primaryIndex !== \"\") {\n      obj.primaryIndex = message.primaryIndex;\n    }\n    if (message.dividendRate !== undefined) {\n      obj.dividendRate = Quotation.toJSON(message.dividendRate);\n    }\n    if (message.preferredShareType !== \"\") {\n      obj.preferredShareType = message.preferredShareType;\n    }\n    if (message.ipoDate !== undefined) {\n      obj.ipoDate = message.ipoDate.toISOString();\n    }\n    if (message.registryDate !== undefined) {\n      obj.registryDate = message.registryDate.toISOString();\n    }\n    if (message.divYieldFlag !== false) {\n      obj.divYieldFlag = message.divYieldFlag;\n    }\n    if (message.issueKind !== \"\") {\n      obj.issueKind = message.issueKind;\n    }\n    if (message.placementDate !== undefined) {\n      obj.placementDate = message.placementDate.toISOString();\n    }\n    if (message.represIsin !== \"\") {\n      obj.represIsin = message.represIsin;\n    }\n    if (message.issueSizePlan !== undefined) {\n      obj.issueSizePlan = Quotation.toJSON(message.issueSizePlan);\n    }\n    if (message.totalFloat !== undefined) {\n      obj.totalFloat = Quotation.toJSON(message.totalFloat);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetShare>): AssetShare {\n    return AssetShare.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetShare>): AssetShare {\n    const message = createBaseAssetShare();\n    message.type = object.type ?? 0;\n    message.issueSize = (object.issueSize !== undefined && object.issueSize !== null)\n      ? Quotation.fromPartial(object.issueSize)\n      : undefined;\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? Quotation.fromPartial(object.nominal)\n      : undefined;\n    message.nominalCurrency = object.nominalCurrency ?? \"\";\n    message.primaryIndex = object.primaryIndex ?? \"\";\n    message.dividendRate = (object.dividendRate !== undefined && object.dividendRate !== null)\n      ? Quotation.fromPartial(object.dividendRate)\n      : undefined;\n    message.preferredShareType = object.preferredShareType ?? \"\";\n    message.ipoDate = object.ipoDate ?? undefined;\n    message.registryDate = object.registryDate ?? undefined;\n    message.divYieldFlag = object.divYieldFlag ?? false;\n    message.issueKind = object.issueKind ?? \"\";\n    message.placementDate = object.placementDate ?? undefined;\n    message.represIsin = object.represIsin ?? \"\";\n    message.issueSizePlan = (object.issueSizePlan !== undefined && object.issueSizePlan !== null)\n      ? Quotation.fromPartial(object.issueSizePlan)\n      : undefined;\n    message.totalFloat = (object.totalFloat !== undefined && object.totalFloat !== null)\n      ? Quotation.fromPartial(object.totalFloat)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAssetBond(): AssetBond {\n  return {\n    currentNominal: undefined,\n    borrowName: \"\",\n    issueSize: undefined,\n    nominal: undefined,\n    nominalCurrency: \"\",\n    issueKind: \"\",\n    interestKind: \"\",\n    couponQuantityPerYear: 0,\n    indexedNominalFlag: false,\n    subordinatedFlag: false,\n    collateralFlag: false,\n    taxFreeFlag: false,\n    amortizationFlag: false,\n    floatingCouponFlag: false,\n    perpetualFlag: false,\n    maturityDate: undefined,\n    returnCondition: \"\",\n    stateRegDate: undefined,\n    placementDate: undefined,\n    placementPrice: undefined,\n    issueSizePlan: undefined,\n  };\n}\n\nexport const AssetBond: MessageFns<AssetBond> = {\n  encode(message: AssetBond, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.currentNominal !== undefined) {\n      Quotation.encode(message.currentNominal, writer.uint32(10).fork()).join();\n    }\n    if (message.borrowName !== \"\") {\n      writer.uint32(18).string(message.borrowName);\n    }\n    if (message.issueSize !== undefined) {\n      Quotation.encode(message.issueSize, writer.uint32(26).fork()).join();\n    }\n    if (message.nominal !== undefined) {\n      Quotation.encode(message.nominal, writer.uint32(34).fork()).join();\n    }\n    if (message.nominalCurrency !== \"\") {\n      writer.uint32(42).string(message.nominalCurrency);\n    }\n    if (message.issueKind !== \"\") {\n      writer.uint32(50).string(message.issueKind);\n    }\n    if (message.interestKind !== \"\") {\n      writer.uint32(58).string(message.interestKind);\n    }\n    if (message.couponQuantityPerYear !== 0) {\n      writer.uint32(64).int32(message.couponQuantityPerYear);\n    }\n    if (message.indexedNominalFlag !== false) {\n      writer.uint32(72).bool(message.indexedNominalFlag);\n    }\n    if (message.subordinatedFlag !== false) {\n      writer.uint32(80).bool(message.subordinatedFlag);\n    }\n    if (message.collateralFlag !== false) {\n      writer.uint32(88).bool(message.collateralFlag);\n    }\n    if (message.taxFreeFlag !== false) {\n      writer.uint32(96).bool(message.taxFreeFlag);\n    }\n    if (message.amortizationFlag !== false) {\n      writer.uint32(104).bool(message.amortizationFlag);\n    }\n    if (message.floatingCouponFlag !== false) {\n      writer.uint32(112).bool(message.floatingCouponFlag);\n    }\n    if (message.perpetualFlag !== false) {\n      writer.uint32(120).bool(message.perpetualFlag);\n    }\n    if (message.maturityDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.maturityDate), writer.uint32(130).fork()).join();\n    }\n    if (message.returnCondition !== \"\") {\n      writer.uint32(138).string(message.returnCondition);\n    }\n    if (message.stateRegDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.stateRegDate), writer.uint32(146).fork()).join();\n    }\n    if (message.placementDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.placementDate), writer.uint32(154).fork()).join();\n    }\n    if (message.placementPrice !== undefined) {\n      Quotation.encode(message.placementPrice, writer.uint32(162).fork()).join();\n    }\n    if (message.issueSizePlan !== undefined) {\n      Quotation.encode(message.issueSizePlan, writer.uint32(170).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetBond {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetBond();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.currentNominal = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.borrowName = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.issueSize = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.nominal = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.nominalCurrency = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.issueKind = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.interestKind = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.couponQuantityPerYear = reader.int32();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.indexedNominalFlag = reader.bool();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.subordinatedFlag = reader.bool();\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.collateralFlag = reader.bool();\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.taxFreeFlag = reader.bool();\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.amortizationFlag = reader.bool();\n          continue;\n        }\n        case 14: {\n          if (tag !== 112) {\n            break;\n          }\n\n          message.floatingCouponFlag = reader.bool();\n          continue;\n        }\n        case 15: {\n          if (tag !== 120) {\n            break;\n          }\n\n          message.perpetualFlag = reader.bool();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.maturityDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.returnCondition = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.stateRegDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.placementDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.placementPrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.issueSizePlan = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetBond {\n    return {\n      currentNominal: isSet(object.currentNominal) ? Quotation.fromJSON(object.currentNominal) : undefined,\n      borrowName: isSet(object.borrowName) ? globalThis.String(object.borrowName) : \"\",\n      issueSize: isSet(object.issueSize) ? Quotation.fromJSON(object.issueSize) : undefined,\n      nominal: isSet(object.nominal) ? Quotation.fromJSON(object.nominal) : undefined,\n      nominalCurrency: isSet(object.nominalCurrency) ? globalThis.String(object.nominalCurrency) : \"\",\n      issueKind: isSet(object.issueKind) ? globalThis.String(object.issueKind) : \"\",\n      interestKind: isSet(object.interestKind) ? globalThis.String(object.interestKind) : \"\",\n      couponQuantityPerYear: isSet(object.couponQuantityPerYear) ? globalThis.Number(object.couponQuantityPerYear) : 0,\n      indexedNominalFlag: isSet(object.indexedNominalFlag) ? globalThis.Boolean(object.indexedNominalFlag) : false,\n      subordinatedFlag: isSet(object.subordinatedFlag) ? globalThis.Boolean(object.subordinatedFlag) : false,\n      collateralFlag: isSet(object.collateralFlag) ? globalThis.Boolean(object.collateralFlag) : false,\n      taxFreeFlag: isSet(object.taxFreeFlag) ? globalThis.Boolean(object.taxFreeFlag) : false,\n      amortizationFlag: isSet(object.amortizationFlag) ? globalThis.Boolean(object.amortizationFlag) : false,\n      floatingCouponFlag: isSet(object.floatingCouponFlag) ? globalThis.Boolean(object.floatingCouponFlag) : false,\n      perpetualFlag: isSet(object.perpetualFlag) ? globalThis.Boolean(object.perpetualFlag) : false,\n      maturityDate: isSet(object.maturityDate) ? fromJsonTimestamp(object.maturityDate) : undefined,\n      returnCondition: isSet(object.returnCondition) ? globalThis.String(object.returnCondition) : \"\",\n      stateRegDate: isSet(object.stateRegDate) ? fromJsonTimestamp(object.stateRegDate) : undefined,\n      placementDate: isSet(object.placementDate) ? fromJsonTimestamp(object.placementDate) : undefined,\n      placementPrice: isSet(object.placementPrice) ? Quotation.fromJSON(object.placementPrice) : undefined,\n      issueSizePlan: isSet(object.issueSizePlan) ? Quotation.fromJSON(object.issueSizePlan) : undefined,\n    };\n  },\n\n  toJSON(message: AssetBond): unknown {\n    const obj: any = {};\n    if (message.currentNominal !== undefined) {\n      obj.currentNominal = Quotation.toJSON(message.currentNominal);\n    }\n    if (message.borrowName !== \"\") {\n      obj.borrowName = message.borrowName;\n    }\n    if (message.issueSize !== undefined) {\n      obj.issueSize = Quotation.toJSON(message.issueSize);\n    }\n    if (message.nominal !== undefined) {\n      obj.nominal = Quotation.toJSON(message.nominal);\n    }\n    if (message.nominalCurrency !== \"\") {\n      obj.nominalCurrency = message.nominalCurrency;\n    }\n    if (message.issueKind !== \"\") {\n      obj.issueKind = message.issueKind;\n    }\n    if (message.interestKind !== \"\") {\n      obj.interestKind = message.interestKind;\n    }\n    if (message.couponQuantityPerYear !== 0) {\n      obj.couponQuantityPerYear = Math.round(message.couponQuantityPerYear);\n    }\n    if (message.indexedNominalFlag !== false) {\n      obj.indexedNominalFlag = message.indexedNominalFlag;\n    }\n    if (message.subordinatedFlag !== false) {\n      obj.subordinatedFlag = message.subordinatedFlag;\n    }\n    if (message.collateralFlag !== false) {\n      obj.collateralFlag = message.collateralFlag;\n    }\n    if (message.taxFreeFlag !== false) {\n      obj.taxFreeFlag = message.taxFreeFlag;\n    }\n    if (message.amortizationFlag !== false) {\n      obj.amortizationFlag = message.amortizationFlag;\n    }\n    if (message.floatingCouponFlag !== false) {\n      obj.floatingCouponFlag = message.floatingCouponFlag;\n    }\n    if (message.perpetualFlag !== false) {\n      obj.perpetualFlag = message.perpetualFlag;\n    }\n    if (message.maturityDate !== undefined) {\n      obj.maturityDate = message.maturityDate.toISOString();\n    }\n    if (message.returnCondition !== \"\") {\n      obj.returnCondition = message.returnCondition;\n    }\n    if (message.stateRegDate !== undefined) {\n      obj.stateRegDate = message.stateRegDate.toISOString();\n    }\n    if (message.placementDate !== undefined) {\n      obj.placementDate = message.placementDate.toISOString();\n    }\n    if (message.placementPrice !== undefined) {\n      obj.placementPrice = Quotation.toJSON(message.placementPrice);\n    }\n    if (message.issueSizePlan !== undefined) {\n      obj.issueSizePlan = Quotation.toJSON(message.issueSizePlan);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetBond>): AssetBond {\n    return AssetBond.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetBond>): AssetBond {\n    const message = createBaseAssetBond();\n    message.currentNominal = (object.currentNominal !== undefined && object.currentNominal !== null)\n      ? Quotation.fromPartial(object.currentNominal)\n      : undefined;\n    message.borrowName = object.borrowName ?? \"\";\n    message.issueSize = (object.issueSize !== undefined && object.issueSize !== null)\n      ? Quotation.fromPartial(object.issueSize)\n      : undefined;\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? Quotation.fromPartial(object.nominal)\n      : undefined;\n    message.nominalCurrency = object.nominalCurrency ?? \"\";\n    message.issueKind = object.issueKind ?? \"\";\n    message.interestKind = object.interestKind ?? \"\";\n    message.couponQuantityPerYear = object.couponQuantityPerYear ?? 0;\n    message.indexedNominalFlag = object.indexedNominalFlag ?? false;\n    message.subordinatedFlag = object.subordinatedFlag ?? false;\n    message.collateralFlag = object.collateralFlag ?? false;\n    message.taxFreeFlag = object.taxFreeFlag ?? false;\n    message.amortizationFlag = object.amortizationFlag ?? false;\n    message.floatingCouponFlag = object.floatingCouponFlag ?? false;\n    message.perpetualFlag = object.perpetualFlag ?? false;\n    message.maturityDate = object.maturityDate ?? undefined;\n    message.returnCondition = object.returnCondition ?? \"\";\n    message.stateRegDate = object.stateRegDate ?? undefined;\n    message.placementDate = object.placementDate ?? undefined;\n    message.placementPrice = (object.placementPrice !== undefined && object.placementPrice !== null)\n      ? Quotation.fromPartial(object.placementPrice)\n      : undefined;\n    message.issueSizePlan = (object.issueSizePlan !== undefined && object.issueSizePlan !== null)\n      ? Quotation.fromPartial(object.issueSizePlan)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAssetStructuredProduct(): AssetStructuredProduct {\n  return {\n    borrowName: \"\",\n    nominal: undefined,\n    nominalCurrency: \"\",\n    type: 0,\n    logicPortfolio: \"\",\n    assetType: 0,\n    basicAsset: \"\",\n    safetyBarrier: undefined,\n    maturityDate: undefined,\n    issueSizePlan: undefined,\n    issueSize: undefined,\n    placementDate: undefined,\n    issueKind: \"\",\n  };\n}\n\nexport const AssetStructuredProduct: MessageFns<AssetStructuredProduct> = {\n  encode(message: AssetStructuredProduct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.borrowName !== \"\") {\n      writer.uint32(10).string(message.borrowName);\n    }\n    if (message.nominal !== undefined) {\n      Quotation.encode(message.nominal, writer.uint32(18).fork()).join();\n    }\n    if (message.nominalCurrency !== \"\") {\n      writer.uint32(26).string(message.nominalCurrency);\n    }\n    if (message.type !== 0) {\n      writer.uint32(32).int32(message.type);\n    }\n    if (message.logicPortfolio !== \"\") {\n      writer.uint32(42).string(message.logicPortfolio);\n    }\n    if (message.assetType !== 0) {\n      writer.uint32(48).int32(message.assetType);\n    }\n    if (message.basicAsset !== \"\") {\n      writer.uint32(58).string(message.basicAsset);\n    }\n    if (message.safetyBarrier !== undefined) {\n      Quotation.encode(message.safetyBarrier, writer.uint32(66).fork()).join();\n    }\n    if (message.maturityDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.maturityDate), writer.uint32(74).fork()).join();\n    }\n    if (message.issueSizePlan !== undefined) {\n      Quotation.encode(message.issueSizePlan, writer.uint32(82).fork()).join();\n    }\n    if (message.issueSize !== undefined) {\n      Quotation.encode(message.issueSize, writer.uint32(90).fork()).join();\n    }\n    if (message.placementDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.placementDate), writer.uint32(98).fork()).join();\n    }\n    if (message.issueKind !== \"\") {\n      writer.uint32(106).string(message.issueKind);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetStructuredProduct {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetStructuredProduct();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.borrowName = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.nominal = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.nominalCurrency = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.type = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.logicPortfolio = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.assetType = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.basicAsset = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.safetyBarrier = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.maturityDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.issueSizePlan = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.issueSize = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.placementDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.issueKind = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetStructuredProduct {\n    return {\n      borrowName: isSet(object.borrowName) ? globalThis.String(object.borrowName) : \"\",\n      nominal: isSet(object.nominal) ? Quotation.fromJSON(object.nominal) : undefined,\n      nominalCurrency: isSet(object.nominalCurrency) ? globalThis.String(object.nominalCurrency) : \"\",\n      type: isSet(object.type) ? structuredProductTypeFromJSON(object.type) : 0,\n      logicPortfolio: isSet(object.logicPortfolio) ? globalThis.String(object.logicPortfolio) : \"\",\n      assetType: isSet(object.assetType) ? assetTypeFromJSON(object.assetType) : 0,\n      basicAsset: isSet(object.basicAsset) ? globalThis.String(object.basicAsset) : \"\",\n      safetyBarrier: isSet(object.safetyBarrier) ? Quotation.fromJSON(object.safetyBarrier) : undefined,\n      maturityDate: isSet(object.maturityDate) ? fromJsonTimestamp(object.maturityDate) : undefined,\n      issueSizePlan: isSet(object.issueSizePlan) ? Quotation.fromJSON(object.issueSizePlan) : undefined,\n      issueSize: isSet(object.issueSize) ? Quotation.fromJSON(object.issueSize) : undefined,\n      placementDate: isSet(object.placementDate) ? fromJsonTimestamp(object.placementDate) : undefined,\n      issueKind: isSet(object.issueKind) ? globalThis.String(object.issueKind) : \"\",\n    };\n  },\n\n  toJSON(message: AssetStructuredProduct): unknown {\n    const obj: any = {};\n    if (message.borrowName !== \"\") {\n      obj.borrowName = message.borrowName;\n    }\n    if (message.nominal !== undefined) {\n      obj.nominal = Quotation.toJSON(message.nominal);\n    }\n    if (message.nominalCurrency !== \"\") {\n      obj.nominalCurrency = message.nominalCurrency;\n    }\n    if (message.type !== 0) {\n      obj.type = structuredProductTypeToJSON(message.type);\n    }\n    if (message.logicPortfolio !== \"\") {\n      obj.logicPortfolio = message.logicPortfolio;\n    }\n    if (message.assetType !== 0) {\n      obj.assetType = assetTypeToJSON(message.assetType);\n    }\n    if (message.basicAsset !== \"\") {\n      obj.basicAsset = message.basicAsset;\n    }\n    if (message.safetyBarrier !== undefined) {\n      obj.safetyBarrier = Quotation.toJSON(message.safetyBarrier);\n    }\n    if (message.maturityDate !== undefined) {\n      obj.maturityDate = message.maturityDate.toISOString();\n    }\n    if (message.issueSizePlan !== undefined) {\n      obj.issueSizePlan = Quotation.toJSON(message.issueSizePlan);\n    }\n    if (message.issueSize !== undefined) {\n      obj.issueSize = Quotation.toJSON(message.issueSize);\n    }\n    if (message.placementDate !== undefined) {\n      obj.placementDate = message.placementDate.toISOString();\n    }\n    if (message.issueKind !== \"\") {\n      obj.issueKind = message.issueKind;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetStructuredProduct>): AssetStructuredProduct {\n    return AssetStructuredProduct.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetStructuredProduct>): AssetStructuredProduct {\n    const message = createBaseAssetStructuredProduct();\n    message.borrowName = object.borrowName ?? \"\";\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? Quotation.fromPartial(object.nominal)\n      : undefined;\n    message.nominalCurrency = object.nominalCurrency ?? \"\";\n    message.type = object.type ?? 0;\n    message.logicPortfolio = object.logicPortfolio ?? \"\";\n    message.assetType = object.assetType ?? 0;\n    message.basicAsset = object.basicAsset ?? \"\";\n    message.safetyBarrier = (object.safetyBarrier !== undefined && object.safetyBarrier !== null)\n      ? Quotation.fromPartial(object.safetyBarrier)\n      : undefined;\n    message.maturityDate = object.maturityDate ?? undefined;\n    message.issueSizePlan = (object.issueSizePlan !== undefined && object.issueSizePlan !== null)\n      ? Quotation.fromPartial(object.issueSizePlan)\n      : undefined;\n    message.issueSize = (object.issueSize !== undefined && object.issueSize !== null)\n      ? Quotation.fromPartial(object.issueSize)\n      : undefined;\n    message.placementDate = object.placementDate ?? undefined;\n    message.issueKind = object.issueKind ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseAssetEtf(): AssetEtf {\n  return {\n    totalExpense: undefined,\n    hurdleRate: undefined,\n    performanceFee: undefined,\n    fixedCommission: undefined,\n    paymentType: \"\",\n    watermarkFlag: false,\n    buyPremium: undefined,\n    sellDiscount: undefined,\n    rebalancingFlag: false,\n    rebalancingFreq: \"\",\n    managementType: \"\",\n    primaryIndex: \"\",\n    focusType: \"\",\n    leveragedFlag: false,\n    numShare: undefined,\n    ucitsFlag: false,\n    releasedDate: undefined,\n    description: \"\",\n    primaryIndexDescription: \"\",\n    primaryIndexCompany: \"\",\n    indexRecoveryPeriod: undefined,\n    inavCode: \"\",\n    divYieldFlag: false,\n    expenseCommission: undefined,\n    primaryIndexTrackingError: undefined,\n    rebalancingPlan: \"\",\n    taxRate: \"\",\n    rebalancingDates: [],\n    issueKind: \"\",\n    nominal: undefined,\n    nominalCurrency: \"\",\n  };\n}\n\nexport const AssetEtf: MessageFns<AssetEtf> = {\n  encode(message: AssetEtf, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.totalExpense !== undefined) {\n      Quotation.encode(message.totalExpense, writer.uint32(10).fork()).join();\n    }\n    if (message.hurdleRate !== undefined) {\n      Quotation.encode(message.hurdleRate, writer.uint32(18).fork()).join();\n    }\n    if (message.performanceFee !== undefined) {\n      Quotation.encode(message.performanceFee, writer.uint32(26).fork()).join();\n    }\n    if (message.fixedCommission !== undefined) {\n      Quotation.encode(message.fixedCommission, writer.uint32(34).fork()).join();\n    }\n    if (message.paymentType !== \"\") {\n      writer.uint32(42).string(message.paymentType);\n    }\n    if (message.watermarkFlag !== false) {\n      writer.uint32(48).bool(message.watermarkFlag);\n    }\n    if (message.buyPremium !== undefined) {\n      Quotation.encode(message.buyPremium, writer.uint32(58).fork()).join();\n    }\n    if (message.sellDiscount !== undefined) {\n      Quotation.encode(message.sellDiscount, writer.uint32(66).fork()).join();\n    }\n    if (message.rebalancingFlag !== false) {\n      writer.uint32(72).bool(message.rebalancingFlag);\n    }\n    if (message.rebalancingFreq !== \"\") {\n      writer.uint32(82).string(message.rebalancingFreq);\n    }\n    if (message.managementType !== \"\") {\n      writer.uint32(90).string(message.managementType);\n    }\n    if (message.primaryIndex !== \"\") {\n      writer.uint32(98).string(message.primaryIndex);\n    }\n    if (message.focusType !== \"\") {\n      writer.uint32(106).string(message.focusType);\n    }\n    if (message.leveragedFlag !== false) {\n      writer.uint32(112).bool(message.leveragedFlag);\n    }\n    if (message.numShare !== undefined) {\n      Quotation.encode(message.numShare, writer.uint32(122).fork()).join();\n    }\n    if (message.ucitsFlag !== false) {\n      writer.uint32(128).bool(message.ucitsFlag);\n    }\n    if (message.releasedDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.releasedDate), writer.uint32(138).fork()).join();\n    }\n    if (message.description !== \"\") {\n      writer.uint32(146).string(message.description);\n    }\n    if (message.primaryIndexDescription !== \"\") {\n      writer.uint32(154).string(message.primaryIndexDescription);\n    }\n    if (message.primaryIndexCompany !== \"\") {\n      writer.uint32(162).string(message.primaryIndexCompany);\n    }\n    if (message.indexRecoveryPeriod !== undefined) {\n      Quotation.encode(message.indexRecoveryPeriod, writer.uint32(170).fork()).join();\n    }\n    if (message.inavCode !== \"\") {\n      writer.uint32(178).string(message.inavCode);\n    }\n    if (message.divYieldFlag !== false) {\n      writer.uint32(184).bool(message.divYieldFlag);\n    }\n    if (message.expenseCommission !== undefined) {\n      Quotation.encode(message.expenseCommission, writer.uint32(194).fork()).join();\n    }\n    if (message.primaryIndexTrackingError !== undefined) {\n      Quotation.encode(message.primaryIndexTrackingError, writer.uint32(202).fork()).join();\n    }\n    if (message.rebalancingPlan !== \"\") {\n      writer.uint32(210).string(message.rebalancingPlan);\n    }\n    if (message.taxRate !== \"\") {\n      writer.uint32(218).string(message.taxRate);\n    }\n    for (const v of message.rebalancingDates) {\n      Timestamp.encode(toTimestamp(v!), writer.uint32(226).fork()).join();\n    }\n    if (message.issueKind !== \"\") {\n      writer.uint32(234).string(message.issueKind);\n    }\n    if (message.nominal !== undefined) {\n      Quotation.encode(message.nominal, writer.uint32(242).fork()).join();\n    }\n    if (message.nominalCurrency !== \"\") {\n      writer.uint32(250).string(message.nominalCurrency);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetEtf {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetEtf();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.totalExpense = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.hurdleRate = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.performanceFee = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.fixedCommission = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.paymentType = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.watermarkFlag = reader.bool();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.buyPremium = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.sellDiscount = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.rebalancingFlag = reader.bool();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.rebalancingFreq = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.managementType = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.primaryIndex = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.focusType = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 112) {\n            break;\n          }\n\n          message.leveragedFlag = reader.bool();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.numShare = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.ucitsFlag = reader.bool();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.releasedDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.primaryIndexDescription = reader.string();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.primaryIndexCompany = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.indexRecoveryPeriod = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.inavCode = reader.string();\n          continue;\n        }\n        case 23: {\n          if (tag !== 184) {\n            break;\n          }\n\n          message.divYieldFlag = reader.bool();\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.expenseCommission = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          message.primaryIndexTrackingError = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          message.rebalancingPlan = reader.string();\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.taxRate = reader.string();\n          continue;\n        }\n        case 28: {\n          if (tag !== 226) {\n            break;\n          }\n\n          message.rebalancingDates.push(fromTimestamp(Timestamp.decode(reader, reader.uint32())));\n          continue;\n        }\n        case 29: {\n          if (tag !== 234) {\n            break;\n          }\n\n          message.issueKind = reader.string();\n          continue;\n        }\n        case 30: {\n          if (tag !== 242) {\n            break;\n          }\n\n          message.nominal = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 31: {\n          if (tag !== 250) {\n            break;\n          }\n\n          message.nominalCurrency = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetEtf {\n    return {\n      totalExpense: isSet(object.totalExpense) ? Quotation.fromJSON(object.totalExpense) : undefined,\n      hurdleRate: isSet(object.hurdleRate) ? Quotation.fromJSON(object.hurdleRate) : undefined,\n      performanceFee: isSet(object.performanceFee) ? Quotation.fromJSON(object.performanceFee) : undefined,\n      fixedCommission: isSet(object.fixedCommission) ? Quotation.fromJSON(object.fixedCommission) : undefined,\n      paymentType: isSet(object.paymentType) ? globalThis.String(object.paymentType) : \"\",\n      watermarkFlag: isSet(object.watermarkFlag) ? globalThis.Boolean(object.watermarkFlag) : false,\n      buyPremium: isSet(object.buyPremium) ? Quotation.fromJSON(object.buyPremium) : undefined,\n      sellDiscount: isSet(object.sellDiscount) ? Quotation.fromJSON(object.sellDiscount) : undefined,\n      rebalancingFlag: isSet(object.rebalancingFlag) ? globalThis.Boolean(object.rebalancingFlag) : false,\n      rebalancingFreq: isSet(object.rebalancingFreq) ? globalThis.String(object.rebalancingFreq) : \"\",\n      managementType: isSet(object.managementType) ? globalThis.String(object.managementType) : \"\",\n      primaryIndex: isSet(object.primaryIndex) ? globalThis.String(object.primaryIndex) : \"\",\n      focusType: isSet(object.focusType) ? globalThis.String(object.focusType) : \"\",\n      leveragedFlag: isSet(object.leveragedFlag) ? globalThis.Boolean(object.leveragedFlag) : false,\n      numShare: isSet(object.numShare) ? Quotation.fromJSON(object.numShare) : undefined,\n      ucitsFlag: isSet(object.ucitsFlag) ? globalThis.Boolean(object.ucitsFlag) : false,\n      releasedDate: isSet(object.releasedDate) ? fromJsonTimestamp(object.releasedDate) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : \"\",\n      primaryIndexDescription: isSet(object.primaryIndexDescription)\n        ? globalThis.String(object.primaryIndexDescription)\n        : \"\",\n      primaryIndexCompany: isSet(object.primaryIndexCompany) ? globalThis.String(object.primaryIndexCompany) : \"\",\n      indexRecoveryPeriod: isSet(object.indexRecoveryPeriod)\n        ? Quotation.fromJSON(object.indexRecoveryPeriod)\n        : undefined,\n      inavCode: isSet(object.inavCode) ? globalThis.String(object.inavCode) : \"\",\n      divYieldFlag: isSet(object.divYieldFlag) ? globalThis.Boolean(object.divYieldFlag) : false,\n      expenseCommission: isSet(object.expenseCommission) ? Quotation.fromJSON(object.expenseCommission) : undefined,\n      primaryIndexTrackingError: isSet(object.primaryIndexTrackingError)\n        ? Quotation.fromJSON(object.primaryIndexTrackingError)\n        : undefined,\n      rebalancingPlan: isSet(object.rebalancingPlan) ? globalThis.String(object.rebalancingPlan) : \"\",\n      taxRate: isSet(object.taxRate) ? globalThis.String(object.taxRate) : \"\",\n      rebalancingDates: globalThis.Array.isArray(object?.rebalancingDates)\n        ? object.rebalancingDates.map((e: any) => fromJsonTimestamp(e))\n        : [],\n      issueKind: isSet(object.issueKind) ? globalThis.String(object.issueKind) : \"\",\n      nominal: isSet(object.nominal) ? Quotation.fromJSON(object.nominal) : undefined,\n      nominalCurrency: isSet(object.nominalCurrency) ? globalThis.String(object.nominalCurrency) : \"\",\n    };\n  },\n\n  toJSON(message: AssetEtf): unknown {\n    const obj: any = {};\n    if (message.totalExpense !== undefined) {\n      obj.totalExpense = Quotation.toJSON(message.totalExpense);\n    }\n    if (message.hurdleRate !== undefined) {\n      obj.hurdleRate = Quotation.toJSON(message.hurdleRate);\n    }\n    if (message.performanceFee !== undefined) {\n      obj.performanceFee = Quotation.toJSON(message.performanceFee);\n    }\n    if (message.fixedCommission !== undefined) {\n      obj.fixedCommission = Quotation.toJSON(message.fixedCommission);\n    }\n    if (message.paymentType !== \"\") {\n      obj.paymentType = message.paymentType;\n    }\n    if (message.watermarkFlag !== false) {\n      obj.watermarkFlag = message.watermarkFlag;\n    }\n    if (message.buyPremium !== undefined) {\n      obj.buyPremium = Quotation.toJSON(message.buyPremium);\n    }\n    if (message.sellDiscount !== undefined) {\n      obj.sellDiscount = Quotation.toJSON(message.sellDiscount);\n    }\n    if (message.rebalancingFlag !== false) {\n      obj.rebalancingFlag = message.rebalancingFlag;\n    }\n    if (message.rebalancingFreq !== \"\") {\n      obj.rebalancingFreq = message.rebalancingFreq;\n    }\n    if (message.managementType !== \"\") {\n      obj.managementType = message.managementType;\n    }\n    if (message.primaryIndex !== \"\") {\n      obj.primaryIndex = message.primaryIndex;\n    }\n    if (message.focusType !== \"\") {\n      obj.focusType = message.focusType;\n    }\n    if (message.leveragedFlag !== false) {\n      obj.leveragedFlag = message.leveragedFlag;\n    }\n    if (message.numShare !== undefined) {\n      obj.numShare = Quotation.toJSON(message.numShare);\n    }\n    if (message.ucitsFlag !== false) {\n      obj.ucitsFlag = message.ucitsFlag;\n    }\n    if (message.releasedDate !== undefined) {\n      obj.releasedDate = message.releasedDate.toISOString();\n    }\n    if (message.description !== \"\") {\n      obj.description = message.description;\n    }\n    if (message.primaryIndexDescription !== \"\") {\n      obj.primaryIndexDescription = message.primaryIndexDescription;\n    }\n    if (message.primaryIndexCompany !== \"\") {\n      obj.primaryIndexCompany = message.primaryIndexCompany;\n    }\n    if (message.indexRecoveryPeriod !== undefined) {\n      obj.indexRecoveryPeriod = Quotation.toJSON(message.indexRecoveryPeriod);\n    }\n    if (message.inavCode !== \"\") {\n      obj.inavCode = message.inavCode;\n    }\n    if (message.divYieldFlag !== false) {\n      obj.divYieldFlag = message.divYieldFlag;\n    }\n    if (message.expenseCommission !== undefined) {\n      obj.expenseCommission = Quotation.toJSON(message.expenseCommission);\n    }\n    if (message.primaryIndexTrackingError !== undefined) {\n      obj.primaryIndexTrackingError = Quotation.toJSON(message.primaryIndexTrackingError);\n    }\n    if (message.rebalancingPlan !== \"\") {\n      obj.rebalancingPlan = message.rebalancingPlan;\n    }\n    if (message.taxRate !== \"\") {\n      obj.taxRate = message.taxRate;\n    }\n    if (message.rebalancingDates?.length) {\n      obj.rebalancingDates = message.rebalancingDates.map((e) => e.toISOString());\n    }\n    if (message.issueKind !== \"\") {\n      obj.issueKind = message.issueKind;\n    }\n    if (message.nominal !== undefined) {\n      obj.nominal = Quotation.toJSON(message.nominal);\n    }\n    if (message.nominalCurrency !== \"\") {\n      obj.nominalCurrency = message.nominalCurrency;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetEtf>): AssetEtf {\n    return AssetEtf.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetEtf>): AssetEtf {\n    const message = createBaseAssetEtf();\n    message.totalExpense = (object.totalExpense !== undefined && object.totalExpense !== null)\n      ? Quotation.fromPartial(object.totalExpense)\n      : undefined;\n    message.hurdleRate = (object.hurdleRate !== undefined && object.hurdleRate !== null)\n      ? Quotation.fromPartial(object.hurdleRate)\n      : undefined;\n    message.performanceFee = (object.performanceFee !== undefined && object.performanceFee !== null)\n      ? Quotation.fromPartial(object.performanceFee)\n      : undefined;\n    message.fixedCommission = (object.fixedCommission !== undefined && object.fixedCommission !== null)\n      ? Quotation.fromPartial(object.fixedCommission)\n      : undefined;\n    message.paymentType = object.paymentType ?? \"\";\n    message.watermarkFlag = object.watermarkFlag ?? false;\n    message.buyPremium = (object.buyPremium !== undefined && object.buyPremium !== null)\n      ? Quotation.fromPartial(object.buyPremium)\n      : undefined;\n    message.sellDiscount = (object.sellDiscount !== undefined && object.sellDiscount !== null)\n      ? Quotation.fromPartial(object.sellDiscount)\n      : undefined;\n    message.rebalancingFlag = object.rebalancingFlag ?? false;\n    message.rebalancingFreq = object.rebalancingFreq ?? \"\";\n    message.managementType = object.managementType ?? \"\";\n    message.primaryIndex = object.primaryIndex ?? \"\";\n    message.focusType = object.focusType ?? \"\";\n    message.leveragedFlag = object.leveragedFlag ?? false;\n    message.numShare = (object.numShare !== undefined && object.numShare !== null)\n      ? Quotation.fromPartial(object.numShare)\n      : undefined;\n    message.ucitsFlag = object.ucitsFlag ?? false;\n    message.releasedDate = object.releasedDate ?? undefined;\n    message.description = object.description ?? \"\";\n    message.primaryIndexDescription = object.primaryIndexDescription ?? \"\";\n    message.primaryIndexCompany = object.primaryIndexCompany ?? \"\";\n    message.indexRecoveryPeriod = (object.indexRecoveryPeriod !== undefined && object.indexRecoveryPeriod !== null)\n      ? Quotation.fromPartial(object.indexRecoveryPeriod)\n      : undefined;\n    message.inavCode = object.inavCode ?? \"\";\n    message.divYieldFlag = object.divYieldFlag ?? false;\n    message.expenseCommission = (object.expenseCommission !== undefined && object.expenseCommission !== null)\n      ? Quotation.fromPartial(object.expenseCommission)\n      : undefined;\n    message.primaryIndexTrackingError =\n      (object.primaryIndexTrackingError !== undefined && object.primaryIndexTrackingError !== null)\n        ? Quotation.fromPartial(object.primaryIndexTrackingError)\n        : undefined;\n    message.rebalancingPlan = object.rebalancingPlan ?? \"\";\n    message.taxRate = object.taxRate ?? \"\";\n    message.rebalancingDates = object.rebalancingDates?.map((e) => e) || [];\n    message.issueKind = object.issueKind ?? \"\";\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? Quotation.fromPartial(object.nominal)\n      : undefined;\n    message.nominalCurrency = object.nominalCurrency ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseAssetClearingCertificate(): AssetClearingCertificate {\n  return { nominal: undefined, nominalCurrency: \"\" };\n}\n\nexport const AssetClearingCertificate: MessageFns<AssetClearingCertificate> = {\n  encode(message: AssetClearingCertificate, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.nominal !== undefined) {\n      Quotation.encode(message.nominal, writer.uint32(10).fork()).join();\n    }\n    if (message.nominalCurrency !== \"\") {\n      writer.uint32(18).string(message.nominalCurrency);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetClearingCertificate {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetClearingCertificate();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.nominal = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.nominalCurrency = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetClearingCertificate {\n    return {\n      nominal: isSet(object.nominal) ? Quotation.fromJSON(object.nominal) : undefined,\n      nominalCurrency: isSet(object.nominalCurrency) ? globalThis.String(object.nominalCurrency) : \"\",\n    };\n  },\n\n  toJSON(message: AssetClearingCertificate): unknown {\n    const obj: any = {};\n    if (message.nominal !== undefined) {\n      obj.nominal = Quotation.toJSON(message.nominal);\n    }\n    if (message.nominalCurrency !== \"\") {\n      obj.nominalCurrency = message.nominalCurrency;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetClearingCertificate>): AssetClearingCertificate {\n    return AssetClearingCertificate.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetClearingCertificate>): AssetClearingCertificate {\n    const message = createBaseAssetClearingCertificate();\n    message.nominal = (object.nominal !== undefined && object.nominal !== null)\n      ? Quotation.fromPartial(object.nominal)\n      : undefined;\n    message.nominalCurrency = object.nominalCurrency ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseBrand(): Brand {\n  return {\n    uid: \"\",\n    name: \"\",\n    description: \"\",\n    info: \"\",\n    company: \"\",\n    sector: \"\",\n    countryOfRisk: \"\",\n    countryOfRiskName: \"\",\n  };\n}\n\nexport const Brand: MessageFns<Brand> = {\n  encode(message: Brand, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.uid !== \"\") {\n      writer.uint32(10).string(message.uid);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(18).string(message.name);\n    }\n    if (message.description !== \"\") {\n      writer.uint32(26).string(message.description);\n    }\n    if (message.info !== \"\") {\n      writer.uint32(34).string(message.info);\n    }\n    if (message.company !== \"\") {\n      writer.uint32(42).string(message.company);\n    }\n    if (message.sector !== \"\") {\n      writer.uint32(50).string(message.sector);\n    }\n    if (message.countryOfRisk !== \"\") {\n      writer.uint32(58).string(message.countryOfRisk);\n    }\n    if (message.countryOfRiskName !== \"\") {\n      writer.uint32(66).string(message.countryOfRiskName);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Brand {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBrand();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.info = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.company = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.sector = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.countryOfRisk = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.countryOfRiskName = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Brand {\n    return {\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      description: isSet(object.description) ? globalThis.String(object.description) : \"\",\n      info: isSet(object.info) ? globalThis.String(object.info) : \"\",\n      company: isSet(object.company) ? globalThis.String(object.company) : \"\",\n      sector: isSet(object.sector) ? globalThis.String(object.sector) : \"\",\n      countryOfRisk: isSet(object.countryOfRisk) ? globalThis.String(object.countryOfRisk) : \"\",\n      countryOfRiskName: isSet(object.countryOfRiskName) ? globalThis.String(object.countryOfRiskName) : \"\",\n    };\n  },\n\n  toJSON(message: Brand): unknown {\n    const obj: any = {};\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.description !== \"\") {\n      obj.description = message.description;\n    }\n    if (message.info !== \"\") {\n      obj.info = message.info;\n    }\n    if (message.company !== \"\") {\n      obj.company = message.company;\n    }\n    if (message.sector !== \"\") {\n      obj.sector = message.sector;\n    }\n    if (message.countryOfRisk !== \"\") {\n      obj.countryOfRisk = message.countryOfRisk;\n    }\n    if (message.countryOfRiskName !== \"\") {\n      obj.countryOfRiskName = message.countryOfRiskName;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Brand>): Brand {\n    return Brand.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Brand>): Brand {\n    const message = createBaseBrand();\n    message.uid = object.uid ?? \"\";\n    message.name = object.name ?? \"\";\n    message.description = object.description ?? \"\";\n    message.info = object.info ?? \"\";\n    message.company = object.company ?? \"\";\n    message.sector = object.sector ?? \"\";\n    message.countryOfRisk = object.countryOfRisk ?? \"\";\n    message.countryOfRiskName = object.countryOfRiskName ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseAssetInstrument(): AssetInstrument {\n  return {\n    uid: \"\",\n    figi: \"\",\n    instrumentType: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    links: [],\n    instrumentKind: 0,\n    positionUid: \"\",\n  };\n}\n\nexport const AssetInstrument: MessageFns<AssetInstrument> = {\n  encode(message: AssetInstrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.uid !== \"\") {\n      writer.uint32(10).string(message.uid);\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(18).string(message.figi);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(26).string(message.instrumentType);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(34).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(42).string(message.classCode);\n    }\n    for (const v of message.links) {\n      InstrumentLink.encode(v!, writer.uint32(50).fork()).join();\n    }\n    if (message.instrumentKind !== 0) {\n      writer.uint32(80).int32(message.instrumentKind);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(90).string(message.positionUid);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AssetInstrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssetInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.links.push(InstrumentLink.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.instrumentKind = reader.int32() as any;\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AssetInstrument {\n    return {\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      links: globalThis.Array.isArray(object?.links) ? object.links.map((e: any) => InstrumentLink.fromJSON(e)) : [],\n      instrumentKind: isSet(object.instrumentKind) ? instrumentTypeFromJSON(object.instrumentKind) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n    };\n  },\n\n  toJSON(message: AssetInstrument): unknown {\n    const obj: any = {};\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.links?.length) {\n      obj.links = message.links.map((e) => InstrumentLink.toJSON(e));\n    }\n    if (message.instrumentKind !== 0) {\n      obj.instrumentKind = instrumentTypeToJSON(message.instrumentKind);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AssetInstrument>): AssetInstrument {\n    return AssetInstrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AssetInstrument>): AssetInstrument {\n    const message = createBaseAssetInstrument();\n    message.uid = object.uid ?? \"\";\n    message.figi = object.figi ?? \"\";\n    message.instrumentType = object.instrumentType ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.links = object.links?.map((e) => InstrumentLink.fromPartial(e)) || [];\n    message.instrumentKind = object.instrumentKind ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseInstrumentLink(): InstrumentLink {\n  return { type: \"\", instrumentUid: \"\" };\n}\n\nexport const InstrumentLink: MessageFns<InstrumentLink> = {\n  encode(message: InstrumentLink, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.type !== \"\") {\n      writer.uint32(10).string(message.type);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(18).string(message.instrumentUid);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InstrumentLink {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInstrumentLink();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InstrumentLink {\n    return {\n      type: isSet(object.type) ? globalThis.String(object.type) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n    };\n  },\n\n  toJSON(message: InstrumentLink): unknown {\n    const obj: any = {};\n    if (message.type !== \"\") {\n      obj.type = message.type;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InstrumentLink>): InstrumentLink {\n    return InstrumentLink.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InstrumentLink>): InstrumentLink {\n    const message = createBaseInstrumentLink();\n    message.type = object.type ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetFavoritesRequest(): GetFavoritesRequest {\n  return {};\n}\n\nexport const GetFavoritesRequest: MessageFns<GetFavoritesRequest> = {\n  encode(_: GetFavoritesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetFavoritesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetFavoritesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): GetFavoritesRequest {\n    return {};\n  },\n\n  toJSON(_: GetFavoritesRequest): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetFavoritesRequest>): GetFavoritesRequest {\n    return GetFavoritesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<GetFavoritesRequest>): GetFavoritesRequest {\n    const message = createBaseGetFavoritesRequest();\n    return message;\n  },\n};\n\nfunction createBaseGetFavoritesResponse(): GetFavoritesResponse {\n  return { favoriteInstruments: [] };\n}\n\nexport const GetFavoritesResponse: MessageFns<GetFavoritesResponse> = {\n  encode(message: GetFavoritesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.favoriteInstruments) {\n      FavoriteInstrument.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetFavoritesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetFavoritesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.favoriteInstruments.push(FavoriteInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetFavoritesResponse {\n    return {\n      favoriteInstruments: globalThis.Array.isArray(object?.favoriteInstruments)\n        ? object.favoriteInstruments.map((e: any) => FavoriteInstrument.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetFavoritesResponse): unknown {\n    const obj: any = {};\n    if (message.favoriteInstruments?.length) {\n      obj.favoriteInstruments = message.favoriteInstruments.map((e) => FavoriteInstrument.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetFavoritesResponse>): GetFavoritesResponse {\n    return GetFavoritesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetFavoritesResponse>): GetFavoritesResponse {\n    const message = createBaseGetFavoritesResponse();\n    message.favoriteInstruments = object.favoriteInstruments?.map((e) => FavoriteInstrument.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseFavoriteInstrument(): FavoriteInstrument {\n  return {\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    isin: \"\",\n    instrumentType: \"\",\n    name: \"\",\n    uid: \"\",\n    otcFlag: false,\n    apiTradeAvailableFlag: false,\n    instrumentKind: 0,\n  };\n}\n\nexport const FavoriteInstrument: MessageFns<FavoriteInstrument> = {\n  encode(message: FavoriteInstrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(26).string(message.classCode);\n    }\n    if (message.isin !== \"\") {\n      writer.uint32(34).string(message.isin);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(90).string(message.instrumentType);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(98).string(message.name);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(106).string(message.uid);\n    }\n    if (message.otcFlag !== false) {\n      writer.uint32(128).bool(message.otcFlag);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(136).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.instrumentKind !== 0) {\n      writer.uint32(144).int32(message.instrumentKind);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FavoriteInstrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFavoriteInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.otcFlag = reader.bool();\n          continue;\n        }\n        case 17: {\n          if (tag !== 136) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 18: {\n          if (tag !== 144) {\n            break;\n          }\n\n          message.instrumentKind = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FavoriteInstrument {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      otcFlag: isSet(object.otcFlag) ? globalThis.Boolean(object.otcFlag) : false,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      instrumentKind: isSet(object.instrumentKind) ? instrumentTypeFromJSON(object.instrumentKind) : 0,\n    };\n  },\n\n  toJSON(message: FavoriteInstrument): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.otcFlag !== false) {\n      obj.otcFlag = message.otcFlag;\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.instrumentKind !== 0) {\n      obj.instrumentKind = instrumentTypeToJSON(message.instrumentKind);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FavoriteInstrument>): FavoriteInstrument {\n    return FavoriteInstrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FavoriteInstrument>): FavoriteInstrument {\n    const message = createBaseFavoriteInstrument();\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.isin = object.isin ?? \"\";\n    message.instrumentType = object.instrumentType ?? \"\";\n    message.name = object.name ?? \"\";\n    message.uid = object.uid ?? \"\";\n    message.otcFlag = object.otcFlag ?? false;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.instrumentKind = object.instrumentKind ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseEditFavoritesRequest(): EditFavoritesRequest {\n  return { instruments: [], actionType: 0 };\n}\n\nexport const EditFavoritesRequest: MessageFns<EditFavoritesRequest> = {\n  encode(message: EditFavoritesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      EditFavoritesRequestInstrument.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.actionType !== 0) {\n      writer.uint32(48).int32(message.actionType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EditFavoritesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEditFavoritesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(EditFavoritesRequestInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.actionType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EditFavoritesRequest {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => EditFavoritesRequestInstrument.fromJSON(e))\n        : [],\n      actionType: isSet(object.actionType) ? editFavoritesActionTypeFromJSON(object.actionType) : 0,\n    };\n  },\n\n  toJSON(message: EditFavoritesRequest): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => EditFavoritesRequestInstrument.toJSON(e));\n    }\n    if (message.actionType !== 0) {\n      obj.actionType = editFavoritesActionTypeToJSON(message.actionType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EditFavoritesRequest>): EditFavoritesRequest {\n    return EditFavoritesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EditFavoritesRequest>): EditFavoritesRequest {\n    const message = createBaseEditFavoritesRequest();\n    message.instruments = object.instruments?.map((e) => EditFavoritesRequestInstrument.fromPartial(e)) || [];\n    message.actionType = object.actionType ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseEditFavoritesRequestInstrument(): EditFavoritesRequestInstrument {\n  return { figi: undefined, instrumentId: \"\" };\n}\n\nexport const EditFavoritesRequestInstrument: MessageFns<EditFavoritesRequestInstrument> = {\n  encode(message: EditFavoritesRequestInstrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== undefined) {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EditFavoritesRequestInstrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEditFavoritesRequestInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EditFavoritesRequestInstrument {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: EditFavoritesRequestInstrument): unknown {\n    const obj: any = {};\n    if (message.figi !== undefined) {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EditFavoritesRequestInstrument>): EditFavoritesRequestInstrument {\n    return EditFavoritesRequestInstrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EditFavoritesRequestInstrument>): EditFavoritesRequestInstrument {\n    const message = createBaseEditFavoritesRequestInstrument();\n    message.figi = object.figi ?? undefined;\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseEditFavoritesResponse(): EditFavoritesResponse {\n  return { favoriteInstruments: [] };\n}\n\nexport const EditFavoritesResponse: MessageFns<EditFavoritesResponse> = {\n  encode(message: EditFavoritesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.favoriteInstruments) {\n      FavoriteInstrument.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EditFavoritesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEditFavoritesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.favoriteInstruments.push(FavoriteInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EditFavoritesResponse {\n    return {\n      favoriteInstruments: globalThis.Array.isArray(object?.favoriteInstruments)\n        ? object.favoriteInstruments.map((e: any) => FavoriteInstrument.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: EditFavoritesResponse): unknown {\n    const obj: any = {};\n    if (message.favoriteInstruments?.length) {\n      obj.favoriteInstruments = message.favoriteInstruments.map((e) => FavoriteInstrument.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EditFavoritesResponse>): EditFavoritesResponse {\n    return EditFavoritesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EditFavoritesResponse>): EditFavoritesResponse {\n    const message = createBaseEditFavoritesResponse();\n    message.favoriteInstruments = object.favoriteInstruments?.map((e) => FavoriteInstrument.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetCountriesRequest(): GetCountriesRequest {\n  return {};\n}\n\nexport const GetCountriesRequest: MessageFns<GetCountriesRequest> = {\n  encode(_: GetCountriesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetCountriesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetCountriesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): GetCountriesRequest {\n    return {};\n  },\n\n  toJSON(_: GetCountriesRequest): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetCountriesRequest>): GetCountriesRequest {\n    return GetCountriesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<GetCountriesRequest>): GetCountriesRequest {\n    const message = createBaseGetCountriesRequest();\n    return message;\n  },\n};\n\nfunction createBaseGetCountriesResponse(): GetCountriesResponse {\n  return { countries: [] };\n}\n\nexport const GetCountriesResponse: MessageFns<GetCountriesResponse> = {\n  encode(message: GetCountriesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.countries) {\n      CountryResponse.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetCountriesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetCountriesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.countries.push(CountryResponse.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetCountriesResponse {\n    return {\n      countries: globalThis.Array.isArray(object?.countries)\n        ? object.countries.map((e: any) => CountryResponse.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetCountriesResponse): unknown {\n    const obj: any = {};\n    if (message.countries?.length) {\n      obj.countries = message.countries.map((e) => CountryResponse.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetCountriesResponse>): GetCountriesResponse {\n    return GetCountriesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetCountriesResponse>): GetCountriesResponse {\n    const message = createBaseGetCountriesResponse();\n    message.countries = object.countries?.map((e) => CountryResponse.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseIndicativesRequest(): IndicativesRequest {\n  return {};\n}\n\nexport const IndicativesRequest: MessageFns<IndicativesRequest> = {\n  encode(_: IndicativesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndicativesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndicativesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): IndicativesRequest {\n    return {};\n  },\n\n  toJSON(_: IndicativesRequest): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndicativesRequest>): IndicativesRequest {\n    return IndicativesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<IndicativesRequest>): IndicativesRequest {\n    const message = createBaseIndicativesRequest();\n    return message;\n  },\n};\n\nfunction createBaseIndicativesResponse(): IndicativesResponse {\n  return { instruments: [] };\n}\n\nexport const IndicativesResponse: MessageFns<IndicativesResponse> = {\n  encode(message: IndicativesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      IndicativeResponse.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndicativesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndicativesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(IndicativeResponse.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndicativesResponse {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => IndicativeResponse.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: IndicativesResponse): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => IndicativeResponse.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndicativesResponse>): IndicativesResponse {\n    return IndicativesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndicativesResponse>): IndicativesResponse {\n    const message = createBaseIndicativesResponse();\n    message.instruments = object.instruments?.map((e) => IndicativeResponse.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseIndicativeResponse(): IndicativeResponse {\n  return {\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    currency: \"\",\n    instrumentKind: 0,\n    name: \"\",\n    exchange: \"\",\n    uid: \"\",\n    buyAvailableFlag: false,\n    sellAvailableFlag: false,\n  };\n}\n\nexport const IndicativeResponse: MessageFns<IndicativeResponse> = {\n  encode(message: IndicativeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(26).string(message.classCode);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(34).string(message.currency);\n    }\n    if (message.instrumentKind !== 0) {\n      writer.uint32(80).int32(message.instrumentKind);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(98).string(message.name);\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(106).string(message.exchange);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(114).string(message.uid);\n    }\n    if (message.buyAvailableFlag !== false) {\n      writer.uint32(3232).bool(message.buyAvailableFlag);\n    }\n    if (message.sellAvailableFlag !== false) {\n      writer.uint32(3240).bool(message.sellAvailableFlag);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndicativeResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndicativeResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.instrumentKind = reader.int32() as any;\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 404: {\n          if (tag !== 3232) {\n            break;\n          }\n\n          message.buyAvailableFlag = reader.bool();\n          continue;\n        }\n        case 405: {\n          if (tag !== 3240) {\n            break;\n          }\n\n          message.sellAvailableFlag = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndicativeResponse {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      instrumentKind: isSet(object.instrumentKind) ? instrumentTypeFromJSON(object.instrumentKind) : 0,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      buyAvailableFlag: isSet(object.buyAvailableFlag) ? globalThis.Boolean(object.buyAvailableFlag) : false,\n      sellAvailableFlag: isSet(object.sellAvailableFlag) ? globalThis.Boolean(object.sellAvailableFlag) : false,\n    };\n  },\n\n  toJSON(message: IndicativeResponse): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.instrumentKind !== 0) {\n      obj.instrumentKind = instrumentTypeToJSON(message.instrumentKind);\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.buyAvailableFlag !== false) {\n      obj.buyAvailableFlag = message.buyAvailableFlag;\n    }\n    if (message.sellAvailableFlag !== false) {\n      obj.sellAvailableFlag = message.sellAvailableFlag;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndicativeResponse>): IndicativeResponse {\n    return IndicativeResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndicativeResponse>): IndicativeResponse {\n    const message = createBaseIndicativeResponse();\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.currency = object.currency ?? \"\";\n    message.instrumentKind = object.instrumentKind ?? 0;\n    message.name = object.name ?? \"\";\n    message.exchange = object.exchange ?? \"\";\n    message.uid = object.uid ?? \"\";\n    message.buyAvailableFlag = object.buyAvailableFlag ?? false;\n    message.sellAvailableFlag = object.sellAvailableFlag ?? false;\n    return message;\n  },\n};\n\nfunction createBaseCountryResponse(): CountryResponse {\n  return { alfaTwo: \"\", alfaThree: \"\", name: \"\", nameBrief: \"\" };\n}\n\nexport const CountryResponse: MessageFns<CountryResponse> = {\n  encode(message: CountryResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.alfaTwo !== \"\") {\n      writer.uint32(10).string(message.alfaTwo);\n    }\n    if (message.alfaThree !== \"\") {\n      writer.uint32(18).string(message.alfaThree);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.nameBrief !== \"\") {\n      writer.uint32(34).string(message.nameBrief);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CountryResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCountryResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.alfaTwo = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.alfaThree = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.nameBrief = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CountryResponse {\n    return {\n      alfaTwo: isSet(object.alfaTwo) ? globalThis.String(object.alfaTwo) : \"\",\n      alfaThree: isSet(object.alfaThree) ? globalThis.String(object.alfaThree) : \"\",\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      nameBrief: isSet(object.nameBrief) ? globalThis.String(object.nameBrief) : \"\",\n    };\n  },\n\n  toJSON(message: CountryResponse): unknown {\n    const obj: any = {};\n    if (message.alfaTwo !== \"\") {\n      obj.alfaTwo = message.alfaTwo;\n    }\n    if (message.alfaThree !== \"\") {\n      obj.alfaThree = message.alfaThree;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.nameBrief !== \"\") {\n      obj.nameBrief = message.nameBrief;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CountryResponse>): CountryResponse {\n    return CountryResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CountryResponse>): CountryResponse {\n    const message = createBaseCountryResponse();\n    message.alfaTwo = object.alfaTwo ?? \"\";\n    message.alfaThree = object.alfaThree ?? \"\";\n    message.name = object.name ?? \"\";\n    message.nameBrief = object.nameBrief ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseFindInstrumentRequest(): FindInstrumentRequest {\n  return { query: \"\", instrumentKind: undefined, apiTradeAvailableFlag: undefined };\n}\n\nexport const FindInstrumentRequest: MessageFns<FindInstrumentRequest> = {\n  encode(message: FindInstrumentRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.query !== \"\") {\n      writer.uint32(10).string(message.query);\n    }\n    if (message.instrumentKind !== undefined) {\n      writer.uint32(16).int32(message.instrumentKind);\n    }\n    if (message.apiTradeAvailableFlag !== undefined) {\n      writer.uint32(24).bool(message.apiTradeAvailableFlag);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FindInstrumentRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFindInstrumentRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.query = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.instrumentKind = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FindInstrumentRequest {\n    return {\n      query: isSet(object.query) ? globalThis.String(object.query) : \"\",\n      instrumentKind: isSet(object.instrumentKind) ? instrumentTypeFromJSON(object.instrumentKind) : undefined,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : undefined,\n    };\n  },\n\n  toJSON(message: FindInstrumentRequest): unknown {\n    const obj: any = {};\n    if (message.query !== \"\") {\n      obj.query = message.query;\n    }\n    if (message.instrumentKind !== undefined) {\n      obj.instrumentKind = instrumentTypeToJSON(message.instrumentKind);\n    }\n    if (message.apiTradeAvailableFlag !== undefined) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FindInstrumentRequest>): FindInstrumentRequest {\n    return FindInstrumentRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FindInstrumentRequest>): FindInstrumentRequest {\n    const message = createBaseFindInstrumentRequest();\n    message.query = object.query ?? \"\";\n    message.instrumentKind = object.instrumentKind ?? undefined;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseFindInstrumentResponse(): FindInstrumentResponse {\n  return { instruments: [] };\n}\n\nexport const FindInstrumentResponse: MessageFns<FindInstrumentResponse> = {\n  encode(message: FindInstrumentResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      InstrumentShort.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FindInstrumentResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFindInstrumentResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(InstrumentShort.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FindInstrumentResponse {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => InstrumentShort.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: FindInstrumentResponse): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => InstrumentShort.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FindInstrumentResponse>): FindInstrumentResponse {\n    return FindInstrumentResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FindInstrumentResponse>): FindInstrumentResponse {\n    const message = createBaseFindInstrumentResponse();\n    message.instruments = object.instruments?.map((e) => InstrumentShort.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseInstrumentShort(): InstrumentShort {\n  return {\n    isin: \"\",\n    figi: \"\",\n    ticker: \"\",\n    classCode: \"\",\n    instrumentType: \"\",\n    name: \"\",\n    uid: \"\",\n    positionUid: \"\",\n    instrumentKind: 0,\n    apiTradeAvailableFlag: false,\n    forIisFlag: false,\n    first1minCandleDate: undefined,\n    first1dayCandleDate: undefined,\n    forQualInvestorFlag: false,\n    weekendFlag: false,\n    blockedTcaFlag: false,\n    lot: 0,\n  };\n}\n\nexport const InstrumentShort: MessageFns<InstrumentShort> = {\n  encode(message: InstrumentShort, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.isin !== \"\") {\n      writer.uint32(10).string(message.isin);\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(18).string(message.figi);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(26).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(34).string(message.classCode);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(42).string(message.instrumentType);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(50).string(message.name);\n    }\n    if (message.uid !== \"\") {\n      writer.uint32(58).string(message.uid);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(66).string(message.positionUid);\n    }\n    if (message.instrumentKind !== 0) {\n      writer.uint32(80).int32(message.instrumentKind);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(88).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.forIisFlag !== false) {\n      writer.uint32(96).bool(message.forIisFlag);\n    }\n    if (message.first1minCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1minCandleDate), writer.uint32(210).fork()).join();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.first1dayCandleDate), writer.uint32(218).fork()).join();\n    }\n    if (message.forQualInvestorFlag !== false) {\n      writer.uint32(224).bool(message.forQualInvestorFlag);\n    }\n    if (message.weekendFlag !== false) {\n      writer.uint32(232).bool(message.weekendFlag);\n    }\n    if (message.blockedTcaFlag !== false) {\n      writer.uint32(240).bool(message.blockedTcaFlag);\n    }\n    if (message.lot !== 0) {\n      writer.uint32(248).int32(message.lot);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InstrumentShort {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInstrumentShort();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.instrumentKind = reader.int32() as any;\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.forIisFlag = reader.bool();\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          message.first1minCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.first1dayCandleDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 28: {\n          if (tag !== 224) {\n            break;\n          }\n\n          message.forQualInvestorFlag = reader.bool();\n          continue;\n        }\n        case 29: {\n          if (tag !== 232) {\n            break;\n          }\n\n          message.weekendFlag = reader.bool();\n          continue;\n        }\n        case 30: {\n          if (tag !== 240) {\n            break;\n          }\n\n          message.blockedTcaFlag = reader.bool();\n          continue;\n        }\n        case 31: {\n          if (tag !== 248) {\n            break;\n          }\n\n          message.lot = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InstrumentShort {\n    return {\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      instrumentKind: isSet(object.instrumentKind) ? instrumentTypeFromJSON(object.instrumentKind) : 0,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      forIisFlag: isSet(object.forIisFlag) ? globalThis.Boolean(object.forIisFlag) : false,\n      first1minCandleDate: isSet(object.first1minCandleDate)\n        ? fromJsonTimestamp(object.first1minCandleDate)\n        : undefined,\n      first1dayCandleDate: isSet(object.first1dayCandleDate)\n        ? fromJsonTimestamp(object.first1dayCandleDate)\n        : undefined,\n      forQualInvestorFlag: isSet(object.forQualInvestorFlag) ? globalThis.Boolean(object.forQualInvestorFlag) : false,\n      weekendFlag: isSet(object.weekendFlag) ? globalThis.Boolean(object.weekendFlag) : false,\n      blockedTcaFlag: isSet(object.blockedTcaFlag) ? globalThis.Boolean(object.blockedTcaFlag) : false,\n      lot: isSet(object.lot) ? globalThis.Number(object.lot) : 0,\n    };\n  },\n\n  toJSON(message: InstrumentShort): unknown {\n    const obj: any = {};\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.instrumentKind !== 0) {\n      obj.instrumentKind = instrumentTypeToJSON(message.instrumentKind);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.forIisFlag !== false) {\n      obj.forIisFlag = message.forIisFlag;\n    }\n    if (message.first1minCandleDate !== undefined) {\n      obj.first1minCandleDate = message.first1minCandleDate.toISOString();\n    }\n    if (message.first1dayCandleDate !== undefined) {\n      obj.first1dayCandleDate = message.first1dayCandleDate.toISOString();\n    }\n    if (message.forQualInvestorFlag !== false) {\n      obj.forQualInvestorFlag = message.forQualInvestorFlag;\n    }\n    if (message.weekendFlag !== false) {\n      obj.weekendFlag = message.weekendFlag;\n    }\n    if (message.blockedTcaFlag !== false) {\n      obj.blockedTcaFlag = message.blockedTcaFlag;\n    }\n    if (message.lot !== 0) {\n      obj.lot = Math.round(message.lot);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InstrumentShort>): InstrumentShort {\n    return InstrumentShort.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InstrumentShort>): InstrumentShort {\n    const message = createBaseInstrumentShort();\n    message.isin = object.isin ?? \"\";\n    message.figi = object.figi ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.instrumentType = object.instrumentType ?? \"\";\n    message.name = object.name ?? \"\";\n    message.uid = object.uid ?? \"\";\n    message.positionUid = object.positionUid ?? \"\";\n    message.instrumentKind = object.instrumentKind ?? 0;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.forIisFlag = object.forIisFlag ?? false;\n    message.first1minCandleDate = object.first1minCandleDate ?? undefined;\n    message.first1dayCandleDate = object.first1dayCandleDate ?? undefined;\n    message.forQualInvestorFlag = object.forQualInvestorFlag ?? false;\n    message.weekendFlag = object.weekendFlag ?? false;\n    message.blockedTcaFlag = object.blockedTcaFlag ?? false;\n    message.lot = object.lot ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetBrandsRequest(): GetBrandsRequest {\n  return { paging: undefined };\n}\n\nexport const GetBrandsRequest: MessageFns<GetBrandsRequest> = {\n  encode(message: GetBrandsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.paging !== undefined) {\n      Page.encode(message.paging, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBrandsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBrandsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.paging = Page.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBrandsRequest {\n    return { paging: isSet(object.paging) ? Page.fromJSON(object.paging) : undefined };\n  },\n\n  toJSON(message: GetBrandsRequest): unknown {\n    const obj: any = {};\n    if (message.paging !== undefined) {\n      obj.paging = Page.toJSON(message.paging);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBrandsRequest>): GetBrandsRequest {\n    return GetBrandsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBrandsRequest>): GetBrandsRequest {\n    const message = createBaseGetBrandsRequest();\n    message.paging = (object.paging !== undefined && object.paging !== null)\n      ? Page.fromPartial(object.paging)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetBrandRequest(): GetBrandRequest {\n  return { id: \"\" };\n}\n\nexport const GetBrandRequest: MessageFns<GetBrandRequest> = {\n  encode(message: GetBrandRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== \"\") {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBrandRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBrandRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBrandRequest {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : \"\" };\n  },\n\n  toJSON(message: GetBrandRequest): unknown {\n    const obj: any = {};\n    if (message.id !== \"\") {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBrandRequest>): GetBrandRequest {\n    return GetBrandRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBrandRequest>): GetBrandRequest {\n    const message = createBaseGetBrandRequest();\n    message.id = object.id ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetBrandsResponse(): GetBrandsResponse {\n  return { brands: [], paging: undefined };\n}\n\nexport const GetBrandsResponse: MessageFns<GetBrandsResponse> = {\n  encode(message: GetBrandsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.brands) {\n      Brand.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.paging !== undefined) {\n      PageResponse.encode(message.paging, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBrandsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBrandsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.brands.push(Brand.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.paging = PageResponse.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBrandsResponse {\n    return {\n      brands: globalThis.Array.isArray(object?.brands) ? object.brands.map((e: any) => Brand.fromJSON(e)) : [],\n      paging: isSet(object.paging) ? PageResponse.fromJSON(object.paging) : undefined,\n    };\n  },\n\n  toJSON(message: GetBrandsResponse): unknown {\n    const obj: any = {};\n    if (message.brands?.length) {\n      obj.brands = message.brands.map((e) => Brand.toJSON(e));\n    }\n    if (message.paging !== undefined) {\n      obj.paging = PageResponse.toJSON(message.paging);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBrandsResponse>): GetBrandsResponse {\n    return GetBrandsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBrandsResponse>): GetBrandsResponse {\n    const message = createBaseGetBrandsResponse();\n    message.brands = object.brands?.map((e) => Brand.fromPartial(e)) || [];\n    message.paging = (object.paging !== undefined && object.paging !== null)\n      ? PageResponse.fromPartial(object.paging)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetAssetFundamentalsRequest(): GetAssetFundamentalsRequest {\n  return { assets: [] };\n}\n\nexport const GetAssetFundamentalsRequest: MessageFns<GetAssetFundamentalsRequest> = {\n  encode(message: GetAssetFundamentalsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.assets) {\n      writer.uint32(10).string(v!);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAssetFundamentalsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAssetFundamentalsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.assets.push(reader.string());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAssetFundamentalsRequest {\n    return {\n      assets: globalThis.Array.isArray(object?.assets) ? object.assets.map((e: any) => globalThis.String(e)) : [],\n    };\n  },\n\n  toJSON(message: GetAssetFundamentalsRequest): unknown {\n    const obj: any = {};\n    if (message.assets?.length) {\n      obj.assets = message.assets;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetAssetFundamentalsRequest>): GetAssetFundamentalsRequest {\n    return GetAssetFundamentalsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetAssetFundamentalsRequest>): GetAssetFundamentalsRequest {\n    const message = createBaseGetAssetFundamentalsRequest();\n    message.assets = object.assets?.map((e) => e) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetAssetFundamentalsResponse(): GetAssetFundamentalsResponse {\n  return { fundamentals: [] };\n}\n\nexport const GetAssetFundamentalsResponse: MessageFns<GetAssetFundamentalsResponse> = {\n  encode(message: GetAssetFundamentalsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.fundamentals) {\n      GetAssetFundamentalsResponse_StatisticResponse.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAssetFundamentalsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAssetFundamentalsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.fundamentals.push(GetAssetFundamentalsResponse_StatisticResponse.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAssetFundamentalsResponse {\n    return {\n      fundamentals: globalThis.Array.isArray(object?.fundamentals)\n        ? object.fundamentals.map((e: any) => GetAssetFundamentalsResponse_StatisticResponse.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetAssetFundamentalsResponse): unknown {\n    const obj: any = {};\n    if (message.fundamentals?.length) {\n      obj.fundamentals = message.fundamentals.map((e) => GetAssetFundamentalsResponse_StatisticResponse.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetAssetFundamentalsResponse>): GetAssetFundamentalsResponse {\n    return GetAssetFundamentalsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetAssetFundamentalsResponse>): GetAssetFundamentalsResponse {\n    const message = createBaseGetAssetFundamentalsResponse();\n    message.fundamentals =\n      object.fundamentals?.map((e) => GetAssetFundamentalsResponse_StatisticResponse.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetAssetFundamentalsResponse_StatisticResponse(): GetAssetFundamentalsResponse_StatisticResponse {\n  return {\n    assetUid: \"\",\n    currency: \"\",\n    marketCapitalization: 0,\n    highPriceLast52Weeks: 0,\n    lowPriceLast52Weeks: 0,\n    averageDailyVolumeLast10Days: 0,\n    averageDailyVolumeLast4Weeks: 0,\n    beta: 0,\n    freeFloat: 0,\n    forwardAnnualDividendYield: 0,\n    sharesOutstanding: 0,\n    revenueTtm: 0,\n    ebitdaTtm: 0,\n    netIncomeTtm: 0,\n    epsTtm: 0,\n    dilutedEpsTtm: 0,\n    freeCashFlowTtm: 0,\n    fiveYearAnnualRevenueGrowthRate: 0,\n    threeYearAnnualRevenueGrowthRate: 0,\n    peRatioTtm: 0,\n    priceToSalesTtm: 0,\n    priceToBookTtm: 0,\n    priceToFreeCashFlowTtm: 0,\n    totalEnterpriseValueMrq: 0,\n    evToEbitdaMrq: 0,\n    netMarginMrq: 0,\n    netInterestMarginMrq: 0,\n    roe: 0,\n    roa: 0,\n    roic: 0,\n    totalDebtMrq: 0,\n    totalDebtToEquityMrq: 0,\n    totalDebtToEbitdaMrq: 0,\n    freeCashFlowToPrice: 0,\n    netDebtToEbitda: 0,\n    currentRatioMrq: 0,\n    fixedChargeCoverageRatioFy: 0,\n    dividendYieldDailyTtm: 0,\n    dividendRateTtm: 0,\n    dividendsPerShare: 0,\n    fiveYearsAverageDividendYield: 0,\n    fiveYearAnnualDividendGrowthRate: 0,\n    dividendPayoutRatioFy: 0,\n    buyBackTtm: 0,\n    oneYearAnnualRevenueGrowthRate: 0,\n    domicileIndicatorCode: \"\",\n    adrToCommonShareRatio: 0,\n    numberOfEmployees: 0,\n    exDividendDate: undefined,\n    fiscalPeriodStartDate: undefined,\n    fiscalPeriodEndDate: undefined,\n    revenueChangeFiveYears: 0,\n    epsChangeFiveYears: 0,\n    ebitdaChangeFiveYears: 0,\n    totalDebtChangeFiveYears: 0,\n    evToSales: 0,\n  };\n}\n\nexport const GetAssetFundamentalsResponse_StatisticResponse: MessageFns<\n  GetAssetFundamentalsResponse_StatisticResponse\n> = {\n  encode(\n    message: GetAssetFundamentalsResponse_StatisticResponse,\n    writer: BinaryWriter = new BinaryWriter(),\n  ): BinaryWriter {\n    if (message.assetUid !== \"\") {\n      writer.uint32(10).string(message.assetUid);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(18).string(message.currency);\n    }\n    if (message.marketCapitalization !== 0) {\n      writer.uint32(25).double(message.marketCapitalization);\n    }\n    if (message.highPriceLast52Weeks !== 0) {\n      writer.uint32(33).double(message.highPriceLast52Weeks);\n    }\n    if (message.lowPriceLast52Weeks !== 0) {\n      writer.uint32(41).double(message.lowPriceLast52Weeks);\n    }\n    if (message.averageDailyVolumeLast10Days !== 0) {\n      writer.uint32(49).double(message.averageDailyVolumeLast10Days);\n    }\n    if (message.averageDailyVolumeLast4Weeks !== 0) {\n      writer.uint32(57).double(message.averageDailyVolumeLast4Weeks);\n    }\n    if (message.beta !== 0) {\n      writer.uint32(65).double(message.beta);\n    }\n    if (message.freeFloat !== 0) {\n      writer.uint32(73).double(message.freeFloat);\n    }\n    if (message.forwardAnnualDividendYield !== 0) {\n      writer.uint32(81).double(message.forwardAnnualDividendYield);\n    }\n    if (message.sharesOutstanding !== 0) {\n      writer.uint32(89).double(message.sharesOutstanding);\n    }\n    if (message.revenueTtm !== 0) {\n      writer.uint32(97).double(message.revenueTtm);\n    }\n    if (message.ebitdaTtm !== 0) {\n      writer.uint32(105).double(message.ebitdaTtm);\n    }\n    if (message.netIncomeTtm !== 0) {\n      writer.uint32(113).double(message.netIncomeTtm);\n    }\n    if (message.epsTtm !== 0) {\n      writer.uint32(121).double(message.epsTtm);\n    }\n    if (message.dilutedEpsTtm !== 0) {\n      writer.uint32(129).double(message.dilutedEpsTtm);\n    }\n    if (message.freeCashFlowTtm !== 0) {\n      writer.uint32(137).double(message.freeCashFlowTtm);\n    }\n    if (message.fiveYearAnnualRevenueGrowthRate !== 0) {\n      writer.uint32(145).double(message.fiveYearAnnualRevenueGrowthRate);\n    }\n    if (message.threeYearAnnualRevenueGrowthRate !== 0) {\n      writer.uint32(153).double(message.threeYearAnnualRevenueGrowthRate);\n    }\n    if (message.peRatioTtm !== 0) {\n      writer.uint32(161).double(message.peRatioTtm);\n    }\n    if (message.priceToSalesTtm !== 0) {\n      writer.uint32(169).double(message.priceToSalesTtm);\n    }\n    if (message.priceToBookTtm !== 0) {\n      writer.uint32(177).double(message.priceToBookTtm);\n    }\n    if (message.priceToFreeCashFlowTtm !== 0) {\n      writer.uint32(185).double(message.priceToFreeCashFlowTtm);\n    }\n    if (message.totalEnterpriseValueMrq !== 0) {\n      writer.uint32(193).double(message.totalEnterpriseValueMrq);\n    }\n    if (message.evToEbitdaMrq !== 0) {\n      writer.uint32(201).double(message.evToEbitdaMrq);\n    }\n    if (message.netMarginMrq !== 0) {\n      writer.uint32(209).double(message.netMarginMrq);\n    }\n    if (message.netInterestMarginMrq !== 0) {\n      writer.uint32(217).double(message.netInterestMarginMrq);\n    }\n    if (message.roe !== 0) {\n      writer.uint32(225).double(message.roe);\n    }\n    if (message.roa !== 0) {\n      writer.uint32(233).double(message.roa);\n    }\n    if (message.roic !== 0) {\n      writer.uint32(241).double(message.roic);\n    }\n    if (message.totalDebtMrq !== 0) {\n      writer.uint32(249).double(message.totalDebtMrq);\n    }\n    if (message.totalDebtToEquityMrq !== 0) {\n      writer.uint32(257).double(message.totalDebtToEquityMrq);\n    }\n    if (message.totalDebtToEbitdaMrq !== 0) {\n      writer.uint32(265).double(message.totalDebtToEbitdaMrq);\n    }\n    if (message.freeCashFlowToPrice !== 0) {\n      writer.uint32(273).double(message.freeCashFlowToPrice);\n    }\n    if (message.netDebtToEbitda !== 0) {\n      writer.uint32(281).double(message.netDebtToEbitda);\n    }\n    if (message.currentRatioMrq !== 0) {\n      writer.uint32(289).double(message.currentRatioMrq);\n    }\n    if (message.fixedChargeCoverageRatioFy !== 0) {\n      writer.uint32(297).double(message.fixedChargeCoverageRatioFy);\n    }\n    if (message.dividendYieldDailyTtm !== 0) {\n      writer.uint32(305).double(message.dividendYieldDailyTtm);\n    }\n    if (message.dividendRateTtm !== 0) {\n      writer.uint32(313).double(message.dividendRateTtm);\n    }\n    if (message.dividendsPerShare !== 0) {\n      writer.uint32(321).double(message.dividendsPerShare);\n    }\n    if (message.fiveYearsAverageDividendYield !== 0) {\n      writer.uint32(329).double(message.fiveYearsAverageDividendYield);\n    }\n    if (message.fiveYearAnnualDividendGrowthRate !== 0) {\n      writer.uint32(337).double(message.fiveYearAnnualDividendGrowthRate);\n    }\n    if (message.dividendPayoutRatioFy !== 0) {\n      writer.uint32(345).double(message.dividendPayoutRatioFy);\n    }\n    if (message.buyBackTtm !== 0) {\n      writer.uint32(353).double(message.buyBackTtm);\n    }\n    if (message.oneYearAnnualRevenueGrowthRate !== 0) {\n      writer.uint32(361).double(message.oneYearAnnualRevenueGrowthRate);\n    }\n    if (message.domicileIndicatorCode !== \"\") {\n      writer.uint32(370).string(message.domicileIndicatorCode);\n    }\n    if (message.adrToCommonShareRatio !== 0) {\n      writer.uint32(377).double(message.adrToCommonShareRatio);\n    }\n    if (message.numberOfEmployees !== 0) {\n      writer.uint32(385).double(message.numberOfEmployees);\n    }\n    if (message.exDividendDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.exDividendDate), writer.uint32(394).fork()).join();\n    }\n    if (message.fiscalPeriodStartDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.fiscalPeriodStartDate), writer.uint32(402).fork()).join();\n    }\n    if (message.fiscalPeriodEndDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.fiscalPeriodEndDate), writer.uint32(410).fork()).join();\n    }\n    if (message.revenueChangeFiveYears !== 0) {\n      writer.uint32(425).double(message.revenueChangeFiveYears);\n    }\n    if (message.epsChangeFiveYears !== 0) {\n      writer.uint32(433).double(message.epsChangeFiveYears);\n    }\n    if (message.ebitdaChangeFiveYears !== 0) {\n      writer.uint32(441).double(message.ebitdaChangeFiveYears);\n    }\n    if (message.totalDebtChangeFiveYears !== 0) {\n      writer.uint32(449).double(message.totalDebtChangeFiveYears);\n    }\n    if (message.evToSales !== 0) {\n      writer.uint32(457).double(message.evToSales);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAssetFundamentalsResponse_StatisticResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAssetFundamentalsResponse_StatisticResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.assetUid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 25) {\n            break;\n          }\n\n          message.marketCapitalization = reader.double();\n          continue;\n        }\n        case 4: {\n          if (tag !== 33) {\n            break;\n          }\n\n          message.highPriceLast52Weeks = reader.double();\n          continue;\n        }\n        case 5: {\n          if (tag !== 41) {\n            break;\n          }\n\n          message.lowPriceLast52Weeks = reader.double();\n          continue;\n        }\n        case 6: {\n          if (tag !== 49) {\n            break;\n          }\n\n          message.averageDailyVolumeLast10Days = reader.double();\n          continue;\n        }\n        case 7: {\n          if (tag !== 57) {\n            break;\n          }\n\n          message.averageDailyVolumeLast4Weeks = reader.double();\n          continue;\n        }\n        case 8: {\n          if (tag !== 65) {\n            break;\n          }\n\n          message.beta = reader.double();\n          continue;\n        }\n        case 9: {\n          if (tag !== 73) {\n            break;\n          }\n\n          message.freeFloat = reader.double();\n          continue;\n        }\n        case 10: {\n          if (tag !== 81) {\n            break;\n          }\n\n          message.forwardAnnualDividendYield = reader.double();\n          continue;\n        }\n        case 11: {\n          if (tag !== 89) {\n            break;\n          }\n\n          message.sharesOutstanding = reader.double();\n          continue;\n        }\n        case 12: {\n          if (tag !== 97) {\n            break;\n          }\n\n          message.revenueTtm = reader.double();\n          continue;\n        }\n        case 13: {\n          if (tag !== 105) {\n            break;\n          }\n\n          message.ebitdaTtm = reader.double();\n          continue;\n        }\n        case 14: {\n          if (tag !== 113) {\n            break;\n          }\n\n          message.netIncomeTtm = reader.double();\n          continue;\n        }\n        case 15: {\n          if (tag !== 121) {\n            break;\n          }\n\n          message.epsTtm = reader.double();\n          continue;\n        }\n        case 16: {\n          if (tag !== 129) {\n            break;\n          }\n\n          message.dilutedEpsTtm = reader.double();\n          continue;\n        }\n        case 17: {\n          if (tag !== 137) {\n            break;\n          }\n\n          message.freeCashFlowTtm = reader.double();\n          continue;\n        }\n        case 18: {\n          if (tag !== 145) {\n            break;\n          }\n\n          message.fiveYearAnnualRevenueGrowthRate = reader.double();\n          continue;\n        }\n        case 19: {\n          if (tag !== 153) {\n            break;\n          }\n\n          message.threeYearAnnualRevenueGrowthRate = reader.double();\n          continue;\n        }\n        case 20: {\n          if (tag !== 161) {\n            break;\n          }\n\n          message.peRatioTtm = reader.double();\n          continue;\n        }\n        case 21: {\n          if (tag !== 169) {\n            break;\n          }\n\n          message.priceToSalesTtm = reader.double();\n          continue;\n        }\n        case 22: {\n          if (tag !== 177) {\n            break;\n          }\n\n          message.priceToBookTtm = reader.double();\n          continue;\n        }\n        case 23: {\n          if (tag !== 185) {\n            break;\n          }\n\n          message.priceToFreeCashFlowTtm = reader.double();\n          continue;\n        }\n        case 24: {\n          if (tag !== 193) {\n            break;\n          }\n\n          message.totalEnterpriseValueMrq = reader.double();\n          continue;\n        }\n        case 25: {\n          if (tag !== 201) {\n            break;\n          }\n\n          message.evToEbitdaMrq = reader.double();\n          continue;\n        }\n        case 26: {\n          if (tag !== 209) {\n            break;\n          }\n\n          message.netMarginMrq = reader.double();\n          continue;\n        }\n        case 27: {\n          if (tag !== 217) {\n            break;\n          }\n\n          message.netInterestMarginMrq = reader.double();\n          continue;\n        }\n        case 28: {\n          if (tag !== 225) {\n            break;\n          }\n\n          message.roe = reader.double();\n          continue;\n        }\n        case 29: {\n          if (tag !== 233) {\n            break;\n          }\n\n          message.roa = reader.double();\n          continue;\n        }\n        case 30: {\n          if (tag !== 241) {\n            break;\n          }\n\n          message.roic = reader.double();\n          continue;\n        }\n        case 31: {\n          if (tag !== 249) {\n            break;\n          }\n\n          message.totalDebtMrq = reader.double();\n          continue;\n        }\n        case 32: {\n          if (tag !== 257) {\n            break;\n          }\n\n          message.totalDebtToEquityMrq = reader.double();\n          continue;\n        }\n        case 33: {\n          if (tag !== 265) {\n            break;\n          }\n\n          message.totalDebtToEbitdaMrq = reader.double();\n          continue;\n        }\n        case 34: {\n          if (tag !== 273) {\n            break;\n          }\n\n          message.freeCashFlowToPrice = reader.double();\n          continue;\n        }\n        case 35: {\n          if (tag !== 281) {\n            break;\n          }\n\n          message.netDebtToEbitda = reader.double();\n          continue;\n        }\n        case 36: {\n          if (tag !== 289) {\n            break;\n          }\n\n          message.currentRatioMrq = reader.double();\n          continue;\n        }\n        case 37: {\n          if (tag !== 297) {\n            break;\n          }\n\n          message.fixedChargeCoverageRatioFy = reader.double();\n          continue;\n        }\n        case 38: {\n          if (tag !== 305) {\n            break;\n          }\n\n          message.dividendYieldDailyTtm = reader.double();\n          continue;\n        }\n        case 39: {\n          if (tag !== 313) {\n            break;\n          }\n\n          message.dividendRateTtm = reader.double();\n          continue;\n        }\n        case 40: {\n          if (tag !== 321) {\n            break;\n          }\n\n          message.dividendsPerShare = reader.double();\n          continue;\n        }\n        case 41: {\n          if (tag !== 329) {\n            break;\n          }\n\n          message.fiveYearsAverageDividendYield = reader.double();\n          continue;\n        }\n        case 42: {\n          if (tag !== 337) {\n            break;\n          }\n\n          message.fiveYearAnnualDividendGrowthRate = reader.double();\n          continue;\n        }\n        case 43: {\n          if (tag !== 345) {\n            break;\n          }\n\n          message.dividendPayoutRatioFy = reader.double();\n          continue;\n        }\n        case 44: {\n          if (tag !== 353) {\n            break;\n          }\n\n          message.buyBackTtm = reader.double();\n          continue;\n        }\n        case 45: {\n          if (tag !== 361) {\n            break;\n          }\n\n          message.oneYearAnnualRevenueGrowthRate = reader.double();\n          continue;\n        }\n        case 46: {\n          if (tag !== 370) {\n            break;\n          }\n\n          message.domicileIndicatorCode = reader.string();\n          continue;\n        }\n        case 47: {\n          if (tag !== 377) {\n            break;\n          }\n\n          message.adrToCommonShareRatio = reader.double();\n          continue;\n        }\n        case 48: {\n          if (tag !== 385) {\n            break;\n          }\n\n          message.numberOfEmployees = reader.double();\n          continue;\n        }\n        case 49: {\n          if (tag !== 394) {\n            break;\n          }\n\n          message.exDividendDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 50: {\n          if (tag !== 402) {\n            break;\n          }\n\n          message.fiscalPeriodStartDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 51: {\n          if (tag !== 410) {\n            break;\n          }\n\n          message.fiscalPeriodEndDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 53: {\n          if (tag !== 425) {\n            break;\n          }\n\n          message.revenueChangeFiveYears = reader.double();\n          continue;\n        }\n        case 54: {\n          if (tag !== 433) {\n            break;\n          }\n\n          message.epsChangeFiveYears = reader.double();\n          continue;\n        }\n        case 55: {\n          if (tag !== 441) {\n            break;\n          }\n\n          message.ebitdaChangeFiveYears = reader.double();\n          continue;\n        }\n        case 56: {\n          if (tag !== 449) {\n            break;\n          }\n\n          message.totalDebtChangeFiveYears = reader.double();\n          continue;\n        }\n        case 57: {\n          if (tag !== 457) {\n            break;\n          }\n\n          message.evToSales = reader.double();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAssetFundamentalsResponse_StatisticResponse {\n    return {\n      assetUid: isSet(object.assetUid) ? globalThis.String(object.assetUid) : \"\",\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      marketCapitalization: isSet(object.marketCapitalization) ? globalThis.Number(object.marketCapitalization) : 0,\n      highPriceLast52Weeks: isSet(object.highPriceLast52Weeks) ? globalThis.Number(object.highPriceLast52Weeks) : 0,\n      lowPriceLast52Weeks: isSet(object.lowPriceLast52Weeks) ? globalThis.Number(object.lowPriceLast52Weeks) : 0,\n      averageDailyVolumeLast10Days: isSet(object.averageDailyVolumeLast10Days)\n        ? globalThis.Number(object.averageDailyVolumeLast10Days)\n        : 0,\n      averageDailyVolumeLast4Weeks: isSet(object.averageDailyVolumeLast4Weeks)\n        ? globalThis.Number(object.averageDailyVolumeLast4Weeks)\n        : 0,\n      beta: isSet(object.beta) ? globalThis.Number(object.beta) : 0,\n      freeFloat: isSet(object.freeFloat) ? globalThis.Number(object.freeFloat) : 0,\n      forwardAnnualDividendYield: isSet(object.forwardAnnualDividendYield)\n        ? globalThis.Number(object.forwardAnnualDividendYield)\n        : 0,\n      sharesOutstanding: isSet(object.sharesOutstanding) ? globalThis.Number(object.sharesOutstanding) : 0,\n      revenueTtm: isSet(object.revenueTtm) ? globalThis.Number(object.revenueTtm) : 0,\n      ebitdaTtm: isSet(object.ebitdaTtm) ? globalThis.Number(object.ebitdaTtm) : 0,\n      netIncomeTtm: isSet(object.netIncomeTtm) ? globalThis.Number(object.netIncomeTtm) : 0,\n      epsTtm: isSet(object.epsTtm) ? globalThis.Number(object.epsTtm) : 0,\n      dilutedEpsTtm: isSet(object.dilutedEpsTtm) ? globalThis.Number(object.dilutedEpsTtm) : 0,\n      freeCashFlowTtm: isSet(object.freeCashFlowTtm) ? globalThis.Number(object.freeCashFlowTtm) : 0,\n      fiveYearAnnualRevenueGrowthRate: isSet(object.fiveYearAnnualRevenueGrowthRate)\n        ? globalThis.Number(object.fiveYearAnnualRevenueGrowthRate)\n        : 0,\n      threeYearAnnualRevenueGrowthRate: isSet(object.threeYearAnnualRevenueGrowthRate)\n        ? globalThis.Number(object.threeYearAnnualRevenueGrowthRate)\n        : 0,\n      peRatioTtm: isSet(object.peRatioTtm) ? globalThis.Number(object.peRatioTtm) : 0,\n      priceToSalesTtm: isSet(object.priceToSalesTtm) ? globalThis.Number(object.priceToSalesTtm) : 0,\n      priceToBookTtm: isSet(object.priceToBookTtm) ? globalThis.Number(object.priceToBookTtm) : 0,\n      priceToFreeCashFlowTtm: isSet(object.priceToFreeCashFlowTtm)\n        ? globalThis.Number(object.priceToFreeCashFlowTtm)\n        : 0,\n      totalEnterpriseValueMrq: isSet(object.totalEnterpriseValueMrq)\n        ? globalThis.Number(object.totalEnterpriseValueMrq)\n        : 0,\n      evToEbitdaMrq: isSet(object.evToEbitdaMrq) ? globalThis.Number(object.evToEbitdaMrq) : 0,\n      netMarginMrq: isSet(object.netMarginMrq) ? globalThis.Number(object.netMarginMrq) : 0,\n      netInterestMarginMrq: isSet(object.netInterestMarginMrq) ? globalThis.Number(object.netInterestMarginMrq) : 0,\n      roe: isSet(object.roe) ? globalThis.Number(object.roe) : 0,\n      roa: isSet(object.roa) ? globalThis.Number(object.roa) : 0,\n      roic: isSet(object.roic) ? globalThis.Number(object.roic) : 0,\n      totalDebtMrq: isSet(object.totalDebtMrq) ? globalThis.Number(object.totalDebtMrq) : 0,\n      totalDebtToEquityMrq: isSet(object.totalDebtToEquityMrq) ? globalThis.Number(object.totalDebtToEquityMrq) : 0,\n      totalDebtToEbitdaMrq: isSet(object.totalDebtToEbitdaMrq) ? globalThis.Number(object.totalDebtToEbitdaMrq) : 0,\n      freeCashFlowToPrice: isSet(object.freeCashFlowToPrice) ? globalThis.Number(object.freeCashFlowToPrice) : 0,\n      netDebtToEbitda: isSet(object.netDebtToEbitda) ? globalThis.Number(object.netDebtToEbitda) : 0,\n      currentRatioMrq: isSet(object.currentRatioMrq) ? globalThis.Number(object.currentRatioMrq) : 0,\n      fixedChargeCoverageRatioFy: isSet(object.fixedChargeCoverageRatioFy)\n        ? globalThis.Number(object.fixedChargeCoverageRatioFy)\n        : 0,\n      dividendYieldDailyTtm: isSet(object.dividendYieldDailyTtm) ? globalThis.Number(object.dividendYieldDailyTtm) : 0,\n      dividendRateTtm: isSet(object.dividendRateTtm) ? globalThis.Number(object.dividendRateTtm) : 0,\n      dividendsPerShare: isSet(object.dividendsPerShare) ? globalThis.Number(object.dividendsPerShare) : 0,\n      fiveYearsAverageDividendYield: isSet(object.fiveYearsAverageDividendYield)\n        ? globalThis.Number(object.fiveYearsAverageDividendYield)\n        : 0,\n      fiveYearAnnualDividendGrowthRate: isSet(object.fiveYearAnnualDividendGrowthRate)\n        ? globalThis.Number(object.fiveYearAnnualDividendGrowthRate)\n        : 0,\n      dividendPayoutRatioFy: isSet(object.dividendPayoutRatioFy) ? globalThis.Number(object.dividendPayoutRatioFy) : 0,\n      buyBackTtm: isSet(object.buyBackTtm) ? globalThis.Number(object.buyBackTtm) : 0,\n      oneYearAnnualRevenueGrowthRate: isSet(object.oneYearAnnualRevenueGrowthRate)\n        ? globalThis.Number(object.oneYearAnnualRevenueGrowthRate)\n        : 0,\n      domicileIndicatorCode: isSet(object.domicileIndicatorCode) ? globalThis.String(object.domicileIndicatorCode) : \"\",\n      adrToCommonShareRatio: isSet(object.adrToCommonShareRatio) ? globalThis.Number(object.adrToCommonShareRatio) : 0,\n      numberOfEmployees: isSet(object.numberOfEmployees) ? globalThis.Number(object.numberOfEmployees) : 0,\n      exDividendDate: isSet(object.exDividendDate) ? fromJsonTimestamp(object.exDividendDate) : undefined,\n      fiscalPeriodStartDate: isSet(object.fiscalPeriodStartDate)\n        ? fromJsonTimestamp(object.fiscalPeriodStartDate)\n        : undefined,\n      fiscalPeriodEndDate: isSet(object.fiscalPeriodEndDate)\n        ? fromJsonTimestamp(object.fiscalPeriodEndDate)\n        : undefined,\n      revenueChangeFiveYears: isSet(object.revenueChangeFiveYears)\n        ? globalThis.Number(object.revenueChangeFiveYears)\n        : 0,\n      epsChangeFiveYears: isSet(object.epsChangeFiveYears) ? globalThis.Number(object.epsChangeFiveYears) : 0,\n      ebitdaChangeFiveYears: isSet(object.ebitdaChangeFiveYears) ? globalThis.Number(object.ebitdaChangeFiveYears) : 0,\n      totalDebtChangeFiveYears: isSet(object.totalDebtChangeFiveYears)\n        ? globalThis.Number(object.totalDebtChangeFiveYears)\n        : 0,\n      evToSales: isSet(object.evToSales) ? globalThis.Number(object.evToSales) : 0,\n    };\n  },\n\n  toJSON(message: GetAssetFundamentalsResponse_StatisticResponse): unknown {\n    const obj: any = {};\n    if (message.assetUid !== \"\") {\n      obj.assetUid = message.assetUid;\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.marketCapitalization !== 0) {\n      obj.marketCapitalization = message.marketCapitalization;\n    }\n    if (message.highPriceLast52Weeks !== 0) {\n      obj.highPriceLast52Weeks = message.highPriceLast52Weeks;\n    }\n    if (message.lowPriceLast52Weeks !== 0) {\n      obj.lowPriceLast52Weeks = message.lowPriceLast52Weeks;\n    }\n    if (message.averageDailyVolumeLast10Days !== 0) {\n      obj.averageDailyVolumeLast10Days = message.averageDailyVolumeLast10Days;\n    }\n    if (message.averageDailyVolumeLast4Weeks !== 0) {\n      obj.averageDailyVolumeLast4Weeks = message.averageDailyVolumeLast4Weeks;\n    }\n    if (message.beta !== 0) {\n      obj.beta = message.beta;\n    }\n    if (message.freeFloat !== 0) {\n      obj.freeFloat = message.freeFloat;\n    }\n    if (message.forwardAnnualDividendYield !== 0) {\n      obj.forwardAnnualDividendYield = message.forwardAnnualDividendYield;\n    }\n    if (message.sharesOutstanding !== 0) {\n      obj.sharesOutstanding = message.sharesOutstanding;\n    }\n    if (message.revenueTtm !== 0) {\n      obj.revenueTtm = message.revenueTtm;\n    }\n    if (message.ebitdaTtm !== 0) {\n      obj.ebitdaTtm = message.ebitdaTtm;\n    }\n    if (message.netIncomeTtm !== 0) {\n      obj.netIncomeTtm = message.netIncomeTtm;\n    }\n    if (message.epsTtm !== 0) {\n      obj.epsTtm = message.epsTtm;\n    }\n    if (message.dilutedEpsTtm !== 0) {\n      obj.dilutedEpsTtm = message.dilutedEpsTtm;\n    }\n    if (message.freeCashFlowTtm !== 0) {\n      obj.freeCashFlowTtm = message.freeCashFlowTtm;\n    }\n    if (message.fiveYearAnnualRevenueGrowthRate !== 0) {\n      obj.fiveYearAnnualRevenueGrowthRate = message.fiveYearAnnualRevenueGrowthRate;\n    }\n    if (message.threeYearAnnualRevenueGrowthRate !== 0) {\n      obj.threeYearAnnualRevenueGrowthRate = message.threeYearAnnualRevenueGrowthRate;\n    }\n    if (message.peRatioTtm !== 0) {\n      obj.peRatioTtm = message.peRatioTtm;\n    }\n    if (message.priceToSalesTtm !== 0) {\n      obj.priceToSalesTtm = message.priceToSalesTtm;\n    }\n    if (message.priceToBookTtm !== 0) {\n      obj.priceToBookTtm = message.priceToBookTtm;\n    }\n    if (message.priceToFreeCashFlowTtm !== 0) {\n      obj.priceToFreeCashFlowTtm = message.priceToFreeCashFlowTtm;\n    }\n    if (message.totalEnterpriseValueMrq !== 0) {\n      obj.totalEnterpriseValueMrq = message.totalEnterpriseValueMrq;\n    }\n    if (message.evToEbitdaMrq !== 0) {\n      obj.evToEbitdaMrq = message.evToEbitdaMrq;\n    }\n    if (message.netMarginMrq !== 0) {\n      obj.netMarginMrq = message.netMarginMrq;\n    }\n    if (message.netInterestMarginMrq !== 0) {\n      obj.netInterestMarginMrq = message.netInterestMarginMrq;\n    }\n    if (message.roe !== 0) {\n      obj.roe = message.roe;\n    }\n    if (message.roa !== 0) {\n      obj.roa = message.roa;\n    }\n    if (message.roic !== 0) {\n      obj.roic = message.roic;\n    }\n    if (message.totalDebtMrq !== 0) {\n      obj.totalDebtMrq = message.totalDebtMrq;\n    }\n    if (message.totalDebtToEquityMrq !== 0) {\n      obj.totalDebtToEquityMrq = message.totalDebtToEquityMrq;\n    }\n    if (message.totalDebtToEbitdaMrq !== 0) {\n      obj.totalDebtToEbitdaMrq = message.totalDebtToEbitdaMrq;\n    }\n    if (message.freeCashFlowToPrice !== 0) {\n      obj.freeCashFlowToPrice = message.freeCashFlowToPrice;\n    }\n    if (message.netDebtToEbitda !== 0) {\n      obj.netDebtToEbitda = message.netDebtToEbitda;\n    }\n    if (message.currentRatioMrq !== 0) {\n      obj.currentRatioMrq = message.currentRatioMrq;\n    }\n    if (message.fixedChargeCoverageRatioFy !== 0) {\n      obj.fixedChargeCoverageRatioFy = message.fixedChargeCoverageRatioFy;\n    }\n    if (message.dividendYieldDailyTtm !== 0) {\n      obj.dividendYieldDailyTtm = message.dividendYieldDailyTtm;\n    }\n    if (message.dividendRateTtm !== 0) {\n      obj.dividendRateTtm = message.dividendRateTtm;\n    }\n    if (message.dividendsPerShare !== 0) {\n      obj.dividendsPerShare = message.dividendsPerShare;\n    }\n    if (message.fiveYearsAverageDividendYield !== 0) {\n      obj.fiveYearsAverageDividendYield = message.fiveYearsAverageDividendYield;\n    }\n    if (message.fiveYearAnnualDividendGrowthRate !== 0) {\n      obj.fiveYearAnnualDividendGrowthRate = message.fiveYearAnnualDividendGrowthRate;\n    }\n    if (message.dividendPayoutRatioFy !== 0) {\n      obj.dividendPayoutRatioFy = message.dividendPayoutRatioFy;\n    }\n    if (message.buyBackTtm !== 0) {\n      obj.buyBackTtm = message.buyBackTtm;\n    }\n    if (message.oneYearAnnualRevenueGrowthRate !== 0) {\n      obj.oneYearAnnualRevenueGrowthRate = message.oneYearAnnualRevenueGrowthRate;\n    }\n    if (message.domicileIndicatorCode !== \"\") {\n      obj.domicileIndicatorCode = message.domicileIndicatorCode;\n    }\n    if (message.adrToCommonShareRatio !== 0) {\n      obj.adrToCommonShareRatio = message.adrToCommonShareRatio;\n    }\n    if (message.numberOfEmployees !== 0) {\n      obj.numberOfEmployees = message.numberOfEmployees;\n    }\n    if (message.exDividendDate !== undefined) {\n      obj.exDividendDate = message.exDividendDate.toISOString();\n    }\n    if (message.fiscalPeriodStartDate !== undefined) {\n      obj.fiscalPeriodStartDate = message.fiscalPeriodStartDate.toISOString();\n    }\n    if (message.fiscalPeriodEndDate !== undefined) {\n      obj.fiscalPeriodEndDate = message.fiscalPeriodEndDate.toISOString();\n    }\n    if (message.revenueChangeFiveYears !== 0) {\n      obj.revenueChangeFiveYears = message.revenueChangeFiveYears;\n    }\n    if (message.epsChangeFiveYears !== 0) {\n      obj.epsChangeFiveYears = message.epsChangeFiveYears;\n    }\n    if (message.ebitdaChangeFiveYears !== 0) {\n      obj.ebitdaChangeFiveYears = message.ebitdaChangeFiveYears;\n    }\n    if (message.totalDebtChangeFiveYears !== 0) {\n      obj.totalDebtChangeFiveYears = message.totalDebtChangeFiveYears;\n    }\n    if (message.evToSales !== 0) {\n      obj.evToSales = message.evToSales;\n    }\n    return obj;\n  },\n\n  create(\n    base?: DeepPartial<GetAssetFundamentalsResponse_StatisticResponse>,\n  ): GetAssetFundamentalsResponse_StatisticResponse {\n    return GetAssetFundamentalsResponse_StatisticResponse.fromPartial(base ?? {});\n  },\n  fromPartial(\n    object: DeepPartial<GetAssetFundamentalsResponse_StatisticResponse>,\n  ): GetAssetFundamentalsResponse_StatisticResponse {\n    const message = createBaseGetAssetFundamentalsResponse_StatisticResponse();\n    message.assetUid = object.assetUid ?? \"\";\n    message.currency = object.currency ?? \"\";\n    message.marketCapitalization = object.marketCapitalization ?? 0;\n    message.highPriceLast52Weeks = object.highPriceLast52Weeks ?? 0;\n    message.lowPriceLast52Weeks = object.lowPriceLast52Weeks ?? 0;\n    message.averageDailyVolumeLast10Days = object.averageDailyVolumeLast10Days ?? 0;\n    message.averageDailyVolumeLast4Weeks = object.averageDailyVolumeLast4Weeks ?? 0;\n    message.beta = object.beta ?? 0;\n    message.freeFloat = object.freeFloat ?? 0;\n    message.forwardAnnualDividendYield = object.forwardAnnualDividendYield ?? 0;\n    message.sharesOutstanding = object.sharesOutstanding ?? 0;\n    message.revenueTtm = object.revenueTtm ?? 0;\n    message.ebitdaTtm = object.ebitdaTtm ?? 0;\n    message.netIncomeTtm = object.netIncomeTtm ?? 0;\n    message.epsTtm = object.epsTtm ?? 0;\n    message.dilutedEpsTtm = object.dilutedEpsTtm ?? 0;\n    message.freeCashFlowTtm = object.freeCashFlowTtm ?? 0;\n    message.fiveYearAnnualRevenueGrowthRate = object.fiveYearAnnualRevenueGrowthRate ?? 0;\n    message.threeYearAnnualRevenueGrowthRate = object.threeYearAnnualRevenueGrowthRate ?? 0;\n    message.peRatioTtm = object.peRatioTtm ?? 0;\n    message.priceToSalesTtm = object.priceToSalesTtm ?? 0;\n    message.priceToBookTtm = object.priceToBookTtm ?? 0;\n    message.priceToFreeCashFlowTtm = object.priceToFreeCashFlowTtm ?? 0;\n    message.totalEnterpriseValueMrq = object.totalEnterpriseValueMrq ?? 0;\n    message.evToEbitdaMrq = object.evToEbitdaMrq ?? 0;\n    message.netMarginMrq = object.netMarginMrq ?? 0;\n    message.netInterestMarginMrq = object.netInterestMarginMrq ?? 0;\n    message.roe = object.roe ?? 0;\n    message.roa = object.roa ?? 0;\n    message.roic = object.roic ?? 0;\n    message.totalDebtMrq = object.totalDebtMrq ?? 0;\n    message.totalDebtToEquityMrq = object.totalDebtToEquityMrq ?? 0;\n    message.totalDebtToEbitdaMrq = object.totalDebtToEbitdaMrq ?? 0;\n    message.freeCashFlowToPrice = object.freeCashFlowToPrice ?? 0;\n    message.netDebtToEbitda = object.netDebtToEbitda ?? 0;\n    message.currentRatioMrq = object.currentRatioMrq ?? 0;\n    message.fixedChargeCoverageRatioFy = object.fixedChargeCoverageRatioFy ?? 0;\n    message.dividendYieldDailyTtm = object.dividendYieldDailyTtm ?? 0;\n    message.dividendRateTtm = object.dividendRateTtm ?? 0;\n    message.dividendsPerShare = object.dividendsPerShare ?? 0;\n    message.fiveYearsAverageDividendYield = object.fiveYearsAverageDividendYield ?? 0;\n    message.fiveYearAnnualDividendGrowthRate = object.fiveYearAnnualDividendGrowthRate ?? 0;\n    message.dividendPayoutRatioFy = object.dividendPayoutRatioFy ?? 0;\n    message.buyBackTtm = object.buyBackTtm ?? 0;\n    message.oneYearAnnualRevenueGrowthRate = object.oneYearAnnualRevenueGrowthRate ?? 0;\n    message.domicileIndicatorCode = object.domicileIndicatorCode ?? \"\";\n    message.adrToCommonShareRatio = object.adrToCommonShareRatio ?? 0;\n    message.numberOfEmployees = object.numberOfEmployees ?? 0;\n    message.exDividendDate = object.exDividendDate ?? undefined;\n    message.fiscalPeriodStartDate = object.fiscalPeriodStartDate ?? undefined;\n    message.fiscalPeriodEndDate = object.fiscalPeriodEndDate ?? undefined;\n    message.revenueChangeFiveYears = object.revenueChangeFiveYears ?? 0;\n    message.epsChangeFiveYears = object.epsChangeFiveYears ?? 0;\n    message.ebitdaChangeFiveYears = object.ebitdaChangeFiveYears ?? 0;\n    message.totalDebtChangeFiveYears = object.totalDebtChangeFiveYears ?? 0;\n    message.evToSales = object.evToSales ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetAssetReportsRequest(): GetAssetReportsRequest {\n  return { instrumentId: \"\", from: undefined, to: undefined };\n}\n\nexport const GetAssetReportsRequest: MessageFns<GetAssetReportsRequest> = {\n  encode(message: GetAssetReportsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrumentId !== \"\") {\n      writer.uint32(10).string(message.instrumentId);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAssetReportsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAssetReportsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAssetReportsRequest {\n    return {\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n    };\n  },\n\n  toJSON(message: GetAssetReportsRequest): unknown {\n    const obj: any = {};\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetAssetReportsRequest>): GetAssetReportsRequest {\n    return GetAssetReportsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetAssetReportsRequest>): GetAssetReportsRequest {\n    const message = createBaseGetAssetReportsRequest();\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetAssetReportsResponse(): GetAssetReportsResponse {\n  return { events: [] };\n}\n\nexport const GetAssetReportsResponse: MessageFns<GetAssetReportsResponse> = {\n  encode(message: GetAssetReportsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.events) {\n      GetAssetReportsResponse_GetAssetReportsEvent.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAssetReportsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAssetReportsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.events.push(GetAssetReportsResponse_GetAssetReportsEvent.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAssetReportsResponse {\n    return {\n      events: globalThis.Array.isArray(object?.events)\n        ? object.events.map((e: any) => GetAssetReportsResponse_GetAssetReportsEvent.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetAssetReportsResponse): unknown {\n    const obj: any = {};\n    if (message.events?.length) {\n      obj.events = message.events.map((e) => GetAssetReportsResponse_GetAssetReportsEvent.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetAssetReportsResponse>): GetAssetReportsResponse {\n    return GetAssetReportsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetAssetReportsResponse>): GetAssetReportsResponse {\n    const message = createBaseGetAssetReportsResponse();\n    message.events = object.events?.map((e) => GetAssetReportsResponse_GetAssetReportsEvent.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetAssetReportsResponse_GetAssetReportsEvent(): GetAssetReportsResponse_GetAssetReportsEvent {\n  return { instrumentId: \"\", reportDate: undefined, periodYear: 0, periodNum: 0, periodType: 0, createdAt: undefined };\n}\n\nexport const GetAssetReportsResponse_GetAssetReportsEvent: MessageFns<GetAssetReportsResponse_GetAssetReportsEvent> = {\n  encode(\n    message: GetAssetReportsResponse_GetAssetReportsEvent,\n    writer: BinaryWriter = new BinaryWriter(),\n  ): BinaryWriter {\n    if (message.instrumentId !== \"\") {\n      writer.uint32(10).string(message.instrumentId);\n    }\n    if (message.reportDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.reportDate), writer.uint32(18).fork()).join();\n    }\n    if (message.periodYear !== 0) {\n      writer.uint32(24).int32(message.periodYear);\n    }\n    if (message.periodNum !== 0) {\n      writer.uint32(32).int32(message.periodNum);\n    }\n    if (message.periodType !== 0) {\n      writer.uint32(40).int32(message.periodType);\n    }\n    if (message.createdAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.createdAt), writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAssetReportsResponse_GetAssetReportsEvent {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAssetReportsResponse_GetAssetReportsEvent();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.reportDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.periodYear = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.periodNum = reader.int32();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.periodType = reader.int32() as any;\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.createdAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAssetReportsResponse_GetAssetReportsEvent {\n    return {\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      reportDate: isSet(object.reportDate) ? fromJsonTimestamp(object.reportDate) : undefined,\n      periodYear: isSet(object.periodYear) ? globalThis.Number(object.periodYear) : 0,\n      periodNum: isSet(object.periodNum) ? globalThis.Number(object.periodNum) : 0,\n      periodType: isSet(object.periodType)\n        ? getAssetReportsResponse_AssetReportPeriodTypeFromJSON(object.periodType)\n        : 0,\n      createdAt: isSet(object.createdAt) ? fromJsonTimestamp(object.createdAt) : undefined,\n    };\n  },\n\n  toJSON(message: GetAssetReportsResponse_GetAssetReportsEvent): unknown {\n    const obj: any = {};\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.reportDate !== undefined) {\n      obj.reportDate = message.reportDate.toISOString();\n    }\n    if (message.periodYear !== 0) {\n      obj.periodYear = Math.round(message.periodYear);\n    }\n    if (message.periodNum !== 0) {\n      obj.periodNum = Math.round(message.periodNum);\n    }\n    if (message.periodType !== 0) {\n      obj.periodType = getAssetReportsResponse_AssetReportPeriodTypeToJSON(message.periodType);\n    }\n    if (message.createdAt !== undefined) {\n      obj.createdAt = message.createdAt.toISOString();\n    }\n    return obj;\n  },\n\n  create(\n    base?: DeepPartial<GetAssetReportsResponse_GetAssetReportsEvent>,\n  ): GetAssetReportsResponse_GetAssetReportsEvent {\n    return GetAssetReportsResponse_GetAssetReportsEvent.fromPartial(base ?? {});\n  },\n  fromPartial(\n    object: DeepPartial<GetAssetReportsResponse_GetAssetReportsEvent>,\n  ): GetAssetReportsResponse_GetAssetReportsEvent {\n    const message = createBaseGetAssetReportsResponse_GetAssetReportsEvent();\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.reportDate = object.reportDate ?? undefined;\n    message.periodYear = object.periodYear ?? 0;\n    message.periodNum = object.periodNum ?? 0;\n    message.periodType = object.periodType ?? 0;\n    message.createdAt = object.createdAt ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetConsensusForecastsRequest(): GetConsensusForecastsRequest {\n  return { paging: undefined };\n}\n\nexport const GetConsensusForecastsRequest: MessageFns<GetConsensusForecastsRequest> = {\n  encode(message: GetConsensusForecastsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.paging !== undefined) {\n      Page.encode(message.paging, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetConsensusForecastsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetConsensusForecastsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.paging = Page.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetConsensusForecastsRequest {\n    return { paging: isSet(object.paging) ? Page.fromJSON(object.paging) : undefined };\n  },\n\n  toJSON(message: GetConsensusForecastsRequest): unknown {\n    const obj: any = {};\n    if (message.paging !== undefined) {\n      obj.paging = Page.toJSON(message.paging);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetConsensusForecastsRequest>): GetConsensusForecastsRequest {\n    return GetConsensusForecastsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetConsensusForecastsRequest>): GetConsensusForecastsRequest {\n    const message = createBaseGetConsensusForecastsRequest();\n    message.paging = (object.paging !== undefined && object.paging !== null)\n      ? Page.fromPartial(object.paging)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetConsensusForecastsResponse(): GetConsensusForecastsResponse {\n  return { items: [], page: undefined };\n}\n\nexport const GetConsensusForecastsResponse: MessageFns<GetConsensusForecastsResponse> = {\n  encode(message: GetConsensusForecastsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.items) {\n      GetConsensusForecastsResponse_ConsensusForecastsItem.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.page !== undefined) {\n      PageResponse.encode(message.page, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetConsensusForecastsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetConsensusForecastsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.items.push(GetConsensusForecastsResponse_ConsensusForecastsItem.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.page = PageResponse.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetConsensusForecastsResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => GetConsensusForecastsResponse_ConsensusForecastsItem.fromJSON(e))\n        : [],\n      page: isSet(object.page) ? PageResponse.fromJSON(object.page) : undefined,\n    };\n  },\n\n  toJSON(message: GetConsensusForecastsResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => GetConsensusForecastsResponse_ConsensusForecastsItem.toJSON(e));\n    }\n    if (message.page !== undefined) {\n      obj.page = PageResponse.toJSON(message.page);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetConsensusForecastsResponse>): GetConsensusForecastsResponse {\n    return GetConsensusForecastsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetConsensusForecastsResponse>): GetConsensusForecastsResponse {\n    const message = createBaseGetConsensusForecastsResponse();\n    message.items = object.items?.map((e) => GetConsensusForecastsResponse_ConsensusForecastsItem.fromPartial(e)) || [];\n    message.page = (object.page !== undefined && object.page !== null)\n      ? PageResponse.fromPartial(object.page)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetConsensusForecastsResponse_ConsensusForecastsItem(): GetConsensusForecastsResponse_ConsensusForecastsItem {\n  return {\n    uid: \"\",\n    assetUid: \"\",\n    createdAt: undefined,\n    bestTargetPrice: undefined,\n    bestTargetLow: undefined,\n    bestTargetHigh: undefined,\n    totalBuyRecommend: 0,\n    totalHoldRecommend: 0,\n    totalSellRecommend: 0,\n    currency: \"\",\n    consensus: 0,\n    prognosisDate: undefined,\n  };\n}\n\nexport const GetConsensusForecastsResponse_ConsensusForecastsItem: MessageFns<\n  GetConsensusForecastsResponse_ConsensusForecastsItem\n> = {\n  encode(\n    message: GetConsensusForecastsResponse_ConsensusForecastsItem,\n    writer: BinaryWriter = new BinaryWriter(),\n  ): BinaryWriter {\n    if (message.uid !== \"\") {\n      writer.uint32(10).string(message.uid);\n    }\n    if (message.assetUid !== \"\") {\n      writer.uint32(18).string(message.assetUid);\n    }\n    if (message.createdAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.createdAt), writer.uint32(26).fork()).join();\n    }\n    if (message.bestTargetPrice !== undefined) {\n      Quotation.encode(message.bestTargetPrice, writer.uint32(34).fork()).join();\n    }\n    if (message.bestTargetLow !== undefined) {\n      Quotation.encode(message.bestTargetLow, writer.uint32(42).fork()).join();\n    }\n    if (message.bestTargetHigh !== undefined) {\n      Quotation.encode(message.bestTargetHigh, writer.uint32(50).fork()).join();\n    }\n    if (message.totalBuyRecommend !== 0) {\n      writer.uint32(56).int32(message.totalBuyRecommend);\n    }\n    if (message.totalHoldRecommend !== 0) {\n      writer.uint32(64).int32(message.totalHoldRecommend);\n    }\n    if (message.totalSellRecommend !== 0) {\n      writer.uint32(72).int32(message.totalSellRecommend);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(82).string(message.currency);\n    }\n    if (message.consensus !== 0) {\n      writer.uint32(88).int32(message.consensus);\n    }\n    if (message.prognosisDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.prognosisDate), writer.uint32(98).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetConsensusForecastsResponse_ConsensusForecastsItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetConsensusForecastsResponse_ConsensusForecastsItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.assetUid = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.createdAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.bestTargetPrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.bestTargetLow = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.bestTargetHigh = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.totalBuyRecommend = reader.int32();\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.totalHoldRecommend = reader.int32();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.totalSellRecommend = reader.int32();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.consensus = reader.int32() as any;\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.prognosisDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetConsensusForecastsResponse_ConsensusForecastsItem {\n    return {\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      assetUid: isSet(object.assetUid) ? globalThis.String(object.assetUid) : \"\",\n      createdAt: isSet(object.createdAt) ? fromJsonTimestamp(object.createdAt) : undefined,\n      bestTargetPrice: isSet(object.bestTargetPrice) ? Quotation.fromJSON(object.bestTargetPrice) : undefined,\n      bestTargetLow: isSet(object.bestTargetLow) ? Quotation.fromJSON(object.bestTargetLow) : undefined,\n      bestTargetHigh: isSet(object.bestTargetHigh) ? Quotation.fromJSON(object.bestTargetHigh) : undefined,\n      totalBuyRecommend: isSet(object.totalBuyRecommend) ? globalThis.Number(object.totalBuyRecommend) : 0,\n      totalHoldRecommend: isSet(object.totalHoldRecommend) ? globalThis.Number(object.totalHoldRecommend) : 0,\n      totalSellRecommend: isSet(object.totalSellRecommend) ? globalThis.Number(object.totalSellRecommend) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      consensus: isSet(object.consensus) ? recommendationFromJSON(object.consensus) : 0,\n      prognosisDate: isSet(object.prognosisDate) ? fromJsonTimestamp(object.prognosisDate) : undefined,\n    };\n  },\n\n  toJSON(message: GetConsensusForecastsResponse_ConsensusForecastsItem): unknown {\n    const obj: any = {};\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.assetUid !== \"\") {\n      obj.assetUid = message.assetUid;\n    }\n    if (message.createdAt !== undefined) {\n      obj.createdAt = message.createdAt.toISOString();\n    }\n    if (message.bestTargetPrice !== undefined) {\n      obj.bestTargetPrice = Quotation.toJSON(message.bestTargetPrice);\n    }\n    if (message.bestTargetLow !== undefined) {\n      obj.bestTargetLow = Quotation.toJSON(message.bestTargetLow);\n    }\n    if (message.bestTargetHigh !== undefined) {\n      obj.bestTargetHigh = Quotation.toJSON(message.bestTargetHigh);\n    }\n    if (message.totalBuyRecommend !== 0) {\n      obj.totalBuyRecommend = Math.round(message.totalBuyRecommend);\n    }\n    if (message.totalHoldRecommend !== 0) {\n      obj.totalHoldRecommend = Math.round(message.totalHoldRecommend);\n    }\n    if (message.totalSellRecommend !== 0) {\n      obj.totalSellRecommend = Math.round(message.totalSellRecommend);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.consensus !== 0) {\n      obj.consensus = recommendationToJSON(message.consensus);\n    }\n    if (message.prognosisDate !== undefined) {\n      obj.prognosisDate = message.prognosisDate.toISOString();\n    }\n    return obj;\n  },\n\n  create(\n    base?: DeepPartial<GetConsensusForecastsResponse_ConsensusForecastsItem>,\n  ): GetConsensusForecastsResponse_ConsensusForecastsItem {\n    return GetConsensusForecastsResponse_ConsensusForecastsItem.fromPartial(base ?? {});\n  },\n  fromPartial(\n    object: DeepPartial<GetConsensusForecastsResponse_ConsensusForecastsItem>,\n  ): GetConsensusForecastsResponse_ConsensusForecastsItem {\n    const message = createBaseGetConsensusForecastsResponse_ConsensusForecastsItem();\n    message.uid = object.uid ?? \"\";\n    message.assetUid = object.assetUid ?? \"\";\n    message.createdAt = object.createdAt ?? undefined;\n    message.bestTargetPrice = (object.bestTargetPrice !== undefined && object.bestTargetPrice !== null)\n      ? Quotation.fromPartial(object.bestTargetPrice)\n      : undefined;\n    message.bestTargetLow = (object.bestTargetLow !== undefined && object.bestTargetLow !== null)\n      ? Quotation.fromPartial(object.bestTargetLow)\n      : undefined;\n    message.bestTargetHigh = (object.bestTargetHigh !== undefined && object.bestTargetHigh !== null)\n      ? Quotation.fromPartial(object.bestTargetHigh)\n      : undefined;\n    message.totalBuyRecommend = object.totalBuyRecommend ?? 0;\n    message.totalHoldRecommend = object.totalHoldRecommend ?? 0;\n    message.totalSellRecommend = object.totalSellRecommend ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.consensus = object.consensus ?? 0;\n    message.prognosisDate = object.prognosisDate ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetForecastRequest(): GetForecastRequest {\n  return { instrumentId: \"\" };\n}\n\nexport const GetForecastRequest: MessageFns<GetForecastRequest> = {\n  encode(message: GetForecastRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrumentId !== \"\") {\n      writer.uint32(10).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetForecastRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetForecastRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetForecastRequest {\n    return { instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\" };\n  },\n\n  toJSON(message: GetForecastRequest): unknown {\n    const obj: any = {};\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetForecastRequest>): GetForecastRequest {\n    return GetForecastRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetForecastRequest>): GetForecastRequest {\n    const message = createBaseGetForecastRequest();\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetForecastResponse(): GetForecastResponse {\n  return { targets: [], consensus: undefined };\n}\n\nexport const GetForecastResponse: MessageFns<GetForecastResponse> = {\n  encode(message: GetForecastResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.targets) {\n      GetForecastResponse_TargetItem.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.consensus !== undefined) {\n      GetForecastResponse_ConsensusItem.encode(message.consensus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetForecastResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetForecastResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.targets.push(GetForecastResponse_TargetItem.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.consensus = GetForecastResponse_ConsensusItem.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetForecastResponse {\n    return {\n      targets: globalThis.Array.isArray(object?.targets)\n        ? object.targets.map((e: any) => GetForecastResponse_TargetItem.fromJSON(e))\n        : [],\n      consensus: isSet(object.consensus) ? GetForecastResponse_ConsensusItem.fromJSON(object.consensus) : undefined,\n    };\n  },\n\n  toJSON(message: GetForecastResponse): unknown {\n    const obj: any = {};\n    if (message.targets?.length) {\n      obj.targets = message.targets.map((e) => GetForecastResponse_TargetItem.toJSON(e));\n    }\n    if (message.consensus !== undefined) {\n      obj.consensus = GetForecastResponse_ConsensusItem.toJSON(message.consensus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetForecastResponse>): GetForecastResponse {\n    return GetForecastResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetForecastResponse>): GetForecastResponse {\n    const message = createBaseGetForecastResponse();\n    message.targets = object.targets?.map((e) => GetForecastResponse_TargetItem.fromPartial(e)) || [];\n    message.consensus = (object.consensus !== undefined && object.consensus !== null)\n      ? GetForecastResponse_ConsensusItem.fromPartial(object.consensus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetForecastResponse_TargetItem(): GetForecastResponse_TargetItem {\n  return {\n    uid: \"\",\n    ticker: \"\",\n    company: \"\",\n    recommendation: 0,\n    recommendationDate: undefined,\n    currency: \"\",\n    currentPrice: undefined,\n    targetPrice: undefined,\n    priceChange: undefined,\n    priceChangeRel: undefined,\n    showName: \"\",\n  };\n}\n\nexport const GetForecastResponse_TargetItem: MessageFns<GetForecastResponse_TargetItem> = {\n  encode(message: GetForecastResponse_TargetItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.uid !== \"\") {\n      writer.uint32(10).string(message.uid);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.company !== \"\") {\n      writer.uint32(26).string(message.company);\n    }\n    if (message.recommendation !== 0) {\n      writer.uint32(32).int32(message.recommendation);\n    }\n    if (message.recommendationDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.recommendationDate), writer.uint32(42).fork()).join();\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(50).string(message.currency);\n    }\n    if (message.currentPrice !== undefined) {\n      Quotation.encode(message.currentPrice, writer.uint32(58).fork()).join();\n    }\n    if (message.targetPrice !== undefined) {\n      Quotation.encode(message.targetPrice, writer.uint32(66).fork()).join();\n    }\n    if (message.priceChange !== undefined) {\n      Quotation.encode(message.priceChange, writer.uint32(74).fork()).join();\n    }\n    if (message.priceChangeRel !== undefined) {\n      Quotation.encode(message.priceChangeRel, writer.uint32(82).fork()).join();\n    }\n    if (message.showName !== \"\") {\n      writer.uint32(90).string(message.showName);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetForecastResponse_TargetItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetForecastResponse_TargetItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.company = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.recommendation = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.recommendationDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.currentPrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.targetPrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.priceChange = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.priceChangeRel = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.showName = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetForecastResponse_TargetItem {\n    return {\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      company: isSet(object.company) ? globalThis.String(object.company) : \"\",\n      recommendation: isSet(object.recommendation) ? recommendationFromJSON(object.recommendation) : 0,\n      recommendationDate: isSet(object.recommendationDate) ? fromJsonTimestamp(object.recommendationDate) : undefined,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      currentPrice: isSet(object.currentPrice) ? Quotation.fromJSON(object.currentPrice) : undefined,\n      targetPrice: isSet(object.targetPrice) ? Quotation.fromJSON(object.targetPrice) : undefined,\n      priceChange: isSet(object.priceChange) ? Quotation.fromJSON(object.priceChange) : undefined,\n      priceChangeRel: isSet(object.priceChangeRel) ? Quotation.fromJSON(object.priceChangeRel) : undefined,\n      showName: isSet(object.showName) ? globalThis.String(object.showName) : \"\",\n    };\n  },\n\n  toJSON(message: GetForecastResponse_TargetItem): unknown {\n    const obj: any = {};\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.company !== \"\") {\n      obj.company = message.company;\n    }\n    if (message.recommendation !== 0) {\n      obj.recommendation = recommendationToJSON(message.recommendation);\n    }\n    if (message.recommendationDate !== undefined) {\n      obj.recommendationDate = message.recommendationDate.toISOString();\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.currentPrice !== undefined) {\n      obj.currentPrice = Quotation.toJSON(message.currentPrice);\n    }\n    if (message.targetPrice !== undefined) {\n      obj.targetPrice = Quotation.toJSON(message.targetPrice);\n    }\n    if (message.priceChange !== undefined) {\n      obj.priceChange = Quotation.toJSON(message.priceChange);\n    }\n    if (message.priceChangeRel !== undefined) {\n      obj.priceChangeRel = Quotation.toJSON(message.priceChangeRel);\n    }\n    if (message.showName !== \"\") {\n      obj.showName = message.showName;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetForecastResponse_TargetItem>): GetForecastResponse_TargetItem {\n    return GetForecastResponse_TargetItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetForecastResponse_TargetItem>): GetForecastResponse_TargetItem {\n    const message = createBaseGetForecastResponse_TargetItem();\n    message.uid = object.uid ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.company = object.company ?? \"\";\n    message.recommendation = object.recommendation ?? 0;\n    message.recommendationDate = object.recommendationDate ?? undefined;\n    message.currency = object.currency ?? \"\";\n    message.currentPrice = (object.currentPrice !== undefined && object.currentPrice !== null)\n      ? Quotation.fromPartial(object.currentPrice)\n      : undefined;\n    message.targetPrice = (object.targetPrice !== undefined && object.targetPrice !== null)\n      ? Quotation.fromPartial(object.targetPrice)\n      : undefined;\n    message.priceChange = (object.priceChange !== undefined && object.priceChange !== null)\n      ? Quotation.fromPartial(object.priceChange)\n      : undefined;\n    message.priceChangeRel = (object.priceChangeRel !== undefined && object.priceChangeRel !== null)\n      ? Quotation.fromPartial(object.priceChangeRel)\n      : undefined;\n    message.showName = object.showName ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetForecastResponse_ConsensusItem(): GetForecastResponse_ConsensusItem {\n  return {\n    uid: \"\",\n    ticker: \"\",\n    recommendation: 0,\n    currency: \"\",\n    currentPrice: undefined,\n    consensus: undefined,\n    minTarget: undefined,\n    maxTarget: undefined,\n    priceChange: undefined,\n    priceChangeRel: undefined,\n  };\n}\n\nexport const GetForecastResponse_ConsensusItem: MessageFns<GetForecastResponse_ConsensusItem> = {\n  encode(message: GetForecastResponse_ConsensusItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.uid !== \"\") {\n      writer.uint32(10).string(message.uid);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(18).string(message.ticker);\n    }\n    if (message.recommendation !== 0) {\n      writer.uint32(24).int32(message.recommendation);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(34).string(message.currency);\n    }\n    if (message.currentPrice !== undefined) {\n      Quotation.encode(message.currentPrice, writer.uint32(42).fork()).join();\n    }\n    if (message.consensus !== undefined) {\n      Quotation.encode(message.consensus, writer.uint32(50).fork()).join();\n    }\n    if (message.minTarget !== undefined) {\n      Quotation.encode(message.minTarget, writer.uint32(58).fork()).join();\n    }\n    if (message.maxTarget !== undefined) {\n      Quotation.encode(message.maxTarget, writer.uint32(66).fork()).join();\n    }\n    if (message.priceChange !== undefined) {\n      Quotation.encode(message.priceChange, writer.uint32(74).fork()).join();\n    }\n    if (message.priceChangeRel !== undefined) {\n      Quotation.encode(message.priceChangeRel, writer.uint32(82).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetForecastResponse_ConsensusItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetForecastResponse_ConsensusItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.uid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.recommendation = reader.int32() as any;\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.currentPrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.consensus = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.minTarget = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.maxTarget = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.priceChange = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.priceChangeRel = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetForecastResponse_ConsensusItem {\n    return {\n      uid: isSet(object.uid) ? globalThis.String(object.uid) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      recommendation: isSet(object.recommendation) ? recommendationFromJSON(object.recommendation) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      currentPrice: isSet(object.currentPrice) ? Quotation.fromJSON(object.currentPrice) : undefined,\n      consensus: isSet(object.consensus) ? Quotation.fromJSON(object.consensus) : undefined,\n      minTarget: isSet(object.minTarget) ? Quotation.fromJSON(object.minTarget) : undefined,\n      maxTarget: isSet(object.maxTarget) ? Quotation.fromJSON(object.maxTarget) : undefined,\n      priceChange: isSet(object.priceChange) ? Quotation.fromJSON(object.priceChange) : undefined,\n      priceChangeRel: isSet(object.priceChangeRel) ? Quotation.fromJSON(object.priceChangeRel) : undefined,\n    };\n  },\n\n  toJSON(message: GetForecastResponse_ConsensusItem): unknown {\n    const obj: any = {};\n    if (message.uid !== \"\") {\n      obj.uid = message.uid;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.recommendation !== 0) {\n      obj.recommendation = recommendationToJSON(message.recommendation);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.currentPrice !== undefined) {\n      obj.currentPrice = Quotation.toJSON(message.currentPrice);\n    }\n    if (message.consensus !== undefined) {\n      obj.consensus = Quotation.toJSON(message.consensus);\n    }\n    if (message.minTarget !== undefined) {\n      obj.minTarget = Quotation.toJSON(message.minTarget);\n    }\n    if (message.maxTarget !== undefined) {\n      obj.maxTarget = Quotation.toJSON(message.maxTarget);\n    }\n    if (message.priceChange !== undefined) {\n      obj.priceChange = Quotation.toJSON(message.priceChange);\n    }\n    if (message.priceChangeRel !== undefined) {\n      obj.priceChangeRel = Quotation.toJSON(message.priceChangeRel);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetForecastResponse_ConsensusItem>): GetForecastResponse_ConsensusItem {\n    return GetForecastResponse_ConsensusItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetForecastResponse_ConsensusItem>): GetForecastResponse_ConsensusItem {\n    const message = createBaseGetForecastResponse_ConsensusItem();\n    message.uid = object.uid ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.recommendation = object.recommendation ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.currentPrice = (object.currentPrice !== undefined && object.currentPrice !== null)\n      ? Quotation.fromPartial(object.currentPrice)\n      : undefined;\n    message.consensus = (object.consensus !== undefined && object.consensus !== null)\n      ? Quotation.fromPartial(object.consensus)\n      : undefined;\n    message.minTarget = (object.minTarget !== undefined && object.minTarget !== null)\n      ? Quotation.fromPartial(object.minTarget)\n      : undefined;\n    message.maxTarget = (object.maxTarget !== undefined && object.maxTarget !== null)\n      ? Quotation.fromPartial(object.maxTarget)\n      : undefined;\n    message.priceChange = (object.priceChange !== undefined && object.priceChange !== null)\n      ? Quotation.fromPartial(object.priceChange)\n      : undefined;\n    message.priceChangeRel = (object.priceChangeRel !== undefined && object.priceChangeRel !== null)\n      ? Quotation.fromPartial(object.priceChangeRel)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTradingInterval(): TradingInterval {\n  return { type: \"\", interval: undefined };\n}\n\nexport const TradingInterval: MessageFns<TradingInterval> = {\n  encode(message: TradingInterval, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.type !== \"\") {\n      writer.uint32(10).string(message.type);\n    }\n    if (message.interval !== undefined) {\n      TradingInterval_TimeInterval.encode(message.interval, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradingInterval {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradingInterval();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.interval = TradingInterval_TimeInterval.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradingInterval {\n    return {\n      type: isSet(object.type) ? globalThis.String(object.type) : \"\",\n      interval: isSet(object.interval) ? TradingInterval_TimeInterval.fromJSON(object.interval) : undefined,\n    };\n  },\n\n  toJSON(message: TradingInterval): unknown {\n    const obj: any = {};\n    if (message.type !== \"\") {\n      obj.type = message.type;\n    }\n    if (message.interval !== undefined) {\n      obj.interval = TradingInterval_TimeInterval.toJSON(message.interval);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradingInterval>): TradingInterval {\n    return TradingInterval.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradingInterval>): TradingInterval {\n    const message = createBaseTradingInterval();\n    message.type = object.type ?? \"\";\n    message.interval = (object.interval !== undefined && object.interval !== null)\n      ? TradingInterval_TimeInterval.fromPartial(object.interval)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTradingInterval_TimeInterval(): TradingInterval_TimeInterval {\n  return { startTs: undefined, endTs: undefined };\n}\n\nexport const TradingInterval_TimeInterval: MessageFns<TradingInterval_TimeInterval> = {\n  encode(message: TradingInterval_TimeInterval, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.startTs !== undefined) {\n      Timestamp.encode(toTimestamp(message.startTs), writer.uint32(10).fork()).join();\n    }\n    if (message.endTs !== undefined) {\n      Timestamp.encode(toTimestamp(message.endTs), writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradingInterval_TimeInterval {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradingInterval_TimeInterval();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.startTs = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.endTs = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradingInterval_TimeInterval {\n    return {\n      startTs: isSet(object.startTs) ? fromJsonTimestamp(object.startTs) : undefined,\n      endTs: isSet(object.endTs) ? fromJsonTimestamp(object.endTs) : undefined,\n    };\n  },\n\n  toJSON(message: TradingInterval_TimeInterval): unknown {\n    const obj: any = {};\n    if (message.startTs !== undefined) {\n      obj.startTs = message.startTs.toISOString();\n    }\n    if (message.endTs !== undefined) {\n      obj.endTs = message.endTs.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradingInterval_TimeInterval>): TradingInterval_TimeInterval {\n    return TradingInterval_TimeInterval.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradingInterval_TimeInterval>): TradingInterval_TimeInterval {\n    const message = createBaseTradingInterval_TimeInterval();\n    message.startTs = object.startTs ?? undefined;\n    message.endTs = object.endTs ?? undefined;\n    return message;\n  },\n};\n\n/**\n * Методы сервиса предназначены для получения:</br>1. Информации об инструментах.</br>2.\n * Расписания торговых сессий.</br>3. Календаря выплат купонов по облигациям.</br>4.\n * Размера гарантийного обеспечения по фьючерсам.</br>5. Дивидендов по ценной бумаге.\n */\nexport type InstrumentsServiceDefinition = typeof InstrumentsServiceDefinition;\nexport const InstrumentsServiceDefinition = {\n  name: \"InstrumentsService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.InstrumentsService\",\n  methods: {\n    /** Получить расписания торгов торговых площадок. */\n    tradingSchedules: {\n      name: \"TradingSchedules\",\n      requestType: TradingSchedulesRequest,\n      requestStream: false,\n      responseType: TradingSchedulesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить облигации по её идентификатору. */\n    bondBy: {\n      name: \"BondBy\",\n      requestType: InstrumentRequest,\n      requestStream: false,\n      responseType: BondResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список облигаций. */\n    bonds: {\n      name: \"Bonds\",\n      requestType: InstrumentsRequest,\n      requestStream: false,\n      responseType: BondsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить график выплат купонов по облигации. */\n    getBondCoupons: {\n      name: \"GetBondCoupons\",\n      requestType: GetBondCouponsRequest,\n      requestStream: false,\n      responseType: GetBondCouponsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить события по облигации */\n    getBondEvents: {\n      name: \"GetBondEvents\",\n      requestType: GetBondEventsRequest,\n      requestStream: false,\n      responseType: GetBondEventsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить валюту по её идентификатору. */\n    currencyBy: {\n      name: \"CurrencyBy\",\n      requestType: InstrumentRequest,\n      requestStream: false,\n      responseType: CurrencyResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список валют. */\n    currencies: {\n      name: \"Currencies\",\n      requestType: InstrumentsRequest,\n      requestStream: false,\n      responseType: CurrenciesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить инвестиционный фонд по его идентификатору. */\n    etfBy: {\n      name: \"EtfBy\",\n      requestType: InstrumentRequest,\n      requestStream: false,\n      responseType: EtfResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список инвестиционных фондов. */\n    etfs: {\n      name: \"Etfs\",\n      requestType: InstrumentsRequest,\n      requestStream: false,\n      responseType: EtfsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить фьючерс по его идентификатору. */\n    futureBy: {\n      name: \"FutureBy\",\n      requestType: InstrumentRequest,\n      requestStream: false,\n      responseType: FutureResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список фьючерсов. */\n    futures: {\n      name: \"Futures\",\n      requestType: InstrumentsRequest,\n      requestStream: false,\n      responseType: FuturesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить опцион по его идентификатору. */\n    optionBy: {\n      name: \"OptionBy\",\n      requestType: InstrumentRequest,\n      requestStream: false,\n      responseType: OptionResponse,\n      responseStream: false,\n      options: {},\n    },\n    /**\n     * Deprecated Получить списка опционов.\n     *\n     * @deprecated\n     */\n    options: {\n      name: \"Options\",\n      requestType: InstrumentsRequest,\n      requestStream: false,\n      responseType: OptionsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список опционов. */\n    optionsBy: {\n      name: \"OptionsBy\",\n      requestType: FilterOptionsRequest,\n      requestStream: false,\n      responseType: OptionsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить акцию по её идентификатору. */\n    shareBy: {\n      name: \"ShareBy\",\n      requestType: InstrumentRequest,\n      requestStream: false,\n      responseType: ShareResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список акций. */\n    shares: {\n      name: \"Shares\",\n      requestType: InstrumentsRequest,\n      requestStream: false,\n      responseType: SharesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить индикативные инструменты — индексы, товары и другие. */\n    indicatives: {\n      name: \"Indicatives\",\n      requestType: IndicativesRequest,\n      requestStream: false,\n      responseType: IndicativesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить накопленный купонный доход по облигации. */\n    getAccruedInterests: {\n      name: \"GetAccruedInterests\",\n      requestType: GetAccruedInterestsRequest,\n      requestStream: false,\n      responseType: GetAccruedInterestsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить размера гарантийного обеспечения по фьючерсам. */\n    getFuturesMargin: {\n      name: \"GetFuturesMargin\",\n      requestType: GetFuturesMarginRequest,\n      requestStream: false,\n      responseType: GetFuturesMarginResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить основную информацию об инструменте. */\n    getInstrumentBy: {\n      name: \"GetInstrumentBy\",\n      requestType: InstrumentRequest,\n      requestStream: false,\n      responseType: InstrumentResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить события выплаты дивидендов по инструменту. */\n    getDividends: {\n      name: \"GetDividends\",\n      requestType: GetDividendsRequest,\n      requestStream: false,\n      responseType: GetDividendsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить актив по его идентификатору. */\n    getAssetBy: {\n      name: \"GetAssetBy\",\n      requestType: AssetRequest,\n      requestStream: false,\n      responseType: AssetResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список активов. Метод работает для всех инструментов, кроме срочных — фьючерсов и опционов. */\n    getAssets: {\n      name: \"GetAssets\",\n      requestType: AssetsRequest,\n      requestStream: false,\n      responseType: AssetsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список избранных инструментов. */\n    getFavorites: {\n      name: \"GetFavorites\",\n      requestType: GetFavoritesRequest,\n      requestStream: false,\n      responseType: GetFavoritesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Отредактировать список избранных инструментов. */\n    editFavorites: {\n      name: \"EditFavorites\",\n      requestType: EditFavoritesRequest,\n      requestStream: false,\n      responseType: EditFavoritesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список стран. */\n    getCountries: {\n      name: \"GetCountries\",\n      requestType: GetCountriesRequest,\n      requestStream: false,\n      responseType: GetCountriesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Найти инструмент. */\n    findInstrument: {\n      name: \"FindInstrument\",\n      requestType: FindInstrumentRequest,\n      requestStream: false,\n      responseType: FindInstrumentResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список брендов. */\n    getBrands: {\n      name: \"GetBrands\",\n      requestType: GetBrandsRequest,\n      requestStream: false,\n      responseType: GetBrandsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить бренд по его идентификатору. */\n    getBrandBy: {\n      name: \"GetBrandBy\",\n      requestType: GetBrandRequest,\n      requestStream: false,\n      responseType: Brand,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить фундаментальные показатели по активу. */\n    getAssetFundamentals: {\n      name: \"GetAssetFundamentals\",\n      requestType: GetAssetFundamentalsRequest,\n      requestStream: false,\n      responseType: GetAssetFundamentalsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить расписания выхода отчётностей эмитентов. */\n    getAssetReports: {\n      name: \"GetAssetReports\",\n      requestType: GetAssetReportsRequest,\n      requestStream: false,\n      responseType: GetAssetReportsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить мнения аналитиков по инструменту. */\n    getConsensusForecasts: {\n      name: \"GetConsensusForecasts\",\n      requestType: GetConsensusForecastsRequest,\n      requestStream: false,\n      responseType: GetConsensusForecastsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить прогнозов инвестдомов по инструменту. */\n    getForecastBy: {\n      name: \"GetForecastBy\",\n      requestType: GetForecastRequest,\n      requestStream: false,\n      responseType: GetForecastResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface InstrumentsServiceImplementation<CallContextExt = {}> {\n  /** Получить расписания торгов торговых площадок. */\n  tradingSchedules(\n    request: TradingSchedulesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<TradingSchedulesResponse>>;\n  /** Получить облигации по её идентификатору. */\n  bondBy(request: InstrumentRequest, context: CallContext & CallContextExt): Promise<DeepPartial<BondResponse>>;\n  /** Получить список облигаций. */\n  bonds(request: InstrumentsRequest, context: CallContext & CallContextExt): Promise<DeepPartial<BondsResponse>>;\n  /** Получить график выплат купонов по облигации. */\n  getBondCoupons(\n    request: GetBondCouponsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetBondCouponsResponse>>;\n  /** Получить события по облигации */\n  getBondEvents(\n    request: GetBondEventsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetBondEventsResponse>>;\n  /** Получить валюту по её идентификатору. */\n  currencyBy(request: InstrumentRequest, context: CallContext & CallContextExt): Promise<DeepPartial<CurrencyResponse>>;\n  /** Получить список валют. */\n  currencies(\n    request: InstrumentsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<CurrenciesResponse>>;\n  /** Получить инвестиционный фонд по его идентификатору. */\n  etfBy(request: InstrumentRequest, context: CallContext & CallContextExt): Promise<DeepPartial<EtfResponse>>;\n  /** Получить список инвестиционных фондов. */\n  etfs(request: InstrumentsRequest, context: CallContext & CallContextExt): Promise<DeepPartial<EtfsResponse>>;\n  /** Получить фьючерс по его идентификатору. */\n  futureBy(request: InstrumentRequest, context: CallContext & CallContextExt): Promise<DeepPartial<FutureResponse>>;\n  /** Получить список фьючерсов. */\n  futures(request: InstrumentsRequest, context: CallContext & CallContextExt): Promise<DeepPartial<FuturesResponse>>;\n  /** Получить опцион по его идентификатору. */\n  optionBy(request: InstrumentRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OptionResponse>>;\n  /**\n   * Deprecated Получить списка опционов.\n   *\n   * @deprecated\n   */\n  options(request: InstrumentsRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OptionsResponse>>;\n  /** Получить список опционов. */\n  optionsBy(\n    request: FilterOptionsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OptionsResponse>>;\n  /** Получить акцию по её идентификатору. */\n  shareBy(request: InstrumentRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ShareResponse>>;\n  /** Получить список акций. */\n  shares(request: InstrumentsRequest, context: CallContext & CallContextExt): Promise<DeepPartial<SharesResponse>>;\n  /** Получить индикативные инструменты — индексы, товары и другие. */\n  indicatives(\n    request: IndicativesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<IndicativesResponse>>;\n  /** Получить накопленный купонный доход по облигации. */\n  getAccruedInterests(\n    request: GetAccruedInterestsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetAccruedInterestsResponse>>;\n  /** Получить размера гарантийного обеспечения по фьючерсам. */\n  getFuturesMargin(\n    request: GetFuturesMarginRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetFuturesMarginResponse>>;\n  /** Получить основную информацию об инструменте. */\n  getInstrumentBy(\n    request: InstrumentRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<InstrumentResponse>>;\n  /** Получить события выплаты дивидендов по инструменту. */\n  getDividends(\n    request: GetDividendsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetDividendsResponse>>;\n  /** Получить актив по его идентификатору. */\n  getAssetBy(request: AssetRequest, context: CallContext & CallContextExt): Promise<DeepPartial<AssetResponse>>;\n  /** Получить список активов. Метод работает для всех инструментов, кроме срочных — фьючерсов и опционов. */\n  getAssets(request: AssetsRequest, context: CallContext & CallContextExt): Promise<DeepPartial<AssetsResponse>>;\n  /** Получить список избранных инструментов. */\n  getFavorites(\n    request: GetFavoritesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetFavoritesResponse>>;\n  /** Отредактировать список избранных инструментов. */\n  editFavorites(\n    request: EditFavoritesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<EditFavoritesResponse>>;\n  /** Получить список стран. */\n  getCountries(\n    request: GetCountriesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetCountriesResponse>>;\n  /** Найти инструмент. */\n  findInstrument(\n    request: FindInstrumentRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FindInstrumentResponse>>;\n  /** Получить список брендов. */\n  getBrands(request: GetBrandsRequest, context: CallContext & CallContextExt): Promise<DeepPartial<GetBrandsResponse>>;\n  /** Получить бренд по его идентификатору. */\n  getBrandBy(request: GetBrandRequest, context: CallContext & CallContextExt): Promise<DeepPartial<Brand>>;\n  /** Получить фундаментальные показатели по активу. */\n  getAssetFundamentals(\n    request: GetAssetFundamentalsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetAssetFundamentalsResponse>>;\n  /** Получить расписания выхода отчётностей эмитентов. */\n  getAssetReports(\n    request: GetAssetReportsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetAssetReportsResponse>>;\n  /** Получить мнения аналитиков по инструменту. */\n  getConsensusForecasts(\n    request: GetConsensusForecastsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetConsensusForecastsResponse>>;\n  /** Получить прогнозов инвестдомов по инструменту. */\n  getForecastBy(\n    request: GetForecastRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetForecastResponse>>;\n}\n\nexport interface InstrumentsServiceClient<CallOptionsExt = {}> {\n  /** Получить расписания торгов торговых площадок. */\n  tradingSchedules(\n    request: DeepPartial<TradingSchedulesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<TradingSchedulesResponse>;\n  /** Получить облигации по её идентификатору. */\n  bondBy(request: DeepPartial<InstrumentRequest>, options?: CallOptions & CallOptionsExt): Promise<BondResponse>;\n  /** Получить список облигаций. */\n  bonds(request: DeepPartial<InstrumentsRequest>, options?: CallOptions & CallOptionsExt): Promise<BondsResponse>;\n  /** Получить график выплат купонов по облигации. */\n  getBondCoupons(\n    request: DeepPartial<GetBondCouponsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetBondCouponsResponse>;\n  /** Получить события по облигации */\n  getBondEvents(\n    request: DeepPartial<GetBondEventsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetBondEventsResponse>;\n  /** Получить валюту по её идентификатору. */\n  currencyBy(\n    request: DeepPartial<InstrumentRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<CurrencyResponse>;\n  /** Получить список валют. */\n  currencies(\n    request: DeepPartial<InstrumentsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<CurrenciesResponse>;\n  /** Получить инвестиционный фонд по его идентификатору. */\n  etfBy(request: DeepPartial<InstrumentRequest>, options?: CallOptions & CallOptionsExt): Promise<EtfResponse>;\n  /** Получить список инвестиционных фондов. */\n  etfs(request: DeepPartial<InstrumentsRequest>, options?: CallOptions & CallOptionsExt): Promise<EtfsResponse>;\n  /** Получить фьючерс по его идентификатору. */\n  futureBy(request: DeepPartial<InstrumentRequest>, options?: CallOptions & CallOptionsExt): Promise<FutureResponse>;\n  /** Получить список фьючерсов. */\n  futures(request: DeepPartial<InstrumentsRequest>, options?: CallOptions & CallOptionsExt): Promise<FuturesResponse>;\n  /** Получить опцион по его идентификатору. */\n  optionBy(request: DeepPartial<InstrumentRequest>, options?: CallOptions & CallOptionsExt): Promise<OptionResponse>;\n  /**\n   * Deprecated Получить списка опционов.\n   *\n   * @deprecated\n   */\n  options(request: DeepPartial<InstrumentsRequest>, options?: CallOptions & CallOptionsExt): Promise<OptionsResponse>;\n  /** Получить список опционов. */\n  optionsBy(\n    request: DeepPartial<FilterOptionsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OptionsResponse>;\n  /** Получить акцию по её идентификатору. */\n  shareBy(request: DeepPartial<InstrumentRequest>, options?: CallOptions & CallOptionsExt): Promise<ShareResponse>;\n  /** Получить список акций. */\n  shares(request: DeepPartial<InstrumentsRequest>, options?: CallOptions & CallOptionsExt): Promise<SharesResponse>;\n  /** Получить индикативные инструменты — индексы, товары и другие. */\n  indicatives(\n    request: DeepPartial<IndicativesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<IndicativesResponse>;\n  /** Получить накопленный купонный доход по облигации. */\n  getAccruedInterests(\n    request: DeepPartial<GetAccruedInterestsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetAccruedInterestsResponse>;\n  /** Получить размера гарантийного обеспечения по фьючерсам. */\n  getFuturesMargin(\n    request: DeepPartial<GetFuturesMarginRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetFuturesMarginResponse>;\n  /** Получить основную информацию об инструменте. */\n  getInstrumentBy(\n    request: DeepPartial<InstrumentRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<InstrumentResponse>;\n  /** Получить события выплаты дивидендов по инструменту. */\n  getDividends(\n    request: DeepPartial<GetDividendsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetDividendsResponse>;\n  /** Получить актив по его идентификатору. */\n  getAssetBy(request: DeepPartial<AssetRequest>, options?: CallOptions & CallOptionsExt): Promise<AssetResponse>;\n  /** Получить список активов. Метод работает для всех инструментов, кроме срочных — фьючерсов и опционов. */\n  getAssets(request: DeepPartial<AssetsRequest>, options?: CallOptions & CallOptionsExt): Promise<AssetsResponse>;\n  /** Получить список избранных инструментов. */\n  getFavorites(\n    request: DeepPartial<GetFavoritesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetFavoritesResponse>;\n  /** Отредактировать список избранных инструментов. */\n  editFavorites(\n    request: DeepPartial<EditFavoritesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<EditFavoritesResponse>;\n  /** Получить список стран. */\n  getCountries(\n    request: DeepPartial<GetCountriesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetCountriesResponse>;\n  /** Найти инструмент. */\n  findInstrument(\n    request: DeepPartial<FindInstrumentRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FindInstrumentResponse>;\n  /** Получить список брендов. */\n  getBrands(request: DeepPartial<GetBrandsRequest>, options?: CallOptions & CallOptionsExt): Promise<GetBrandsResponse>;\n  /** Получить бренд по его идентификатору. */\n  getBrandBy(request: DeepPartial<GetBrandRequest>, options?: CallOptions & CallOptionsExt): Promise<Brand>;\n  /** Получить фундаментальные показатели по активу. */\n  getAssetFundamentals(\n    request: DeepPartial<GetAssetFundamentalsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetAssetFundamentalsResponse>;\n  /** Получить расписания выхода отчётностей эмитентов. */\n  getAssetReports(\n    request: DeepPartial<GetAssetReportsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetAssetReportsResponse>;\n  /** Получить мнения аналитиков по инструменту. */\n  getConsensusForecasts(\n    request: DeepPartial<GetConsensusForecastsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetConsensusForecastsResponse>;\n  /** Получить прогнозов инвестдомов по инструменту. */\n  getForecastBy(\n    request: DeepPartial<GetForecastRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetForecastResponse>;\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\ninterface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: orders.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport {\n  ErrorDetail,\n  MoneyValue,\n  Ping,\n  PriceType,\n  priceTypeFromJSON,\n  priceTypeToJSON,\n  Quotation,\n  ResponseMetadata,\n  ResultSubscriptionStatus,\n  resultSubscriptionStatusFromJSON,\n  resultSubscriptionStatusToJSON,\n} from \"./common\";\nimport { Timestamp } from \"./google/protobuf/timestamp\";\n\n/** Направление операции. */\nexport enum OrderDirection {\n  /** ORDER_DIRECTION_UNSPECIFIED - Значение не указано */\n  ORDER_DIRECTION_UNSPECIFIED = 0,\n  /** ORDER_DIRECTION_BUY - Покупка */\n  ORDER_DIRECTION_BUY = 1,\n  /** ORDER_DIRECTION_SELL - Продажа */\n  ORDER_DIRECTION_SELL = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function orderDirectionFromJSON(object: any): OrderDirection {\n  switch (object) {\n    case 0:\n    case \"ORDER_DIRECTION_UNSPECIFIED\":\n      return OrderDirection.ORDER_DIRECTION_UNSPECIFIED;\n    case 1:\n    case \"ORDER_DIRECTION_BUY\":\n      return OrderDirection.ORDER_DIRECTION_BUY;\n    case 2:\n    case \"ORDER_DIRECTION_SELL\":\n      return OrderDirection.ORDER_DIRECTION_SELL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OrderDirection.UNRECOGNIZED;\n  }\n}\n\nexport function orderDirectionToJSON(object: OrderDirection): string {\n  switch (object) {\n    case OrderDirection.ORDER_DIRECTION_UNSPECIFIED:\n      return \"ORDER_DIRECTION_UNSPECIFIED\";\n    case OrderDirection.ORDER_DIRECTION_BUY:\n      return \"ORDER_DIRECTION_BUY\";\n    case OrderDirection.ORDER_DIRECTION_SELL:\n      return \"ORDER_DIRECTION_SELL\";\n    case OrderDirection.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип заявки. */\nexport enum OrderType {\n  /** ORDER_TYPE_UNSPECIFIED - Значение не указано */\n  ORDER_TYPE_UNSPECIFIED = 0,\n  /** ORDER_TYPE_LIMIT - Лимитная */\n  ORDER_TYPE_LIMIT = 1,\n  /** ORDER_TYPE_MARKET - Рыночная */\n  ORDER_TYPE_MARKET = 2,\n  /** ORDER_TYPE_BESTPRICE - Лучшая цена */\n  ORDER_TYPE_BESTPRICE = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function orderTypeFromJSON(object: any): OrderType {\n  switch (object) {\n    case 0:\n    case \"ORDER_TYPE_UNSPECIFIED\":\n      return OrderType.ORDER_TYPE_UNSPECIFIED;\n    case 1:\n    case \"ORDER_TYPE_LIMIT\":\n      return OrderType.ORDER_TYPE_LIMIT;\n    case 2:\n    case \"ORDER_TYPE_MARKET\":\n      return OrderType.ORDER_TYPE_MARKET;\n    case 3:\n    case \"ORDER_TYPE_BESTPRICE\":\n      return OrderType.ORDER_TYPE_BESTPRICE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OrderType.UNRECOGNIZED;\n  }\n}\n\nexport function orderTypeToJSON(object: OrderType): string {\n  switch (object) {\n    case OrderType.ORDER_TYPE_UNSPECIFIED:\n      return \"ORDER_TYPE_UNSPECIFIED\";\n    case OrderType.ORDER_TYPE_LIMIT:\n      return \"ORDER_TYPE_LIMIT\";\n    case OrderType.ORDER_TYPE_MARKET:\n      return \"ORDER_TYPE_MARKET\";\n    case OrderType.ORDER_TYPE_BESTPRICE:\n      return \"ORDER_TYPE_BESTPRICE\";\n    case OrderType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Текущий статус заявки (поручения) */\nexport enum OrderExecutionReportStatus {\n  EXECUTION_REPORT_STATUS_UNSPECIFIED = 0,\n  /** EXECUTION_REPORT_STATUS_FILL - Исполнена */\n  EXECUTION_REPORT_STATUS_FILL = 1,\n  /** EXECUTION_REPORT_STATUS_REJECTED - Отклонена */\n  EXECUTION_REPORT_STATUS_REJECTED = 2,\n  /** EXECUTION_REPORT_STATUS_CANCELLED - Отменена пользователем */\n  EXECUTION_REPORT_STATUS_CANCELLED = 3,\n  /** EXECUTION_REPORT_STATUS_NEW - Новая */\n  EXECUTION_REPORT_STATUS_NEW = 4,\n  /** EXECUTION_REPORT_STATUS_PARTIALLYFILL - Частично исполнена */\n  EXECUTION_REPORT_STATUS_PARTIALLYFILL = 5,\n  UNRECOGNIZED = -1,\n}\n\nexport function orderExecutionReportStatusFromJSON(object: any): OrderExecutionReportStatus {\n  switch (object) {\n    case 0:\n    case \"EXECUTION_REPORT_STATUS_UNSPECIFIED\":\n      return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_UNSPECIFIED;\n    case 1:\n    case \"EXECUTION_REPORT_STATUS_FILL\":\n      return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_FILL;\n    case 2:\n    case \"EXECUTION_REPORT_STATUS_REJECTED\":\n      return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_REJECTED;\n    case 3:\n    case \"EXECUTION_REPORT_STATUS_CANCELLED\":\n      return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_CANCELLED;\n    case 4:\n    case \"EXECUTION_REPORT_STATUS_NEW\":\n      return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_NEW;\n    case 5:\n    case \"EXECUTION_REPORT_STATUS_PARTIALLYFILL\":\n      return OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_PARTIALLYFILL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OrderExecutionReportStatus.UNRECOGNIZED;\n  }\n}\n\nexport function orderExecutionReportStatusToJSON(object: OrderExecutionReportStatus): string {\n  switch (object) {\n    case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_UNSPECIFIED:\n      return \"EXECUTION_REPORT_STATUS_UNSPECIFIED\";\n    case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_FILL:\n      return \"EXECUTION_REPORT_STATUS_FILL\";\n    case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_REJECTED:\n      return \"EXECUTION_REPORT_STATUS_REJECTED\";\n    case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_CANCELLED:\n      return \"EXECUTION_REPORT_STATUS_CANCELLED\";\n    case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_NEW:\n      return \"EXECUTION_REPORT_STATUS_NEW\";\n    case OrderExecutionReportStatus.EXECUTION_REPORT_STATUS_PARTIALLYFILL:\n      return \"EXECUTION_REPORT_STATUS_PARTIALLYFILL\";\n    case OrderExecutionReportStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Алгоритм исполнения заявки */\nexport enum TimeInForceType {\n  /** TIME_IN_FORCE_UNSPECIFIED - Значение не определено см. TIME_IN_FORCE_DAY */\n  TIME_IN_FORCE_UNSPECIFIED = 0,\n  /** TIME_IN_FORCE_DAY - Заявка действует до конца торгового дня. Значение по умолчанию */\n  TIME_IN_FORCE_DAY = 1,\n  /** TIME_IN_FORCE_FILL_AND_KILL - Если в момент выставления возможно исполнение заявки(в т.ч. частичное), заявка будет исполнена или отменена сразу после выставления */\n  TIME_IN_FORCE_FILL_AND_KILL = 2,\n  /** TIME_IN_FORCE_FILL_OR_KILL - Если в момент выставления возможно полное исполнение заявки, заявка будет исполнена или отменена сразу после выставления, недоступно для срочного рынка и торговли по выходным */\n  TIME_IN_FORCE_FILL_OR_KILL = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function timeInForceTypeFromJSON(object: any): TimeInForceType {\n  switch (object) {\n    case 0:\n    case \"TIME_IN_FORCE_UNSPECIFIED\":\n      return TimeInForceType.TIME_IN_FORCE_UNSPECIFIED;\n    case 1:\n    case \"TIME_IN_FORCE_DAY\":\n      return TimeInForceType.TIME_IN_FORCE_DAY;\n    case 2:\n    case \"TIME_IN_FORCE_FILL_AND_KILL\":\n      return TimeInForceType.TIME_IN_FORCE_FILL_AND_KILL;\n    case 3:\n    case \"TIME_IN_FORCE_FILL_OR_KILL\":\n      return TimeInForceType.TIME_IN_FORCE_FILL_OR_KILL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TimeInForceType.UNRECOGNIZED;\n  }\n}\n\nexport function timeInForceTypeToJSON(object: TimeInForceType): string {\n  switch (object) {\n    case TimeInForceType.TIME_IN_FORCE_UNSPECIFIED:\n      return \"TIME_IN_FORCE_UNSPECIFIED\";\n    case TimeInForceType.TIME_IN_FORCE_DAY:\n      return \"TIME_IN_FORCE_DAY\";\n    case TimeInForceType.TIME_IN_FORCE_FILL_AND_KILL:\n      return \"TIME_IN_FORCE_FILL_AND_KILL\";\n    case TimeInForceType.TIME_IN_FORCE_FILL_OR_KILL:\n      return \"TIME_IN_FORCE_FILL_OR_KILL\";\n    case TimeInForceType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип идентификатора заявки */\nexport enum OrderIdType {\n  /** ORDER_ID_TYPE_UNSPECIFIED - Тип идентификатора не указан. */\n  ORDER_ID_TYPE_UNSPECIFIED = 0,\n  /** ORDER_ID_TYPE_EXCHANGE - Биржевой идентификатор */\n  ORDER_ID_TYPE_EXCHANGE = 1,\n  /** ORDER_ID_TYPE_REQUEST - Ключ идемпотентности, переданный клиентом */\n  ORDER_ID_TYPE_REQUEST = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function orderIdTypeFromJSON(object: any): OrderIdType {\n  switch (object) {\n    case 0:\n    case \"ORDER_ID_TYPE_UNSPECIFIED\":\n      return OrderIdType.ORDER_ID_TYPE_UNSPECIFIED;\n    case 1:\n    case \"ORDER_ID_TYPE_EXCHANGE\":\n      return OrderIdType.ORDER_ID_TYPE_EXCHANGE;\n    case 2:\n    case \"ORDER_ID_TYPE_REQUEST\":\n      return OrderIdType.ORDER_ID_TYPE_REQUEST;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OrderIdType.UNRECOGNIZED;\n  }\n}\n\nexport function orderIdTypeToJSON(object: OrderIdType): string {\n  switch (object) {\n    case OrderIdType.ORDER_ID_TYPE_UNSPECIFIED:\n      return \"ORDER_ID_TYPE_UNSPECIFIED\";\n    case OrderIdType.ORDER_ID_TYPE_EXCHANGE:\n      return \"ORDER_ID_TYPE_EXCHANGE\";\n    case OrderIdType.ORDER_ID_TYPE_REQUEST:\n      return \"ORDER_ID_TYPE_REQUEST\";\n    case OrderIdType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Запрос установки соединения. */\nexport interface TradesStreamRequest {\n  /** Идентификаторы счетов. */\n  accounts: string[];\n  /** Задержка пинг сообщений milliseconds 5000-180000, default 120000 */\n  pingDelayMs?: number | undefined;\n}\n\n/** Информация о торговых поручениях. */\nexport interface TradesStreamResponse {\n  /** Информация об исполнении торгового поручения. */\n  orderTrades?:\n    | OrderTrades\n    | undefined;\n  /** Проверка активности стрима. */\n  ping?:\n    | Ping\n    | undefined;\n  /** Ответ на запрос на подписку. */\n  subscription?: SubscriptionResponse | undefined;\n}\n\n/** Информация об исполнении торгового поручения. */\nexport interface OrderTrades {\n  /** Идентификатор торгового поручения. */\n  orderId: string;\n  /** Дата и время создания сообщения в часовом поясе UTC. */\n  createdAt:\n    | Date\n    | undefined;\n  /** Направление сделки. */\n  direction: OrderDirection;\n  /** Figi-идентификатор инструмента. */\n  figi: string;\n  /** Массив сделок. */\n  trades: OrderTrade[];\n  /** Идентификатор счёта. */\n  accountId: string;\n  /** UID идентификатор инструмента. */\n  instrumentUid: string;\n}\n\n/** Информация о сделке. */\nexport interface OrderTrade {\n  /** Дата и время совершения сделки в часовом поясе UTC. */\n  dateTime:\n    | Date\n    | undefined;\n  /** Цена за 1 инструмент, по которой совершена сделка. */\n  price:\n    | Quotation\n    | undefined;\n  /** Количество штук в сделке. */\n  quantity: number;\n  /** Идентификатор сделки. */\n  tradeId: string;\n}\n\n/** Запрос выставления торгового поручения. */\nexport interface PostOrderRequest {\n  /**\n   * Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.\n   *\n   * @deprecated\n   */\n  figi?:\n    | string\n    | undefined;\n  /** Количество лотов. */\n  quantity: number;\n  /** Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений. */\n  price?:\n    | Quotation\n    | undefined;\n  /** Направление операции. */\n  direction: OrderDirection;\n  /** Номер счёта. */\n  accountId: string;\n  /** Тип заявки. */\n  orderType: OrderType;\n  /** Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов. */\n  orderId: string;\n  /** Идентификатор инструмента, принимает значения Figi или Instrument_uid. */\n  instrumentId: string;\n  /** Алгоритм исполнения поручения, применяется только к лимитной заявке. */\n  timeInForce: TimeInForceType;\n  /** Тип цены. */\n  priceType: PriceType;\n}\n\n/** Информация о выставлении поручения. */\nexport interface PostOrderResponse {\n  /** Биржевой идентификатор заявки. */\n  orderId: string;\n  /** Текущий статус заявки. */\n  executionReportStatus: OrderExecutionReportStatus;\n  /** Запрошено лотов. */\n  lotsRequested: number;\n  /** Исполнено лотов. */\n  lotsExecuted: number;\n  /** Начальная цена заявки. Произведение количества запрошенных лотов на цену. */\n  initialOrderPrice:\n    | MoneyValue\n    | undefined;\n  /** Исполненная средняя цена одного инструмента в заявке. */\n  executedOrderPrice:\n    | MoneyValue\n    | undefined;\n  /** Итоговая стоимость заявки, включающая все комиссии. */\n  totalOrderAmount:\n    | MoneyValue\n    | undefined;\n  /** Начальная комиссия. Комиссия рассчитанная при выставлении заявки. */\n  initialCommission:\n    | MoneyValue\n    | undefined;\n  /** Фактическая комиссия по итогам исполнения заявки. */\n  executedCommission:\n    | MoneyValue\n    | undefined;\n  /** Значение НКД (накопленного купонного дохода) на дату. Подробнее: [НКД при выставлении торговых поручений](https://russianinvestments.github.io/investAPI/head-orders#coupon) */\n  aciValue:\n    | MoneyValue\n    | undefined;\n  /** Figi-идентификатор инструмента. */\n  figi: string;\n  /** Направление сделки. */\n  direction: OrderDirection;\n  /** Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. */\n  initialSecurityPrice:\n    | MoneyValue\n    | undefined;\n  /** Тип заявки. */\n  orderType: OrderType;\n  /** Дополнительные данные об исполнении заявки. */\n  message: string;\n  /** Начальная цена заявки в пунктах (для фьючерсов). */\n  initialOrderPricePt:\n    | Quotation\n    | undefined;\n  /** UID идентификатор инструмента. */\n  instrumentUid: string;\n  /** Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов. */\n  orderRequestId: string;\n  /** Метадата */\n  responseMetadata: ResponseMetadata | undefined;\n}\n\n/** Запрос выставления асинхронного торгового поручения. */\nexport interface PostOrderAsyncRequest {\n  /** Идентификатор инструмента, принимает значения Figi или Instrument_uid. */\n  instrumentId: string;\n  /** Количество лотов. */\n  quantity: number;\n  /** Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений. */\n  price?:\n    | Quotation\n    | undefined;\n  /** Направление операции. */\n  direction: OrderDirection;\n  /** Номер счёта. */\n  accountId: string;\n  /** Тип заявки. */\n  orderType: OrderType;\n  /** Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов. */\n  orderId: string;\n  /** Алгоритм исполнения поручения, применяется только к лимитной заявке. */\n  timeInForce?:\n    | TimeInForceType\n    | undefined;\n  /** Тип цены. */\n  priceType?: PriceType | undefined;\n}\n\n/** Результат выставления асинхронного торгового поручения. */\nexport interface PostOrderAsyncResponse {\n  /** Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов. */\n  orderRequestId: string;\n  /** Текущий статус заявки. */\n  executionReportStatus: OrderExecutionReportStatus;\n  /** Идентификатор торгового поручения. */\n  tradeIntentId?: string | undefined;\n}\n\n/** Запрос отмены торгового поручения. */\nexport interface CancelOrderRequest {\n  /** Номер счёта. */\n  accountId: string;\n  /** Идентификатор заявки. */\n  orderId: string;\n  /** Тип идентификатора заявки. */\n  orderIdType?: OrderIdType | undefined;\n}\n\n/** Результат отмены торгового поручения. */\nexport interface CancelOrderResponse {\n  /** Дата и время отмены заявки в часовом поясе UTC. */\n  time:\n    | Date\n    | undefined;\n  /** Метадата */\n  responseMetadata: ResponseMetadata | undefined;\n}\n\n/** Запрос получения статуса торгового поручения. */\nexport interface GetOrderStateRequest {\n  /** Номер счёта. */\n  accountId: string;\n  /** Идентификатор заявки. */\n  orderId: string;\n  /** Тип цены. */\n  priceType: PriceType;\n  /** Тип идентификатора заявки. */\n  orderIdType?: OrderIdType | undefined;\n}\n\n/** Запрос получения списка активных торговых поручений. */\nexport interface GetOrdersRequest {\n  /** Номер счёта. */\n  accountId: string;\n}\n\n/** Список активных торговых поручений. */\nexport interface GetOrdersResponse {\n  /** Массив активных заявок. */\n  orders: OrderState[];\n}\n\n/** Информация о торговом поручении. */\nexport interface OrderState {\n  /** Биржевой идентификатор заявки. */\n  orderId: string;\n  /** Текущий статус заявки. */\n  executionReportStatus: OrderExecutionReportStatus;\n  /** Запрошено лотов. */\n  lotsRequested: number;\n  /** Исполнено лотов. */\n  lotsExecuted: number;\n  /** Начальная цена заявки. Произведение количества запрошенных лотов на цену. */\n  initialOrderPrice:\n    | MoneyValue\n    | undefined;\n  /** Исполненная цена заявки. Произведение средней цены покупки на количество лотов. */\n  executedOrderPrice:\n    | MoneyValue\n    | undefined;\n  /** Итоговая стоимость заявки, включающая все комиссии. */\n  totalOrderAmount:\n    | MoneyValue\n    | undefined;\n  /** Средняя цена позиции по сделке. */\n  averagePositionPrice:\n    | MoneyValue\n    | undefined;\n  /** Начальная комиссия. Комиссия, рассчитанная на момент подачи заявки. */\n  initialCommission:\n    | MoneyValue\n    | undefined;\n  /** Фактическая комиссия по итогам исполнения заявки. */\n  executedCommission:\n    | MoneyValue\n    | undefined;\n  /** Figi-идентификатор инструмента. */\n  figi: string;\n  /** Направление заявки. */\n  direction: OrderDirection;\n  /** Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. */\n  initialSecurityPrice:\n    | MoneyValue\n    | undefined;\n  /** Стадии выполнения заявки. */\n  stages: OrderStage[];\n  /** Сервисная комиссия. */\n  serviceCommission:\n    | MoneyValue\n    | undefined;\n  /** Валюта заявки. */\n  currency: string;\n  /** Тип заявки. */\n  orderType: OrderType;\n  /** Дата и время выставления заявки в часовом поясе UTC. */\n  orderDate:\n    | Date\n    | undefined;\n  /** UID идентификатор инструмента. */\n  instrumentUid: string;\n  /** Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов. */\n  orderRequestId: string;\n}\n\n/** Сделки в рамках торгового поручения. */\nexport interface OrderStage {\n  /** Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. */\n  price:\n    | MoneyValue\n    | undefined;\n  /** Количество лотов. */\n  quantity: number;\n  /** Идентификатор сделки. */\n  tradeId: string;\n  /** Время исполнения сделки */\n  executionTime: Date | undefined;\n}\n\n/** Запрос изменения выставленной заявки. */\nexport interface ReplaceOrderRequest {\n  /** Номер счета. */\n  accountId: string;\n  /** Идентификатор заявки на бирже. */\n  orderId: string;\n  /** Новый идентификатор запроса выставления поручения для целей идемпотентности. Максимальная длина 36 символов. Перезатирает старый ключ. */\n  idempotencyKey: string;\n  /** Количество лотов. */\n  quantity: number;\n  /** Цена за 1 инструмент. */\n  price?:\n    | Quotation\n    | undefined;\n  /** Тип цены. */\n  priceType?: PriceType | undefined;\n}\n\n/** Запрос на расчет количества доступных для покупки/продажи лотов. Если не указывать цену инструмента, то расчет произведется по текущум ценам в стакане: по лучшему предложению для покупки и по лучшему спросу для продажи. */\nexport interface GetMaxLotsRequest {\n  /** Номер счета */\n  accountId: string;\n  /** Идентификатор инструмента, принимает значения Figi или instrument_uid */\n  instrumentId: string;\n  /** Цена инструмента */\n  price?: Quotation | undefined;\n}\n\n/** Результат количество доступных для покупки/продажи лотов */\nexport interface GetMaxLotsResponse {\n  /** Валюта инструмента */\n  currency: string;\n  /** Лимиты для покупок на собственные деньги */\n  buyLimits:\n    | GetMaxLotsResponse_BuyLimitsView\n    | undefined;\n  /** Лимиты для покупок с учетом маржинального кредитования */\n  buyMarginLimits:\n    | GetMaxLotsResponse_BuyLimitsView\n    | undefined;\n  /** Лимиты для продаж по собственной позиции */\n  sellLimits:\n    | GetMaxLotsResponse_SellLimitsView\n    | undefined;\n  /** Лимиты для продаж с учетом маржинального кредитования */\n  sellMarginLimits: GetMaxLotsResponse_SellLimitsView | undefined;\n}\n\nexport interface GetMaxLotsResponse_BuyLimitsView {\n  /** Количество доступной валюты для покупки */\n  buyMoneyAmount:\n    | Quotation\n    | undefined;\n  /** Максимальное доступное количество лотов для покупки */\n  buyMaxLots: number;\n  /** Максимальное доступное количество лотов для покупки для заявки по рыночной цене на текущий момент */\n  buyMaxMarketLots: number;\n}\n\nexport interface GetMaxLotsResponse_SellLimitsView {\n  /** Максимальное доступное количество лотов для продажи */\n  sellMaxLots: number;\n}\n\n/** Запрос получения предварительной стоимости заявки */\nexport interface GetOrderPriceRequest {\n  /** Номер счета */\n  accountId: string;\n  /** Идентификатор инструмента, принимает значения Figi или instrument_uid */\n  instrumentId: string;\n  /** Цена инструмента */\n  price:\n    | Quotation\n    | undefined;\n  /** Направление заявки */\n  direction: OrderDirection;\n  /** Количество лотов */\n  quantity: number;\n}\n\n/** Предварительная стоимость заявки */\nexport interface GetOrderPriceResponse {\n  /** Итоговая стоимость заявки */\n  totalOrderAmount:\n    | MoneyValue\n    | undefined;\n  /** Стоимость заявки без комиссий, НКД, ГО (для фьючерсов — стоимость контрактов) */\n  initialOrderAmount:\n    | MoneyValue\n    | undefined;\n  /** Запрошено лотов */\n  lotsRequested: number;\n  /** Общая комиссия */\n  executedCommission:\n    | MoneyValue\n    | undefined;\n  /** Общая комиссия в рублях */\n  executedCommissionRub:\n    | MoneyValue\n    | undefined;\n  /** Сервисная комиссия */\n  serviceCommission:\n    | MoneyValue\n    | undefined;\n  /** Комиссия за проведение сделки */\n  dealCommission:\n    | MoneyValue\n    | undefined;\n  /** Дополнительная информация по облигациям */\n  extraBond?:\n    | GetOrderPriceResponse_ExtraBond\n    | undefined;\n  /** Дополнительная информация по фьючерсам */\n  extraFuture?: GetOrderPriceResponse_ExtraFuture | undefined;\n}\n\nexport interface GetOrderPriceResponse_ExtraBond {\n  /** Значение НКД (накопленного купонного дохода) на дату */\n  aciValue:\n    | MoneyValue\n    | undefined;\n  /** Курс конвертации для замещающих облигаций */\n  nominalConversionRate: Quotation | undefined;\n}\n\nexport interface GetOrderPriceResponse_ExtraFuture {\n  /** Гарантийное обеспечение для фьючерса */\n  initialMargin: MoneyValue | undefined;\n}\n\n/** Запрос установки стрим-соединения торговых поручений */\nexport interface OrderStateStreamRequest {\n  /** Идентификаторы счетов. */\n  accounts: string[];\n  /** Задержка пинг сообщений milliseconds 5000-180000, default 120000 */\n  pingDelayMs?: number | undefined;\n}\n\n/** Информация по подпискам */\nexport interface SubscriptionResponse {\n  /** Уникальный идентификатор запроса, подробнее: [tracking_id](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */\n  trackingId: string;\n  /** Статус подписки. */\n  status: ResultSubscriptionStatus;\n  /** Идентификатор открытого соединения */\n  streamId: string;\n  /** Идентификаторы счетов. */\n  accounts: string[];\n  error?: ErrorDetail | undefined;\n}\n\n/** Информация по заявкам */\nexport interface OrderStateStreamResponse {\n  /** Информация об исполнении торгового поручения. */\n  orderState?:\n    | OrderStateStreamResponse_OrderState\n    | undefined;\n  /** Проверка активности стрима. */\n  ping?:\n    | Ping\n    | undefined;\n  /** Ответ на запрос на подписку. */\n  subscription?: SubscriptionResponse | undefined;\n}\n\n/** Маркер */\nexport enum OrderStateStreamResponse_MarkerType {\n  /** MARKER_UNKNOWN - не определено */\n  MARKER_UNKNOWN = 0,\n  /** MARKER_BROKER - сделки брокера */\n  MARKER_BROKER = 1,\n  /** MARKER_CHAT - исполнение поручение, полученного от клиента через каналы связи */\n  MARKER_CHAT = 2,\n  /** MARKER_PAPER - исполнение поручение, полученного от клиента в бумажной форме */\n  MARKER_PAPER = 3,\n  /** MARKER_MARGIN - принудительное закрытие позиций */\n  MARKER_MARGIN = 4,\n  /** MARKER_TKBNM - сделки по управлению ликвидностью */\n  MARKER_TKBNM = 5,\n  /** MARKER_SHORT - сделки РЕПО по привлечению у клиентов бумаг */\n  MARKER_SHORT = 6,\n  /** MARKER_SPECMM - перенос временно непокрытых позиций */\n  MARKER_SPECMM = 7,\n  MARKER_PO = 8,\n  UNRECOGNIZED = -1,\n}\n\nexport function orderStateStreamResponse_MarkerTypeFromJSON(object: any): OrderStateStreamResponse_MarkerType {\n  switch (object) {\n    case 0:\n    case \"MARKER_UNKNOWN\":\n      return OrderStateStreamResponse_MarkerType.MARKER_UNKNOWN;\n    case 1:\n    case \"MARKER_BROKER\":\n      return OrderStateStreamResponse_MarkerType.MARKER_BROKER;\n    case 2:\n    case \"MARKER_CHAT\":\n      return OrderStateStreamResponse_MarkerType.MARKER_CHAT;\n    case 3:\n    case \"MARKER_PAPER\":\n      return OrderStateStreamResponse_MarkerType.MARKER_PAPER;\n    case 4:\n    case \"MARKER_MARGIN\":\n      return OrderStateStreamResponse_MarkerType.MARKER_MARGIN;\n    case 5:\n    case \"MARKER_TKBNM\":\n      return OrderStateStreamResponse_MarkerType.MARKER_TKBNM;\n    case 6:\n    case \"MARKER_SHORT\":\n      return OrderStateStreamResponse_MarkerType.MARKER_SHORT;\n    case 7:\n    case \"MARKER_SPECMM\":\n      return OrderStateStreamResponse_MarkerType.MARKER_SPECMM;\n    case 8:\n    case \"MARKER_PO\":\n      return OrderStateStreamResponse_MarkerType.MARKER_PO;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OrderStateStreamResponse_MarkerType.UNRECOGNIZED;\n  }\n}\n\nexport function orderStateStreamResponse_MarkerTypeToJSON(object: OrderStateStreamResponse_MarkerType): string {\n  switch (object) {\n    case OrderStateStreamResponse_MarkerType.MARKER_UNKNOWN:\n      return \"MARKER_UNKNOWN\";\n    case OrderStateStreamResponse_MarkerType.MARKER_BROKER:\n      return \"MARKER_BROKER\";\n    case OrderStateStreamResponse_MarkerType.MARKER_CHAT:\n      return \"MARKER_CHAT\";\n    case OrderStateStreamResponse_MarkerType.MARKER_PAPER:\n      return \"MARKER_PAPER\";\n    case OrderStateStreamResponse_MarkerType.MARKER_MARGIN:\n      return \"MARKER_MARGIN\";\n    case OrderStateStreamResponse_MarkerType.MARKER_TKBNM:\n      return \"MARKER_TKBNM\";\n    case OrderStateStreamResponse_MarkerType.MARKER_SHORT:\n      return \"MARKER_SHORT\";\n    case OrderStateStreamResponse_MarkerType.MARKER_SPECMM:\n      return \"MARKER_SPECMM\";\n    case OrderStateStreamResponse_MarkerType.MARKER_PO:\n      return \"MARKER_PO\";\n    case OrderStateStreamResponse_MarkerType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Дополнительная информация по статусу заявки */\nexport enum OrderStateStreamResponse_StatusCauseInfo {\n  /** CAUSE_UNSPECIFIED - Не определено */\n  CAUSE_UNSPECIFIED = 0,\n  /** CAUSE_CANCELLED_BY_CLIENT - Отменено клиентом */\n  CAUSE_CANCELLED_BY_CLIENT = 15,\n  /** CAUSE_CANCELLED_BY_EXCHANGE - Отменено биржей */\n  CAUSE_CANCELLED_BY_EXCHANGE = 1,\n  /** CAUSE_CANCELLED_NOT_ENOUGH_POSITION - Заявка не выставлена из-за нехватки средств */\n  CAUSE_CANCELLED_NOT_ENOUGH_POSITION = 2,\n  /** CAUSE_CANCELLED_BY_CLIENT_BLOCK - Отменено из-за блокировки клиента */\n  CAUSE_CANCELLED_BY_CLIENT_BLOCK = 3,\n  /** CAUSE_REJECTED_BY_BROKER - Отклонено брокером */\n  CAUSE_REJECTED_BY_BROKER = 4,\n  /** CAUSE_REJECTED_BY_EXCHANGE - Отклонено биржей */\n  CAUSE_REJECTED_BY_EXCHANGE = 5,\n  /** CAUSE_CANCELLED_BY_BROKER - Отменено брокером */\n  CAUSE_CANCELLED_BY_BROKER = 6,\n  UNRECOGNIZED = -1,\n}\n\nexport function orderStateStreamResponse_StatusCauseInfoFromJSON(\n  object: any,\n): OrderStateStreamResponse_StatusCauseInfo {\n  switch (object) {\n    case 0:\n    case \"CAUSE_UNSPECIFIED\":\n      return OrderStateStreamResponse_StatusCauseInfo.CAUSE_UNSPECIFIED;\n    case 15:\n    case \"CAUSE_CANCELLED_BY_CLIENT\":\n      return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_CLIENT;\n    case 1:\n    case \"CAUSE_CANCELLED_BY_EXCHANGE\":\n      return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_EXCHANGE;\n    case 2:\n    case \"CAUSE_CANCELLED_NOT_ENOUGH_POSITION\":\n      return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_NOT_ENOUGH_POSITION;\n    case 3:\n    case \"CAUSE_CANCELLED_BY_CLIENT_BLOCK\":\n      return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_CLIENT_BLOCK;\n    case 4:\n    case \"CAUSE_REJECTED_BY_BROKER\":\n      return OrderStateStreamResponse_StatusCauseInfo.CAUSE_REJECTED_BY_BROKER;\n    case 5:\n    case \"CAUSE_REJECTED_BY_EXCHANGE\":\n      return OrderStateStreamResponse_StatusCauseInfo.CAUSE_REJECTED_BY_EXCHANGE;\n    case 6:\n    case \"CAUSE_CANCELLED_BY_BROKER\":\n      return OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_BROKER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OrderStateStreamResponse_StatusCauseInfo.UNRECOGNIZED;\n  }\n}\n\nexport function orderStateStreamResponse_StatusCauseInfoToJSON(\n  object: OrderStateStreamResponse_StatusCauseInfo,\n): string {\n  switch (object) {\n    case OrderStateStreamResponse_StatusCauseInfo.CAUSE_UNSPECIFIED:\n      return \"CAUSE_UNSPECIFIED\";\n    case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_CLIENT:\n      return \"CAUSE_CANCELLED_BY_CLIENT\";\n    case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_EXCHANGE:\n      return \"CAUSE_CANCELLED_BY_EXCHANGE\";\n    case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_NOT_ENOUGH_POSITION:\n      return \"CAUSE_CANCELLED_NOT_ENOUGH_POSITION\";\n    case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_CLIENT_BLOCK:\n      return \"CAUSE_CANCELLED_BY_CLIENT_BLOCK\";\n    case OrderStateStreamResponse_StatusCauseInfo.CAUSE_REJECTED_BY_BROKER:\n      return \"CAUSE_REJECTED_BY_BROKER\";\n    case OrderStateStreamResponse_StatusCauseInfo.CAUSE_REJECTED_BY_EXCHANGE:\n      return \"CAUSE_REJECTED_BY_EXCHANGE\";\n    case OrderStateStreamResponse_StatusCauseInfo.CAUSE_CANCELLED_BY_BROKER:\n      return \"CAUSE_CANCELLED_BY_BROKER\";\n    case OrderStateStreamResponse_StatusCauseInfo.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Заявка */\nexport interface OrderStateStreamResponse_OrderState {\n  /** Биржевой идентификатор заявки */\n  orderId: string;\n  /** Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов. */\n  orderRequestId?:\n    | string\n    | undefined;\n  /** Код клиента на бирже */\n  clientCode: string;\n  /** Дата создания заявки */\n  createdAt:\n    | Date\n    | undefined;\n  /** Статус заявки */\n  executionReportStatus: OrderExecutionReportStatus;\n  /** Дополнительная информация по статусу */\n  statusInfo?:\n    | OrderStateStreamResponse_StatusCauseInfo\n    | undefined;\n  /** Тикер инструмента */\n  ticker: string;\n  /** Класс-код (секция торгов) */\n  classCode: string;\n  /** Лотность инструмента заявки */\n  lotSize: number;\n  /** Направление заявки */\n  direction: OrderDirection;\n  /** Алгоритм исполнения поручения */\n  timeInForce: TimeInForceType;\n  /** Тип заявки */\n  orderType: OrderType;\n  /** Номер счета */\n  accountId: string;\n  /** Начальная цена заявки */\n  initialOrderPrice:\n    | MoneyValue\n    | undefined;\n  /** Цена выставления заявки */\n  orderPrice:\n    | MoneyValue\n    | undefined;\n  /** Предрассчитанная стоимость полной заявки */\n  amount?:\n    | MoneyValue\n    | undefined;\n  /** Исполненная средняя цена одного инструмента в заявке */\n  executedOrderPrice:\n    | MoneyValue\n    | undefined;\n  /** Валюта исполнения */\n  currency: string;\n  /** Запрошено лотов */\n  lotsRequested: number;\n  /** Исполнено лотов */\n  lotsExecuted: number;\n  /** Число неисполненных лотов по заявке */\n  lotsLeft: number;\n  /** Отмененные лоты */\n  lotsCancelled: number;\n  /** Спецсимвол */\n  marker?:\n    | OrderStateStreamResponse_MarkerType\n    | undefined;\n  /** Список сделок */\n  trades: OrderTrade[];\n  /** Время исполнения заявки */\n  completionTime:\n    | Date\n    | undefined;\n  /** Код биржи */\n  exchange: string;\n  /** UID идентификатор инструмента */\n  instrumentUid: string;\n}\n\nfunction createBaseTradesStreamRequest(): TradesStreamRequest {\n  return { accounts: [], pingDelayMs: undefined };\n}\n\nexport const TradesStreamRequest: OrdersMessageUtils.MessageFns<TradesStreamRequest> = {\n  encode(message: TradesStreamRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.accounts) {\n      writer.uint32(10).string(v!);\n    }\n    if (message.pingDelayMs !== undefined) {\n      writer.uint32(120).int32(message.pingDelayMs);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradesStreamRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradesStreamRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accounts.push(reader.string());\n          continue;\n        }\n        case 15: {\n          if (tag !== 120) {\n            break;\n          }\n\n          message.pingDelayMs = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradesStreamRequest {\n    return {\n      accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e: any) => globalThis.String(e)) : [],\n      pingDelayMs: isSet(object.pingDelayMs) ? globalThis.Number(object.pingDelayMs) : undefined,\n    };\n  },\n\n  toJSON(message: TradesStreamRequest): unknown {\n    const obj: any = {};\n    if (message.accounts?.length) {\n      obj.accounts = message.accounts;\n    }\n    if (message.pingDelayMs !== undefined) {\n      obj.pingDelayMs = Math.round(message.pingDelayMs);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradesStreamRequest>): TradesStreamRequest {\n    return TradesStreamRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradesStreamRequest>): TradesStreamRequest {\n    const message = createBaseTradesStreamRequest();\n    message.accounts = object.accounts?.map((e) => e) || [];\n    message.pingDelayMs = object.pingDelayMs ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseTradesStreamResponse(): TradesStreamResponse {\n  return { orderTrades: undefined, ping: undefined, subscription: undefined };\n}\n\nexport const TradesStreamResponse: OrdersMessageUtils.MessageFns<TradesStreamResponse> = {\n  encode(message: TradesStreamResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderTrades !== undefined) {\n      OrderTrades.encode(message.orderTrades, writer.uint32(10).fork()).join();\n    }\n    if (message.ping !== undefined) {\n      Ping.encode(message.ping, writer.uint32(18).fork()).join();\n    }\n    if (message.subscription !== undefined) {\n      SubscriptionResponse.encode(message.subscription, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradesStreamResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradesStreamResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderTrades = OrderTrades.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ping = Ping.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subscription = SubscriptionResponse.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradesStreamResponse {\n    return {\n      orderTrades: isSet(object.orderTrades) ? OrderTrades.fromJSON(object.orderTrades) : undefined,\n      ping: isSet(object.ping) ? Ping.fromJSON(object.ping) : undefined,\n      subscription: isSet(object.subscription) ? SubscriptionResponse.fromJSON(object.subscription) : undefined,\n    };\n  },\n\n  toJSON(message: TradesStreamResponse): unknown {\n    const obj: any = {};\n    if (message.orderTrades !== undefined) {\n      obj.orderTrades = OrderTrades.toJSON(message.orderTrades);\n    }\n    if (message.ping !== undefined) {\n      obj.ping = Ping.toJSON(message.ping);\n    }\n    if (message.subscription !== undefined) {\n      obj.subscription = SubscriptionResponse.toJSON(message.subscription);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradesStreamResponse>): TradesStreamResponse {\n    return TradesStreamResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradesStreamResponse>): TradesStreamResponse {\n    const message = createBaseTradesStreamResponse();\n    message.orderTrades = (object.orderTrades !== undefined && object.orderTrades !== null)\n      ? OrderTrades.fromPartial(object.orderTrades)\n      : undefined;\n    message.ping = (object.ping !== undefined && object.ping !== null) ? Ping.fromPartial(object.ping) : undefined;\n    message.subscription = (object.subscription !== undefined && object.subscription !== null)\n      ? SubscriptionResponse.fromPartial(object.subscription)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderTrades(): OrderTrades {\n  return { orderId: \"\", createdAt: undefined, direction: 0, figi: \"\", trades: [], accountId: \"\", instrumentUid: \"\" };\n}\n\nexport const OrderTrades: OrdersMessageUtils.MessageFns<OrderTrades> = {\n  encode(message: OrderTrades, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderId !== \"\") {\n      writer.uint32(10).string(message.orderId);\n    }\n    if (message.createdAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.createdAt), writer.uint32(18).fork()).join();\n    }\n    if (message.direction !== 0) {\n      writer.uint32(24).int32(message.direction);\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(34).string(message.figi);\n    }\n    for (const v of message.trades) {\n      OrderTrade.encode(v!, writer.uint32(42).fork()).join();\n    }\n    if (message.accountId !== \"\") {\n      writer.uint32(50).string(message.accountId);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(58).string(message.instrumentUid);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderTrades {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderTrades();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.createdAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.trades.push(OrderTrade.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderTrades {\n    return {\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      createdAt: isSet(object.createdAt) ? fromJsonTimestamp(object.createdAt) : undefined,\n      direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0,\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      trades: globalThis.Array.isArray(object?.trades) ? object.trades.map((e: any) => OrderTrade.fromJSON(e)) : [],\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n    };\n  },\n\n  toJSON(message: OrderTrades): unknown {\n    const obj: any = {};\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.createdAt !== undefined) {\n      obj.createdAt = message.createdAt.toISOString();\n    }\n    if (message.direction !== 0) {\n      obj.direction = orderDirectionToJSON(message.direction);\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.trades?.length) {\n      obj.trades = message.trades.map((e) => OrderTrade.toJSON(e));\n    }\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderTrades>): OrderTrades {\n    return OrderTrades.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderTrades>): OrderTrades {\n    const message = createBaseOrderTrades();\n    message.orderId = object.orderId ?? \"\";\n    message.createdAt = object.createdAt ?? undefined;\n    message.direction = object.direction ?? 0;\n    message.figi = object.figi ?? \"\";\n    message.trades = object.trades?.map((e) => OrderTrade.fromPartial(e)) || [];\n    message.accountId = object.accountId ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseOrderTrade(): OrderTrade {\n  return { dateTime: undefined, price: undefined, quantity: 0, tradeId: \"\" };\n}\n\nexport const OrderTrade: OrdersMessageUtils.MessageFns<OrderTrade> = {\n  encode(message: OrderTrade, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.dateTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.dateTime), writer.uint32(10).fork()).join();\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(18).fork()).join();\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(24).int64(message.quantity);\n    }\n    if (message.tradeId !== \"\") {\n      writer.uint32(34).string(message.tradeId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderTrade {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderTrade();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.dateTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.tradeId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderTrade {\n    return {\n      dateTime: isSet(object.dateTime) ? fromJsonTimestamp(object.dateTime) : undefined,\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      tradeId: isSet(object.tradeId) ? globalThis.String(object.tradeId) : \"\",\n    };\n  },\n\n  toJSON(message: OrderTrade): unknown {\n    const obj: any = {};\n    if (message.dateTime !== undefined) {\n      obj.dateTime = message.dateTime.toISOString();\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.tradeId !== \"\") {\n      obj.tradeId = message.tradeId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderTrade>): OrderTrade {\n    return OrderTrade.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderTrade>): OrderTrade {\n    const message = createBaseOrderTrade();\n    message.dateTime = object.dateTime ?? undefined;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.quantity = object.quantity ?? 0;\n    message.tradeId = object.tradeId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBasePostOrderRequest(): PostOrderRequest {\n  return {\n    figi: undefined,\n    quantity: 0,\n    price: undefined,\n    direction: 0,\n    accountId: \"\",\n    orderType: 0,\n    orderId: \"\",\n    instrumentId: \"\",\n    timeInForce: 0,\n    priceType: 0,\n  };\n}\n\nexport const PostOrderRequest: OrdersMessageUtils.MessageFns<PostOrderRequest> = {\n  encode(message: PostOrderRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== undefined) {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(16).int64(message.quantity);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(26).fork()).join();\n    }\n    if (message.direction !== 0) {\n      writer.uint32(32).int32(message.direction);\n    }\n    if (message.accountId !== \"\") {\n      writer.uint32(42).string(message.accountId);\n    }\n    if (message.orderType !== 0) {\n      writer.uint32(48).int32(message.orderType);\n    }\n    if (message.orderId !== \"\") {\n      writer.uint32(58).string(message.orderId);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(66).string(message.instrumentId);\n    }\n    if (message.timeInForce !== 0) {\n      writer.uint32(72).int32(message.timeInForce);\n    }\n    if (message.priceType !== 0) {\n      writer.uint32(80).int32(message.priceType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PostOrderRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePostOrderRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.orderType = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.timeInForce = reader.int32() as any;\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.priceType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PostOrderRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0,\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      orderType: isSet(object.orderType) ? orderTypeFromJSON(object.orderType) : 0,\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      timeInForce: isSet(object.timeInForce) ? timeInForceTypeFromJSON(object.timeInForce) : 0,\n      priceType: isSet(object.priceType) ? priceTypeFromJSON(object.priceType) : 0,\n    };\n  },\n\n  toJSON(message: PostOrderRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== undefined) {\n      obj.figi = message.figi;\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.direction !== 0) {\n      obj.direction = orderDirectionToJSON(message.direction);\n    }\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.orderType !== 0) {\n      obj.orderType = orderTypeToJSON(message.orderType);\n    }\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.timeInForce !== 0) {\n      obj.timeInForce = timeInForceTypeToJSON(message.timeInForce);\n    }\n    if (message.priceType !== 0) {\n      obj.priceType = priceTypeToJSON(message.priceType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PostOrderRequest>): PostOrderRequest {\n    return PostOrderRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PostOrderRequest>): PostOrderRequest {\n    const message = createBasePostOrderRequest();\n    message.figi = object.figi ?? undefined;\n    message.quantity = object.quantity ?? 0;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.direction = object.direction ?? 0;\n    message.accountId = object.accountId ?? \"\";\n    message.orderType = object.orderType ?? 0;\n    message.orderId = object.orderId ?? \"\";\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.timeInForce = object.timeInForce ?? 0;\n    message.priceType = object.priceType ?? 0;\n    return message;\n  },\n};\n\nfunction createBasePostOrderResponse(): PostOrderResponse {\n  return {\n    orderId: \"\",\n    executionReportStatus: 0,\n    lotsRequested: 0,\n    lotsExecuted: 0,\n    initialOrderPrice: undefined,\n    executedOrderPrice: undefined,\n    totalOrderAmount: undefined,\n    initialCommission: undefined,\n    executedCommission: undefined,\n    aciValue: undefined,\n    figi: \"\",\n    direction: 0,\n    initialSecurityPrice: undefined,\n    orderType: 0,\n    message: \"\",\n    initialOrderPricePt: undefined,\n    instrumentUid: \"\",\n    orderRequestId: \"\",\n    responseMetadata: undefined,\n  };\n}\n\nexport const PostOrderResponse: OrdersMessageUtils.MessageFns<PostOrderResponse> = {\n  encode(message: PostOrderResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderId !== \"\") {\n      writer.uint32(10).string(message.orderId);\n    }\n    if (message.executionReportStatus !== 0) {\n      writer.uint32(16).int32(message.executionReportStatus);\n    }\n    if (message.lotsRequested !== 0) {\n      writer.uint32(24).int64(message.lotsRequested);\n    }\n    if (message.lotsExecuted !== 0) {\n      writer.uint32(32).int64(message.lotsExecuted);\n    }\n    if (message.initialOrderPrice !== undefined) {\n      MoneyValue.encode(message.initialOrderPrice, writer.uint32(42).fork()).join();\n    }\n    if (message.executedOrderPrice !== undefined) {\n      MoneyValue.encode(message.executedOrderPrice, writer.uint32(50).fork()).join();\n    }\n    if (message.totalOrderAmount !== undefined) {\n      MoneyValue.encode(message.totalOrderAmount, writer.uint32(58).fork()).join();\n    }\n    if (message.initialCommission !== undefined) {\n      MoneyValue.encode(message.initialCommission, writer.uint32(66).fork()).join();\n    }\n    if (message.executedCommission !== undefined) {\n      MoneyValue.encode(message.executedCommission, writer.uint32(74).fork()).join();\n    }\n    if (message.aciValue !== undefined) {\n      MoneyValue.encode(message.aciValue, writer.uint32(82).fork()).join();\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(90).string(message.figi);\n    }\n    if (message.direction !== 0) {\n      writer.uint32(96).int32(message.direction);\n    }\n    if (message.initialSecurityPrice !== undefined) {\n      MoneyValue.encode(message.initialSecurityPrice, writer.uint32(106).fork()).join();\n    }\n    if (message.orderType !== 0) {\n      writer.uint32(112).int32(message.orderType);\n    }\n    if (message.message !== \"\") {\n      writer.uint32(122).string(message.message);\n    }\n    if (message.initialOrderPricePt !== undefined) {\n      Quotation.encode(message.initialOrderPricePt, writer.uint32(130).fork()).join();\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(138).string(message.instrumentUid);\n    }\n    if (message.orderRequestId !== \"\") {\n      writer.uint32(162).string(message.orderRequestId);\n    }\n    if (message.responseMetadata !== undefined) {\n      ResponseMetadata.encode(message.responseMetadata, writer.uint32(2034).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PostOrderResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePostOrderResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.executionReportStatus = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.lotsRequested = longToNumber(reader.int64());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.lotsExecuted = longToNumber(reader.int64());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.initialOrderPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.executedOrderPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.totalOrderAmount = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.initialCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.executedCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.aciValue = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.initialSecurityPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 14: {\n          if (tag !== 112) {\n            break;\n          }\n\n          message.orderType = reader.int32() as any;\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.message = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.initialOrderPricePt = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.orderRequestId = reader.string();\n          continue;\n        }\n        case 254: {\n          if (tag !== 2034) {\n            break;\n          }\n\n          message.responseMetadata = ResponseMetadata.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PostOrderResponse {\n    return {\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      executionReportStatus: isSet(object.executionReportStatus)\n        ? orderExecutionReportStatusFromJSON(object.executionReportStatus)\n        : 0,\n      lotsRequested: isSet(object.lotsRequested) ? globalThis.Number(object.lotsRequested) : 0,\n      lotsExecuted: isSet(object.lotsExecuted) ? globalThis.Number(object.lotsExecuted) : 0,\n      initialOrderPrice: isSet(object.initialOrderPrice) ? MoneyValue.fromJSON(object.initialOrderPrice) : undefined,\n      executedOrderPrice: isSet(object.executedOrderPrice) ? MoneyValue.fromJSON(object.executedOrderPrice) : undefined,\n      totalOrderAmount: isSet(object.totalOrderAmount) ? MoneyValue.fromJSON(object.totalOrderAmount) : undefined,\n      initialCommission: isSet(object.initialCommission) ? MoneyValue.fromJSON(object.initialCommission) : undefined,\n      executedCommission: isSet(object.executedCommission) ? MoneyValue.fromJSON(object.executedCommission) : undefined,\n      aciValue: isSet(object.aciValue) ? MoneyValue.fromJSON(object.aciValue) : undefined,\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0,\n      initialSecurityPrice: isSet(object.initialSecurityPrice)\n        ? MoneyValue.fromJSON(object.initialSecurityPrice)\n        : undefined,\n      orderType: isSet(object.orderType) ? orderTypeFromJSON(object.orderType) : 0,\n      message: isSet(object.message) ? globalThis.String(object.message) : \"\",\n      initialOrderPricePt: isSet(object.initialOrderPricePt)\n        ? Quotation.fromJSON(object.initialOrderPricePt)\n        : undefined,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      orderRequestId: isSet(object.orderRequestId) ? globalThis.String(object.orderRequestId) : \"\",\n      responseMetadata: isSet(object.responseMetadata) ? ResponseMetadata.fromJSON(object.responseMetadata) : undefined,\n    };\n  },\n\n  toJSON(message: PostOrderResponse): unknown {\n    const obj: any = {};\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.executionReportStatus !== 0) {\n      obj.executionReportStatus = orderExecutionReportStatusToJSON(message.executionReportStatus);\n    }\n    if (message.lotsRequested !== 0) {\n      obj.lotsRequested = Math.round(message.lotsRequested);\n    }\n    if (message.lotsExecuted !== 0) {\n      obj.lotsExecuted = Math.round(message.lotsExecuted);\n    }\n    if (message.initialOrderPrice !== undefined) {\n      obj.initialOrderPrice = MoneyValue.toJSON(message.initialOrderPrice);\n    }\n    if (message.executedOrderPrice !== undefined) {\n      obj.executedOrderPrice = MoneyValue.toJSON(message.executedOrderPrice);\n    }\n    if (message.totalOrderAmount !== undefined) {\n      obj.totalOrderAmount = MoneyValue.toJSON(message.totalOrderAmount);\n    }\n    if (message.initialCommission !== undefined) {\n      obj.initialCommission = MoneyValue.toJSON(message.initialCommission);\n    }\n    if (message.executedCommission !== undefined) {\n      obj.executedCommission = MoneyValue.toJSON(message.executedCommission);\n    }\n    if (message.aciValue !== undefined) {\n      obj.aciValue = MoneyValue.toJSON(message.aciValue);\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.direction !== 0) {\n      obj.direction = orderDirectionToJSON(message.direction);\n    }\n    if (message.initialSecurityPrice !== undefined) {\n      obj.initialSecurityPrice = MoneyValue.toJSON(message.initialSecurityPrice);\n    }\n    if (message.orderType !== 0) {\n      obj.orderType = orderTypeToJSON(message.orderType);\n    }\n    if (message.message !== \"\") {\n      obj.message = message.message;\n    }\n    if (message.initialOrderPricePt !== undefined) {\n      obj.initialOrderPricePt = Quotation.toJSON(message.initialOrderPricePt);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.orderRequestId !== \"\") {\n      obj.orderRequestId = message.orderRequestId;\n    }\n    if (message.responseMetadata !== undefined) {\n      obj.responseMetadata = ResponseMetadata.toJSON(message.responseMetadata);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PostOrderResponse>): PostOrderResponse {\n    return PostOrderResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PostOrderResponse>): PostOrderResponse {\n    const message = createBasePostOrderResponse();\n    message.orderId = object.orderId ?? \"\";\n    message.executionReportStatus = object.executionReportStatus ?? 0;\n    message.lotsRequested = object.lotsRequested ?? 0;\n    message.lotsExecuted = object.lotsExecuted ?? 0;\n    message.initialOrderPrice = (object.initialOrderPrice !== undefined && object.initialOrderPrice !== null)\n      ? MoneyValue.fromPartial(object.initialOrderPrice)\n      : undefined;\n    message.executedOrderPrice = (object.executedOrderPrice !== undefined && object.executedOrderPrice !== null)\n      ? MoneyValue.fromPartial(object.executedOrderPrice)\n      : undefined;\n    message.totalOrderAmount = (object.totalOrderAmount !== undefined && object.totalOrderAmount !== null)\n      ? MoneyValue.fromPartial(object.totalOrderAmount)\n      : undefined;\n    message.initialCommission = (object.initialCommission !== undefined && object.initialCommission !== null)\n      ? MoneyValue.fromPartial(object.initialCommission)\n      : undefined;\n    message.executedCommission = (object.executedCommission !== undefined && object.executedCommission !== null)\n      ? MoneyValue.fromPartial(object.executedCommission)\n      : undefined;\n    message.aciValue = (object.aciValue !== undefined && object.aciValue !== null)\n      ? MoneyValue.fromPartial(object.aciValue)\n      : undefined;\n    message.figi = object.figi ?? \"\";\n    message.direction = object.direction ?? 0;\n    message.initialSecurityPrice = (object.initialSecurityPrice !== undefined && object.initialSecurityPrice !== null)\n      ? MoneyValue.fromPartial(object.initialSecurityPrice)\n      : undefined;\n    message.orderType = object.orderType ?? 0;\n    message.message = object.message ?? \"\";\n    message.initialOrderPricePt = (object.initialOrderPricePt !== undefined && object.initialOrderPricePt !== null)\n      ? Quotation.fromPartial(object.initialOrderPricePt)\n      : undefined;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.orderRequestId = object.orderRequestId ?? \"\";\n    message.responseMetadata = (object.responseMetadata !== undefined && object.responseMetadata !== null)\n      ? ResponseMetadata.fromPartial(object.responseMetadata)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePostOrderAsyncRequest(): PostOrderAsyncRequest {\n  return {\n    instrumentId: \"\",\n    quantity: 0,\n    price: undefined,\n    direction: 0,\n    accountId: \"\",\n    orderType: 0,\n    orderId: \"\",\n    timeInForce: undefined,\n    priceType: undefined,\n  };\n}\n\nexport const PostOrderAsyncRequest: OrdersMessageUtils.MessageFns<PostOrderAsyncRequest> = {\n  encode(message: PostOrderAsyncRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrumentId !== \"\") {\n      writer.uint32(10).string(message.instrumentId);\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(16).int64(message.quantity);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(26).fork()).join();\n    }\n    if (message.direction !== 0) {\n      writer.uint32(32).int32(message.direction);\n    }\n    if (message.accountId !== \"\") {\n      writer.uint32(42).string(message.accountId);\n    }\n    if (message.orderType !== 0) {\n      writer.uint32(48).int32(message.orderType);\n    }\n    if (message.orderId !== \"\") {\n      writer.uint32(58).string(message.orderId);\n    }\n    if (message.timeInForce !== undefined) {\n      writer.uint32(64).int32(message.timeInForce);\n    }\n    if (message.priceType !== undefined) {\n      writer.uint32(72).int32(message.priceType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PostOrderAsyncRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePostOrderAsyncRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.orderType = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.timeInForce = reader.int32() as any;\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.priceType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PostOrderAsyncRequest {\n    return {\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0,\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      orderType: isSet(object.orderType) ? orderTypeFromJSON(object.orderType) : 0,\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      timeInForce: isSet(object.timeInForce) ? timeInForceTypeFromJSON(object.timeInForce) : undefined,\n      priceType: isSet(object.priceType) ? priceTypeFromJSON(object.priceType) : undefined,\n    };\n  },\n\n  toJSON(message: PostOrderAsyncRequest): unknown {\n    const obj: any = {};\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.direction !== 0) {\n      obj.direction = orderDirectionToJSON(message.direction);\n    }\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.orderType !== 0) {\n      obj.orderType = orderTypeToJSON(message.orderType);\n    }\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.timeInForce !== undefined) {\n      obj.timeInForce = timeInForceTypeToJSON(message.timeInForce);\n    }\n    if (message.priceType !== undefined) {\n      obj.priceType = priceTypeToJSON(message.priceType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PostOrderAsyncRequest>): PostOrderAsyncRequest {\n    return PostOrderAsyncRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PostOrderAsyncRequest>): PostOrderAsyncRequest {\n    const message = createBasePostOrderAsyncRequest();\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.quantity = object.quantity ?? 0;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.direction = object.direction ?? 0;\n    message.accountId = object.accountId ?? \"\";\n    message.orderType = object.orderType ?? 0;\n    message.orderId = object.orderId ?? \"\";\n    message.timeInForce = object.timeInForce ?? undefined;\n    message.priceType = object.priceType ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePostOrderAsyncResponse(): PostOrderAsyncResponse {\n  return { orderRequestId: \"\", executionReportStatus: 0, tradeIntentId: undefined };\n}\n\nexport const PostOrderAsyncResponse: OrdersMessageUtils.MessageFns<PostOrderAsyncResponse> = {\n  encode(message: PostOrderAsyncResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderRequestId !== \"\") {\n      writer.uint32(10).string(message.orderRequestId);\n    }\n    if (message.executionReportStatus !== 0) {\n      writer.uint32(16).int32(message.executionReportStatus);\n    }\n    if (message.tradeIntentId !== undefined) {\n      writer.uint32(26).string(message.tradeIntentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PostOrderAsyncResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePostOrderAsyncResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderRequestId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.executionReportStatus = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.tradeIntentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PostOrderAsyncResponse {\n    return {\n      orderRequestId: isSet(object.orderRequestId) ? globalThis.String(object.orderRequestId) : \"\",\n      executionReportStatus: isSet(object.executionReportStatus)\n        ? orderExecutionReportStatusFromJSON(object.executionReportStatus)\n        : 0,\n      tradeIntentId: isSet(object.tradeIntentId) ? globalThis.String(object.tradeIntentId) : undefined,\n    };\n  },\n\n  toJSON(message: PostOrderAsyncResponse): unknown {\n    const obj: any = {};\n    if (message.orderRequestId !== \"\") {\n      obj.orderRequestId = message.orderRequestId;\n    }\n    if (message.executionReportStatus !== 0) {\n      obj.executionReportStatus = orderExecutionReportStatusToJSON(message.executionReportStatus);\n    }\n    if (message.tradeIntentId !== undefined) {\n      obj.tradeIntentId = message.tradeIntentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PostOrderAsyncResponse>): PostOrderAsyncResponse {\n    return PostOrderAsyncResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PostOrderAsyncResponse>): PostOrderAsyncResponse {\n    const message = createBasePostOrderAsyncResponse();\n    message.orderRequestId = object.orderRequestId ?? \"\";\n    message.executionReportStatus = object.executionReportStatus ?? 0;\n    message.tradeIntentId = object.tradeIntentId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseCancelOrderRequest(): CancelOrderRequest {\n  return { accountId: \"\", orderId: \"\", orderIdType: undefined };\n}\n\nexport const CancelOrderRequest: OrdersMessageUtils.MessageFns<CancelOrderRequest> = {\n  encode(message: CancelOrderRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.orderId !== \"\") {\n      writer.uint32(18).string(message.orderId);\n    }\n    if (message.orderIdType !== undefined) {\n      writer.uint32(24).int32(message.orderIdType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CancelOrderRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCancelOrderRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.orderIdType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CancelOrderRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      orderIdType: isSet(object.orderIdType) ? orderIdTypeFromJSON(object.orderIdType) : undefined,\n    };\n  },\n\n  toJSON(message: CancelOrderRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.orderIdType !== undefined) {\n      obj.orderIdType = orderIdTypeToJSON(message.orderIdType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CancelOrderRequest>): CancelOrderRequest {\n    return CancelOrderRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CancelOrderRequest>): CancelOrderRequest {\n    const message = createBaseCancelOrderRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.orderId = object.orderId ?? \"\";\n    message.orderIdType = object.orderIdType ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseCancelOrderResponse(): CancelOrderResponse {\n  return { time: undefined, responseMetadata: undefined };\n}\n\nexport const CancelOrderResponse: OrdersMessageUtils.MessageFns<CancelOrderResponse> = {\n  encode(message: CancelOrderResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(10).fork()).join();\n    }\n    if (message.responseMetadata !== undefined) {\n      ResponseMetadata.encode(message.responseMetadata, writer.uint32(2034).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CancelOrderResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCancelOrderResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 254: {\n          if (tag !== 2034) {\n            break;\n          }\n\n          message.responseMetadata = ResponseMetadata.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CancelOrderResponse {\n    return {\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n      responseMetadata: isSet(object.responseMetadata) ? ResponseMetadata.fromJSON(object.responseMetadata) : undefined,\n    };\n  },\n\n  toJSON(message: CancelOrderResponse): unknown {\n    const obj: any = {};\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    if (message.responseMetadata !== undefined) {\n      obj.responseMetadata = ResponseMetadata.toJSON(message.responseMetadata);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CancelOrderResponse>): CancelOrderResponse {\n    return CancelOrderResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CancelOrderResponse>): CancelOrderResponse {\n    const message = createBaseCancelOrderResponse();\n    message.time = object.time ?? undefined;\n    message.responseMetadata = (object.responseMetadata !== undefined && object.responseMetadata !== null)\n      ? ResponseMetadata.fromPartial(object.responseMetadata)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetOrderStateRequest(): GetOrderStateRequest {\n  return { accountId: \"\", orderId: \"\", priceType: 0, orderIdType: undefined };\n}\n\nexport const GetOrderStateRequest: OrdersMessageUtils.MessageFns<GetOrderStateRequest> = {\n  encode(message: GetOrderStateRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.orderId !== \"\") {\n      writer.uint32(18).string(message.orderId);\n    }\n    if (message.priceType !== 0) {\n      writer.uint32(24).int32(message.priceType);\n    }\n    if (message.orderIdType !== undefined) {\n      writer.uint32(32).int32(message.orderIdType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrderStateRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrderStateRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.priceType = reader.int32() as any;\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.orderIdType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrderStateRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      priceType: isSet(object.priceType) ? priceTypeFromJSON(object.priceType) : 0,\n      orderIdType: isSet(object.orderIdType) ? orderIdTypeFromJSON(object.orderIdType) : undefined,\n    };\n  },\n\n  toJSON(message: GetOrderStateRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.priceType !== 0) {\n      obj.priceType = priceTypeToJSON(message.priceType);\n    }\n    if (message.orderIdType !== undefined) {\n      obj.orderIdType = orderIdTypeToJSON(message.orderIdType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrderStateRequest>): GetOrderStateRequest {\n    return GetOrderStateRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrderStateRequest>): GetOrderStateRequest {\n    const message = createBaseGetOrderStateRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.orderId = object.orderId ?? \"\";\n    message.priceType = object.priceType ?? 0;\n    message.orderIdType = object.orderIdType ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetOrdersRequest(): GetOrdersRequest {\n  return { accountId: \"\" };\n}\n\nexport const GetOrdersRequest: OrdersMessageUtils.MessageFns<GetOrdersRequest> = {\n  encode(message: GetOrdersRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrdersRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrdersRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrdersRequest {\n    return { accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\" };\n  },\n\n  toJSON(message: GetOrdersRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrdersRequest>): GetOrdersRequest {\n    return GetOrdersRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrdersRequest>): GetOrdersRequest {\n    const message = createBaseGetOrdersRequest();\n    message.accountId = object.accountId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetOrdersResponse(): GetOrdersResponse {\n  return { orders: [] };\n}\n\nexport const GetOrdersResponse: OrdersMessageUtils.MessageFns<GetOrdersResponse> = {\n  encode(message: GetOrdersResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.orders) {\n      OrderState.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrdersResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrdersResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orders.push(OrderState.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrdersResponse {\n    return {\n      orders: globalThis.Array.isArray(object?.orders) ? object.orders.map((e: any) => OrderState.fromJSON(e)) : [],\n    };\n  },\n\n  toJSON(message: GetOrdersResponse): unknown {\n    const obj: any = {};\n    if (message.orders?.length) {\n      obj.orders = message.orders.map((e) => OrderState.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrdersResponse>): GetOrdersResponse {\n    return GetOrdersResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrdersResponse>): GetOrdersResponse {\n    const message = createBaseGetOrdersResponse();\n    message.orders = object.orders?.map((e) => OrderState.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOrderState(): OrderState {\n  return {\n    orderId: \"\",\n    executionReportStatus: 0,\n    lotsRequested: 0,\n    lotsExecuted: 0,\n    initialOrderPrice: undefined,\n    executedOrderPrice: undefined,\n    totalOrderAmount: undefined,\n    averagePositionPrice: undefined,\n    initialCommission: undefined,\n    executedCommission: undefined,\n    figi: \"\",\n    direction: 0,\n    initialSecurityPrice: undefined,\n    stages: [],\n    serviceCommission: undefined,\n    currency: \"\",\n    orderType: 0,\n    orderDate: undefined,\n    instrumentUid: \"\",\n    orderRequestId: \"\",\n  };\n}\n\nexport const OrderState: OrdersMessageUtils.MessageFns<OrderState> = {\n  encode(message: OrderState, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderId !== \"\") {\n      writer.uint32(10).string(message.orderId);\n    }\n    if (message.executionReportStatus !== 0) {\n      writer.uint32(16).int32(message.executionReportStatus);\n    }\n    if (message.lotsRequested !== 0) {\n      writer.uint32(24).int64(message.lotsRequested);\n    }\n    if (message.lotsExecuted !== 0) {\n      writer.uint32(32).int64(message.lotsExecuted);\n    }\n    if (message.initialOrderPrice !== undefined) {\n      MoneyValue.encode(message.initialOrderPrice, writer.uint32(42).fork()).join();\n    }\n    if (message.executedOrderPrice !== undefined) {\n      MoneyValue.encode(message.executedOrderPrice, writer.uint32(50).fork()).join();\n    }\n    if (message.totalOrderAmount !== undefined) {\n      MoneyValue.encode(message.totalOrderAmount, writer.uint32(58).fork()).join();\n    }\n    if (message.averagePositionPrice !== undefined) {\n      MoneyValue.encode(message.averagePositionPrice, writer.uint32(66).fork()).join();\n    }\n    if (message.initialCommission !== undefined) {\n      MoneyValue.encode(message.initialCommission, writer.uint32(74).fork()).join();\n    }\n    if (message.executedCommission !== undefined) {\n      MoneyValue.encode(message.executedCommission, writer.uint32(82).fork()).join();\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(90).string(message.figi);\n    }\n    if (message.direction !== 0) {\n      writer.uint32(96).int32(message.direction);\n    }\n    if (message.initialSecurityPrice !== undefined) {\n      MoneyValue.encode(message.initialSecurityPrice, writer.uint32(106).fork()).join();\n    }\n    for (const v of message.stages) {\n      OrderStage.encode(v!, writer.uint32(114).fork()).join();\n    }\n    if (message.serviceCommission !== undefined) {\n      MoneyValue.encode(message.serviceCommission, writer.uint32(122).fork()).join();\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(130).string(message.currency);\n    }\n    if (message.orderType !== 0) {\n      writer.uint32(136).int32(message.orderType);\n    }\n    if (message.orderDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.orderDate), writer.uint32(146).fork()).join();\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(154).string(message.instrumentUid);\n    }\n    if (message.orderRequestId !== \"\") {\n      writer.uint32(162).string(message.orderRequestId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderState {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderState();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.executionReportStatus = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.lotsRequested = longToNumber(reader.int64());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.lotsExecuted = longToNumber(reader.int64());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.initialOrderPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.executedOrderPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.totalOrderAmount = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.averagePositionPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.initialCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.executedCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.initialSecurityPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.stages.push(OrderStage.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.serviceCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 136) {\n            break;\n          }\n\n          message.orderType = reader.int32() as any;\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.orderDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.orderRequestId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderState {\n    return {\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      executionReportStatus: isSet(object.executionReportStatus)\n        ? orderExecutionReportStatusFromJSON(object.executionReportStatus)\n        : 0,\n      lotsRequested: isSet(object.lotsRequested) ? globalThis.Number(object.lotsRequested) : 0,\n      lotsExecuted: isSet(object.lotsExecuted) ? globalThis.Number(object.lotsExecuted) : 0,\n      initialOrderPrice: isSet(object.initialOrderPrice) ? MoneyValue.fromJSON(object.initialOrderPrice) : undefined,\n      executedOrderPrice: isSet(object.executedOrderPrice) ? MoneyValue.fromJSON(object.executedOrderPrice) : undefined,\n      totalOrderAmount: isSet(object.totalOrderAmount) ? MoneyValue.fromJSON(object.totalOrderAmount) : undefined,\n      averagePositionPrice: isSet(object.averagePositionPrice)\n        ? MoneyValue.fromJSON(object.averagePositionPrice)\n        : undefined,\n      initialCommission: isSet(object.initialCommission) ? MoneyValue.fromJSON(object.initialCommission) : undefined,\n      executedCommission: isSet(object.executedCommission) ? MoneyValue.fromJSON(object.executedCommission) : undefined,\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0,\n      initialSecurityPrice: isSet(object.initialSecurityPrice)\n        ? MoneyValue.fromJSON(object.initialSecurityPrice)\n        : undefined,\n      stages: globalThis.Array.isArray(object?.stages) ? object.stages.map((e: any) => OrderStage.fromJSON(e)) : [],\n      serviceCommission: isSet(object.serviceCommission) ? MoneyValue.fromJSON(object.serviceCommission) : undefined,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      orderType: isSet(object.orderType) ? orderTypeFromJSON(object.orderType) : 0,\n      orderDate: isSet(object.orderDate) ? fromJsonTimestamp(object.orderDate) : undefined,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      orderRequestId: isSet(object.orderRequestId) ? globalThis.String(object.orderRequestId) : \"\",\n    };\n  },\n\n  toJSON(message: OrderState): unknown {\n    const obj: any = {};\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.executionReportStatus !== 0) {\n      obj.executionReportStatus = orderExecutionReportStatusToJSON(message.executionReportStatus);\n    }\n    if (message.lotsRequested !== 0) {\n      obj.lotsRequested = Math.round(message.lotsRequested);\n    }\n    if (message.lotsExecuted !== 0) {\n      obj.lotsExecuted = Math.round(message.lotsExecuted);\n    }\n    if (message.initialOrderPrice !== undefined) {\n      obj.initialOrderPrice = MoneyValue.toJSON(message.initialOrderPrice);\n    }\n    if (message.executedOrderPrice !== undefined) {\n      obj.executedOrderPrice = MoneyValue.toJSON(message.executedOrderPrice);\n    }\n    if (message.totalOrderAmount !== undefined) {\n      obj.totalOrderAmount = MoneyValue.toJSON(message.totalOrderAmount);\n    }\n    if (message.averagePositionPrice !== undefined) {\n      obj.averagePositionPrice = MoneyValue.toJSON(message.averagePositionPrice);\n    }\n    if (message.initialCommission !== undefined) {\n      obj.initialCommission = MoneyValue.toJSON(message.initialCommission);\n    }\n    if (message.executedCommission !== undefined) {\n      obj.executedCommission = MoneyValue.toJSON(message.executedCommission);\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.direction !== 0) {\n      obj.direction = orderDirectionToJSON(message.direction);\n    }\n    if (message.initialSecurityPrice !== undefined) {\n      obj.initialSecurityPrice = MoneyValue.toJSON(message.initialSecurityPrice);\n    }\n    if (message.stages?.length) {\n      obj.stages = message.stages.map((e) => OrderStage.toJSON(e));\n    }\n    if (message.serviceCommission !== undefined) {\n      obj.serviceCommission = MoneyValue.toJSON(message.serviceCommission);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.orderType !== 0) {\n      obj.orderType = orderTypeToJSON(message.orderType);\n    }\n    if (message.orderDate !== undefined) {\n      obj.orderDate = message.orderDate.toISOString();\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.orderRequestId !== \"\") {\n      obj.orderRequestId = message.orderRequestId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderState>): OrderState {\n    return OrderState.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderState>): OrderState {\n    const message = createBaseOrderState();\n    message.orderId = object.orderId ?? \"\";\n    message.executionReportStatus = object.executionReportStatus ?? 0;\n    message.lotsRequested = object.lotsRequested ?? 0;\n    message.lotsExecuted = object.lotsExecuted ?? 0;\n    message.initialOrderPrice = (object.initialOrderPrice !== undefined && object.initialOrderPrice !== null)\n      ? MoneyValue.fromPartial(object.initialOrderPrice)\n      : undefined;\n    message.executedOrderPrice = (object.executedOrderPrice !== undefined && object.executedOrderPrice !== null)\n      ? MoneyValue.fromPartial(object.executedOrderPrice)\n      : undefined;\n    message.totalOrderAmount = (object.totalOrderAmount !== undefined && object.totalOrderAmount !== null)\n      ? MoneyValue.fromPartial(object.totalOrderAmount)\n      : undefined;\n    message.averagePositionPrice = (object.averagePositionPrice !== undefined && object.averagePositionPrice !== null)\n      ? MoneyValue.fromPartial(object.averagePositionPrice)\n      : undefined;\n    message.initialCommission = (object.initialCommission !== undefined && object.initialCommission !== null)\n      ? MoneyValue.fromPartial(object.initialCommission)\n      : undefined;\n    message.executedCommission = (object.executedCommission !== undefined && object.executedCommission !== null)\n      ? MoneyValue.fromPartial(object.executedCommission)\n      : undefined;\n    message.figi = object.figi ?? \"\";\n    message.direction = object.direction ?? 0;\n    message.initialSecurityPrice = (object.initialSecurityPrice !== undefined && object.initialSecurityPrice !== null)\n      ? MoneyValue.fromPartial(object.initialSecurityPrice)\n      : undefined;\n    message.stages = object.stages?.map((e) => OrderStage.fromPartial(e)) || [];\n    message.serviceCommission = (object.serviceCommission !== undefined && object.serviceCommission !== null)\n      ? MoneyValue.fromPartial(object.serviceCommission)\n      : undefined;\n    message.currency = object.currency ?? \"\";\n    message.orderType = object.orderType ?? 0;\n    message.orderDate = object.orderDate ?? undefined;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.orderRequestId = object.orderRequestId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseOrderStage(): OrderStage {\n  return { price: undefined, quantity: 0, tradeId: \"\", executionTime: undefined };\n}\n\nexport const OrderStage: OrdersMessageUtils.MessageFns<OrderStage> = {\n  encode(message: OrderStage, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.price !== undefined) {\n      MoneyValue.encode(message.price, writer.uint32(10).fork()).join();\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(16).int64(message.quantity);\n    }\n    if (message.tradeId !== \"\") {\n      writer.uint32(26).string(message.tradeId);\n    }\n    if (message.executionTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.executionTime), writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderStage {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderStage();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.price = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.tradeId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.executionTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderStage {\n    return {\n      price: isSet(object.price) ? MoneyValue.fromJSON(object.price) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      tradeId: isSet(object.tradeId) ? globalThis.String(object.tradeId) : \"\",\n      executionTime: isSet(object.executionTime) ? fromJsonTimestamp(object.executionTime) : undefined,\n    };\n  },\n\n  toJSON(message: OrderStage): unknown {\n    const obj: any = {};\n    if (message.price !== undefined) {\n      obj.price = MoneyValue.toJSON(message.price);\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.tradeId !== \"\") {\n      obj.tradeId = message.tradeId;\n    }\n    if (message.executionTime !== undefined) {\n      obj.executionTime = message.executionTime.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderStage>): OrderStage {\n    return OrderStage.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderStage>): OrderStage {\n    const message = createBaseOrderStage();\n    message.price = (object.price !== undefined && object.price !== null)\n      ? MoneyValue.fromPartial(object.price)\n      : undefined;\n    message.quantity = object.quantity ?? 0;\n    message.tradeId = object.tradeId ?? \"\";\n    message.executionTime = object.executionTime ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseReplaceOrderRequest(): ReplaceOrderRequest {\n  return { accountId: \"\", orderId: \"\", idempotencyKey: \"\", quantity: 0, price: undefined, priceType: undefined };\n}\n\nexport const ReplaceOrderRequest: OrdersMessageUtils.MessageFns<ReplaceOrderRequest> = {\n  encode(message: ReplaceOrderRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.orderId !== \"\") {\n      writer.uint32(50).string(message.orderId);\n    }\n    if (message.idempotencyKey !== \"\") {\n      writer.uint32(58).string(message.idempotencyKey);\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(88).int64(message.quantity);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(98).fork()).join();\n    }\n    if (message.priceType !== undefined) {\n      writer.uint32(104).int32(message.priceType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ReplaceOrderRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseReplaceOrderRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.idempotencyKey = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.priceType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ReplaceOrderRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      idempotencyKey: isSet(object.idempotencyKey) ? globalThis.String(object.idempotencyKey) : \"\",\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      priceType: isSet(object.priceType) ? priceTypeFromJSON(object.priceType) : undefined,\n    };\n  },\n\n  toJSON(message: ReplaceOrderRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.idempotencyKey !== \"\") {\n      obj.idempotencyKey = message.idempotencyKey;\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.priceType !== undefined) {\n      obj.priceType = priceTypeToJSON(message.priceType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ReplaceOrderRequest>): ReplaceOrderRequest {\n    return ReplaceOrderRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ReplaceOrderRequest>): ReplaceOrderRequest {\n    const message = createBaseReplaceOrderRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.orderId = object.orderId ?? \"\";\n    message.idempotencyKey = object.idempotencyKey ?? \"\";\n    message.quantity = object.quantity ?? 0;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.priceType = object.priceType ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetMaxLotsRequest(): GetMaxLotsRequest {\n  return { accountId: \"\", instrumentId: \"\", price: undefined };\n}\n\nexport const GetMaxLotsRequest: OrdersMessageUtils.MessageFns<GetMaxLotsRequest> = {\n  encode(message: GetMaxLotsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetMaxLotsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetMaxLotsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetMaxLotsRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n    };\n  },\n\n  toJSON(message: GetMaxLotsRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetMaxLotsRequest>): GetMaxLotsRequest {\n    return GetMaxLotsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetMaxLotsRequest>): GetMaxLotsRequest {\n    const message = createBaseGetMaxLotsRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetMaxLotsResponse(): GetMaxLotsResponse {\n  return {\n    currency: \"\",\n    buyLimits: undefined,\n    buyMarginLimits: undefined,\n    sellLimits: undefined,\n    sellMarginLimits: undefined,\n  };\n}\n\nexport const GetMaxLotsResponse: OrdersMessageUtils.MessageFns<GetMaxLotsResponse> = {\n  encode(message: GetMaxLotsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.currency !== \"\") {\n      writer.uint32(10).string(message.currency);\n    }\n    if (message.buyLimits !== undefined) {\n      GetMaxLotsResponse_BuyLimitsView.encode(message.buyLimits, writer.uint32(18).fork()).join();\n    }\n    if (message.buyMarginLimits !== undefined) {\n      GetMaxLotsResponse_BuyLimitsView.encode(message.buyMarginLimits, writer.uint32(26).fork()).join();\n    }\n    if (message.sellLimits !== undefined) {\n      GetMaxLotsResponse_SellLimitsView.encode(message.sellLimits, writer.uint32(34).fork()).join();\n    }\n    if (message.sellMarginLimits !== undefined) {\n      GetMaxLotsResponse_SellLimitsView.encode(message.sellMarginLimits, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetMaxLotsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetMaxLotsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.buyLimits = GetMaxLotsResponse_BuyLimitsView.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.buyMarginLimits = GetMaxLotsResponse_BuyLimitsView.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.sellLimits = GetMaxLotsResponse_SellLimitsView.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.sellMarginLimits = GetMaxLotsResponse_SellLimitsView.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetMaxLotsResponse {\n    return {\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      buyLimits: isSet(object.buyLimits) ? GetMaxLotsResponse_BuyLimitsView.fromJSON(object.buyLimits) : undefined,\n      buyMarginLimits: isSet(object.buyMarginLimits)\n        ? GetMaxLotsResponse_BuyLimitsView.fromJSON(object.buyMarginLimits)\n        : undefined,\n      sellLimits: isSet(object.sellLimits) ? GetMaxLotsResponse_SellLimitsView.fromJSON(object.sellLimits) : undefined,\n      sellMarginLimits: isSet(object.sellMarginLimits)\n        ? GetMaxLotsResponse_SellLimitsView.fromJSON(object.sellMarginLimits)\n        : undefined,\n    };\n  },\n\n  toJSON(message: GetMaxLotsResponse): unknown {\n    const obj: any = {};\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.buyLimits !== undefined) {\n      obj.buyLimits = GetMaxLotsResponse_BuyLimitsView.toJSON(message.buyLimits);\n    }\n    if (message.buyMarginLimits !== undefined) {\n      obj.buyMarginLimits = GetMaxLotsResponse_BuyLimitsView.toJSON(message.buyMarginLimits);\n    }\n    if (message.sellLimits !== undefined) {\n      obj.sellLimits = GetMaxLotsResponse_SellLimitsView.toJSON(message.sellLimits);\n    }\n    if (message.sellMarginLimits !== undefined) {\n      obj.sellMarginLimits = GetMaxLotsResponse_SellLimitsView.toJSON(message.sellMarginLimits);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetMaxLotsResponse>): GetMaxLotsResponse {\n    return GetMaxLotsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetMaxLotsResponse>): GetMaxLotsResponse {\n    const message = createBaseGetMaxLotsResponse();\n    message.currency = object.currency ?? \"\";\n    message.buyLimits = (object.buyLimits !== undefined && object.buyLimits !== null)\n      ? GetMaxLotsResponse_BuyLimitsView.fromPartial(object.buyLimits)\n      : undefined;\n    message.buyMarginLimits = (object.buyMarginLimits !== undefined && object.buyMarginLimits !== null)\n      ? GetMaxLotsResponse_BuyLimitsView.fromPartial(object.buyMarginLimits)\n      : undefined;\n    message.sellLimits = (object.sellLimits !== undefined && object.sellLimits !== null)\n      ? GetMaxLotsResponse_SellLimitsView.fromPartial(object.sellLimits)\n      : undefined;\n    message.sellMarginLimits = (object.sellMarginLimits !== undefined && object.sellMarginLimits !== null)\n      ? GetMaxLotsResponse_SellLimitsView.fromPartial(object.sellMarginLimits)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetMaxLotsResponse_BuyLimitsView(): GetMaxLotsResponse_BuyLimitsView {\n  return { buyMoneyAmount: undefined, buyMaxLots: 0, buyMaxMarketLots: 0 };\n}\n\nexport const GetMaxLotsResponse_BuyLimitsView: OrdersMessageUtils.MessageFns<GetMaxLotsResponse_BuyLimitsView> = {\n  encode(message: GetMaxLotsResponse_BuyLimitsView, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.buyMoneyAmount !== undefined) {\n      Quotation.encode(message.buyMoneyAmount, writer.uint32(10).fork()).join();\n    }\n    if (message.buyMaxLots !== 0) {\n      writer.uint32(16).int64(message.buyMaxLots);\n    }\n    if (message.buyMaxMarketLots !== 0) {\n      writer.uint32(24).int64(message.buyMaxMarketLots);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetMaxLotsResponse_BuyLimitsView {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetMaxLotsResponse_BuyLimitsView();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.buyMoneyAmount = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.buyMaxLots = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.buyMaxMarketLots = longToNumber(reader.int64());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetMaxLotsResponse_BuyLimitsView {\n    return {\n      buyMoneyAmount: isSet(object.buyMoneyAmount) ? Quotation.fromJSON(object.buyMoneyAmount) : undefined,\n      buyMaxLots: isSet(object.buyMaxLots) ? globalThis.Number(object.buyMaxLots) : 0,\n      buyMaxMarketLots: isSet(object.buyMaxMarketLots) ? globalThis.Number(object.buyMaxMarketLots) : 0,\n    };\n  },\n\n  toJSON(message: GetMaxLotsResponse_BuyLimitsView): unknown {\n    const obj: any = {};\n    if (message.buyMoneyAmount !== undefined) {\n      obj.buyMoneyAmount = Quotation.toJSON(message.buyMoneyAmount);\n    }\n    if (message.buyMaxLots !== 0) {\n      obj.buyMaxLots = Math.round(message.buyMaxLots);\n    }\n    if (message.buyMaxMarketLots !== 0) {\n      obj.buyMaxMarketLots = Math.round(message.buyMaxMarketLots);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetMaxLotsResponse_BuyLimitsView>): GetMaxLotsResponse_BuyLimitsView {\n    return GetMaxLotsResponse_BuyLimitsView.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetMaxLotsResponse_BuyLimitsView>): GetMaxLotsResponse_BuyLimitsView {\n    const message = createBaseGetMaxLotsResponse_BuyLimitsView();\n    message.buyMoneyAmount = (object.buyMoneyAmount !== undefined && object.buyMoneyAmount !== null)\n      ? Quotation.fromPartial(object.buyMoneyAmount)\n      : undefined;\n    message.buyMaxLots = object.buyMaxLots ?? 0;\n    message.buyMaxMarketLots = object.buyMaxMarketLots ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetMaxLotsResponse_SellLimitsView(): GetMaxLotsResponse_SellLimitsView {\n  return { sellMaxLots: 0 };\n}\n\nexport const GetMaxLotsResponse_SellLimitsView: OrdersMessageUtils.MessageFns<GetMaxLotsResponse_SellLimitsView> = {\n  encode(message: GetMaxLotsResponse_SellLimitsView, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.sellMaxLots !== 0) {\n      writer.uint32(8).int64(message.sellMaxLots);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetMaxLotsResponse_SellLimitsView {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetMaxLotsResponse_SellLimitsView();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.sellMaxLots = longToNumber(reader.int64());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetMaxLotsResponse_SellLimitsView {\n    return { sellMaxLots: isSet(object.sellMaxLots) ? globalThis.Number(object.sellMaxLots) : 0 };\n  },\n\n  toJSON(message: GetMaxLotsResponse_SellLimitsView): unknown {\n    const obj: any = {};\n    if (message.sellMaxLots !== 0) {\n      obj.sellMaxLots = Math.round(message.sellMaxLots);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetMaxLotsResponse_SellLimitsView>): GetMaxLotsResponse_SellLimitsView {\n    return GetMaxLotsResponse_SellLimitsView.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetMaxLotsResponse_SellLimitsView>): GetMaxLotsResponse_SellLimitsView {\n    const message = createBaseGetMaxLotsResponse_SellLimitsView();\n    message.sellMaxLots = object.sellMaxLots ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetOrderPriceRequest(): GetOrderPriceRequest {\n  return { accountId: \"\", instrumentId: \"\", price: undefined, direction: 0, quantity: 0 };\n}\n\nexport const GetOrderPriceRequest: OrdersMessageUtils.MessageFns<GetOrderPriceRequest> = {\n  encode(message: GetOrderPriceRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(26).fork()).join();\n    }\n    if (message.direction !== 0) {\n      writer.uint32(96).int32(message.direction);\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(104).int64(message.quantity);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrderPriceRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrderPriceRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrderPriceRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n    };\n  },\n\n  toJSON(message: GetOrderPriceRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.direction !== 0) {\n      obj.direction = orderDirectionToJSON(message.direction);\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrderPriceRequest>): GetOrderPriceRequest {\n    return GetOrderPriceRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrderPriceRequest>): GetOrderPriceRequest {\n    const message = createBaseGetOrderPriceRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.direction = object.direction ?? 0;\n    message.quantity = object.quantity ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetOrderPriceResponse(): GetOrderPriceResponse {\n  return {\n    totalOrderAmount: undefined,\n    initialOrderAmount: undefined,\n    lotsRequested: 0,\n    executedCommission: undefined,\n    executedCommissionRub: undefined,\n    serviceCommission: undefined,\n    dealCommission: undefined,\n    extraBond: undefined,\n    extraFuture: undefined,\n  };\n}\n\nexport const GetOrderPriceResponse: OrdersMessageUtils.MessageFns<GetOrderPriceResponse> = {\n  encode(message: GetOrderPriceResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.totalOrderAmount !== undefined) {\n      MoneyValue.encode(message.totalOrderAmount, writer.uint32(10).fork()).join();\n    }\n    if (message.initialOrderAmount !== undefined) {\n      MoneyValue.encode(message.initialOrderAmount, writer.uint32(42).fork()).join();\n    }\n    if (message.lotsRequested !== 0) {\n      writer.uint32(24).int64(message.lotsRequested);\n    }\n    if (message.executedCommission !== undefined) {\n      MoneyValue.encode(message.executedCommission, writer.uint32(58).fork()).join();\n    }\n    if (message.executedCommissionRub !== undefined) {\n      MoneyValue.encode(message.executedCommissionRub, writer.uint32(66).fork()).join();\n    }\n    if (message.serviceCommission !== undefined) {\n      MoneyValue.encode(message.serviceCommission, writer.uint32(74).fork()).join();\n    }\n    if (message.dealCommission !== undefined) {\n      MoneyValue.encode(message.dealCommission, writer.uint32(82).fork()).join();\n    }\n    if (message.extraBond !== undefined) {\n      GetOrderPriceResponse_ExtraBond.encode(message.extraBond, writer.uint32(98).fork()).join();\n    }\n    if (message.extraFuture !== undefined) {\n      GetOrderPriceResponse_ExtraFuture.encode(message.extraFuture, writer.uint32(106).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrderPriceResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrderPriceResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.totalOrderAmount = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.initialOrderAmount = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.lotsRequested = longToNumber(reader.int64());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.executedCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.executedCommissionRub = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.serviceCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.dealCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.extraBond = GetOrderPriceResponse_ExtraBond.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.extraFuture = GetOrderPriceResponse_ExtraFuture.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrderPriceResponse {\n    return {\n      totalOrderAmount: isSet(object.totalOrderAmount) ? MoneyValue.fromJSON(object.totalOrderAmount) : undefined,\n      initialOrderAmount: isSet(object.initialOrderAmount) ? MoneyValue.fromJSON(object.initialOrderAmount) : undefined,\n      lotsRequested: isSet(object.lotsRequested) ? globalThis.Number(object.lotsRequested) : 0,\n      executedCommission: isSet(object.executedCommission) ? MoneyValue.fromJSON(object.executedCommission) : undefined,\n      executedCommissionRub: isSet(object.executedCommissionRub)\n        ? MoneyValue.fromJSON(object.executedCommissionRub)\n        : undefined,\n      serviceCommission: isSet(object.serviceCommission) ? MoneyValue.fromJSON(object.serviceCommission) : undefined,\n      dealCommission: isSet(object.dealCommission) ? MoneyValue.fromJSON(object.dealCommission) : undefined,\n      extraBond: isSet(object.extraBond) ? GetOrderPriceResponse_ExtraBond.fromJSON(object.extraBond) : undefined,\n      extraFuture: isSet(object.extraFuture)\n        ? GetOrderPriceResponse_ExtraFuture.fromJSON(object.extraFuture)\n        : undefined,\n    };\n  },\n\n  toJSON(message: GetOrderPriceResponse): unknown {\n    const obj: any = {};\n    if (message.totalOrderAmount !== undefined) {\n      obj.totalOrderAmount = MoneyValue.toJSON(message.totalOrderAmount);\n    }\n    if (message.initialOrderAmount !== undefined) {\n      obj.initialOrderAmount = MoneyValue.toJSON(message.initialOrderAmount);\n    }\n    if (message.lotsRequested !== 0) {\n      obj.lotsRequested = Math.round(message.lotsRequested);\n    }\n    if (message.executedCommission !== undefined) {\n      obj.executedCommission = MoneyValue.toJSON(message.executedCommission);\n    }\n    if (message.executedCommissionRub !== undefined) {\n      obj.executedCommissionRub = MoneyValue.toJSON(message.executedCommissionRub);\n    }\n    if (message.serviceCommission !== undefined) {\n      obj.serviceCommission = MoneyValue.toJSON(message.serviceCommission);\n    }\n    if (message.dealCommission !== undefined) {\n      obj.dealCommission = MoneyValue.toJSON(message.dealCommission);\n    }\n    if (message.extraBond !== undefined) {\n      obj.extraBond = GetOrderPriceResponse_ExtraBond.toJSON(message.extraBond);\n    }\n    if (message.extraFuture !== undefined) {\n      obj.extraFuture = GetOrderPriceResponse_ExtraFuture.toJSON(message.extraFuture);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrderPriceResponse>): GetOrderPriceResponse {\n    return GetOrderPriceResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrderPriceResponse>): GetOrderPriceResponse {\n    const message = createBaseGetOrderPriceResponse();\n    message.totalOrderAmount = (object.totalOrderAmount !== undefined && object.totalOrderAmount !== null)\n      ? MoneyValue.fromPartial(object.totalOrderAmount)\n      : undefined;\n    message.initialOrderAmount = (object.initialOrderAmount !== undefined && object.initialOrderAmount !== null)\n      ? MoneyValue.fromPartial(object.initialOrderAmount)\n      : undefined;\n    message.lotsRequested = object.lotsRequested ?? 0;\n    message.executedCommission = (object.executedCommission !== undefined && object.executedCommission !== null)\n      ? MoneyValue.fromPartial(object.executedCommission)\n      : undefined;\n    message.executedCommissionRub =\n      (object.executedCommissionRub !== undefined && object.executedCommissionRub !== null)\n        ? MoneyValue.fromPartial(object.executedCommissionRub)\n        : undefined;\n    message.serviceCommission = (object.serviceCommission !== undefined && object.serviceCommission !== null)\n      ? MoneyValue.fromPartial(object.serviceCommission)\n      : undefined;\n    message.dealCommission = (object.dealCommission !== undefined && object.dealCommission !== null)\n      ? MoneyValue.fromPartial(object.dealCommission)\n      : undefined;\n    message.extraBond = (object.extraBond !== undefined && object.extraBond !== null)\n      ? GetOrderPriceResponse_ExtraBond.fromPartial(object.extraBond)\n      : undefined;\n    message.extraFuture = (object.extraFuture !== undefined && object.extraFuture !== null)\n      ? GetOrderPriceResponse_ExtraFuture.fromPartial(object.extraFuture)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetOrderPriceResponse_ExtraBond(): GetOrderPriceResponse_ExtraBond {\n  return { aciValue: undefined, nominalConversionRate: undefined };\n}\n\nexport const GetOrderPriceResponse_ExtraBond: OrdersMessageUtils.MessageFns<GetOrderPriceResponse_ExtraBond> = {\n  encode(message: GetOrderPriceResponse_ExtraBond, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.aciValue !== undefined) {\n      MoneyValue.encode(message.aciValue, writer.uint32(18).fork()).join();\n    }\n    if (message.nominalConversionRate !== undefined) {\n      Quotation.encode(message.nominalConversionRate, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrderPriceResponse_ExtraBond {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrderPriceResponse_ExtraBond();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.aciValue = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.nominalConversionRate = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrderPriceResponse_ExtraBond {\n    return {\n      aciValue: isSet(object.aciValue) ? MoneyValue.fromJSON(object.aciValue) : undefined,\n      nominalConversionRate: isSet(object.nominalConversionRate)\n        ? Quotation.fromJSON(object.nominalConversionRate)\n        : undefined,\n    };\n  },\n\n  toJSON(message: GetOrderPriceResponse_ExtraBond): unknown {\n    const obj: any = {};\n    if (message.aciValue !== undefined) {\n      obj.aciValue = MoneyValue.toJSON(message.aciValue);\n    }\n    if (message.nominalConversionRate !== undefined) {\n      obj.nominalConversionRate = Quotation.toJSON(message.nominalConversionRate);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrderPriceResponse_ExtraBond>): GetOrderPriceResponse_ExtraBond {\n    return GetOrderPriceResponse_ExtraBond.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrderPriceResponse_ExtraBond>): GetOrderPriceResponse_ExtraBond {\n    const message = createBaseGetOrderPriceResponse_ExtraBond();\n    message.aciValue = (object.aciValue !== undefined && object.aciValue !== null)\n      ? MoneyValue.fromPartial(object.aciValue)\n      : undefined;\n    message.nominalConversionRate =\n      (object.nominalConversionRate !== undefined && object.nominalConversionRate !== null)\n        ? Quotation.fromPartial(object.nominalConversionRate)\n        : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetOrderPriceResponse_ExtraFuture(): GetOrderPriceResponse_ExtraFuture {\n  return { initialMargin: undefined };\n}\n\nexport const GetOrderPriceResponse_ExtraFuture: OrdersMessageUtils.MessageFns<GetOrderPriceResponse_ExtraFuture> = {\n  encode(message: GetOrderPriceResponse_ExtraFuture, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.initialMargin !== undefined) {\n      MoneyValue.encode(message.initialMargin, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrderPriceResponse_ExtraFuture {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrderPriceResponse_ExtraFuture();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.initialMargin = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrderPriceResponse_ExtraFuture {\n    return { initialMargin: isSet(object.initialMargin) ? MoneyValue.fromJSON(object.initialMargin) : undefined };\n  },\n\n  toJSON(message: GetOrderPriceResponse_ExtraFuture): unknown {\n    const obj: any = {};\n    if (message.initialMargin !== undefined) {\n      obj.initialMargin = MoneyValue.toJSON(message.initialMargin);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrderPriceResponse_ExtraFuture>): GetOrderPriceResponse_ExtraFuture {\n    return GetOrderPriceResponse_ExtraFuture.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrderPriceResponse_ExtraFuture>): GetOrderPriceResponse_ExtraFuture {\n    const message = createBaseGetOrderPriceResponse_ExtraFuture();\n    message.initialMargin = (object.initialMargin !== undefined && object.initialMargin !== null)\n      ? MoneyValue.fromPartial(object.initialMargin)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderStateStreamRequest(): OrderStateStreamRequest {\n  return { accounts: [], pingDelayMs: undefined };\n}\n\nexport const OrderStateStreamRequest: OrdersMessageUtils.MessageFns<OrderStateStreamRequest> = {\n  encode(message: OrderStateStreamRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.accounts) {\n      writer.uint32(10).string(v!);\n    }\n    if (message.pingDelayMs !== undefined) {\n      writer.uint32(120).int32(message.pingDelayMs);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderStateStreamRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderStateStreamRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accounts.push(reader.string());\n          continue;\n        }\n        case 15: {\n          if (tag !== 120) {\n            break;\n          }\n\n          message.pingDelayMs = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderStateStreamRequest {\n    return {\n      accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e: any) => globalThis.String(e)) : [],\n      pingDelayMs: isSet(object.pingDelayMs) ? globalThis.Number(object.pingDelayMs) : undefined,\n    };\n  },\n\n  toJSON(message: OrderStateStreamRequest): unknown {\n    const obj: any = {};\n    if (message.accounts?.length) {\n      obj.accounts = message.accounts;\n    }\n    if (message.pingDelayMs !== undefined) {\n      obj.pingDelayMs = Math.round(message.pingDelayMs);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderStateStreamRequest>): OrderStateStreamRequest {\n    return OrderStateStreamRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderStateStreamRequest>): OrderStateStreamRequest {\n    const message = createBaseOrderStateStreamRequest();\n    message.accounts = object.accounts?.map((e) => e) || [];\n    message.pingDelayMs = object.pingDelayMs ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseSubscriptionResponse(): SubscriptionResponse {\n  return { trackingId: \"\", status: 0, streamId: \"\", accounts: [], error: undefined };\n}\n\nexport const SubscriptionResponse: OrdersMessageUtils.MessageFns<SubscriptionResponse> = {\n  encode(message: SubscriptionResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.trackingId !== \"\") {\n      writer.uint32(10).string(message.trackingId);\n    }\n    if (message.status !== 0) {\n      writer.uint32(16).int32(message.status);\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(34).string(message.streamId);\n    }\n    for (const v of message.accounts) {\n      writer.uint32(42).string(v!);\n    }\n    if (message.error !== undefined) {\n      ErrorDetail.encode(message.error, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscriptionResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscriptionResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.status = reader.int32() as any;\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.accounts.push(reader.string());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.error = ErrorDetail.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscriptionResponse {\n    return {\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      status: isSet(object.status) ? resultSubscriptionStatusFromJSON(object.status) : 0,\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n      accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e: any) => globalThis.String(e)) : [],\n      error: isSet(object.error) ? ErrorDetail.fromJSON(object.error) : undefined,\n    };\n  },\n\n  toJSON(message: SubscriptionResponse): unknown {\n    const obj: any = {};\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.status !== 0) {\n      obj.status = resultSubscriptionStatusToJSON(message.status);\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    if (message.accounts?.length) {\n      obj.accounts = message.accounts;\n    }\n    if (message.error !== undefined) {\n      obj.error = ErrorDetail.toJSON(message.error);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscriptionResponse>): SubscriptionResponse {\n    return SubscriptionResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscriptionResponse>): SubscriptionResponse {\n    const message = createBaseSubscriptionResponse();\n    message.trackingId = object.trackingId ?? \"\";\n    message.status = object.status ?? 0;\n    message.streamId = object.streamId ?? \"\";\n    message.accounts = object.accounts?.map((e) => e) || [];\n    message.error = (object.error !== undefined && object.error !== null)\n      ? ErrorDetail.fromPartial(object.error)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderStateStreamResponse(): OrderStateStreamResponse {\n  return { orderState: undefined, ping: undefined, subscription: undefined };\n}\n\nexport const OrderStateStreamResponse: OrdersMessageUtils.MessageFns<OrderStateStreamResponse> = {\n  encode(message: OrderStateStreamResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderState !== undefined) {\n      OrderStateStreamResponse_OrderState.encode(message.orderState, writer.uint32(10).fork()).join();\n    }\n    if (message.ping !== undefined) {\n      Ping.encode(message.ping, writer.uint32(18).fork()).join();\n    }\n    if (message.subscription !== undefined) {\n      SubscriptionResponse.encode(message.subscription, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderStateStreamResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderStateStreamResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderState = OrderStateStreamResponse_OrderState.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ping = Ping.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subscription = SubscriptionResponse.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderStateStreamResponse {\n    return {\n      orderState: isSet(object.orderState)\n        ? OrderStateStreamResponse_OrderState.fromJSON(object.orderState)\n        : undefined,\n      ping: isSet(object.ping) ? Ping.fromJSON(object.ping) : undefined,\n      subscription: isSet(object.subscription) ? SubscriptionResponse.fromJSON(object.subscription) : undefined,\n    };\n  },\n\n  toJSON(message: OrderStateStreamResponse): unknown {\n    const obj: any = {};\n    if (message.orderState !== undefined) {\n      obj.orderState = OrderStateStreamResponse_OrderState.toJSON(message.orderState);\n    }\n    if (message.ping !== undefined) {\n      obj.ping = Ping.toJSON(message.ping);\n    }\n    if (message.subscription !== undefined) {\n      obj.subscription = SubscriptionResponse.toJSON(message.subscription);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderStateStreamResponse>): OrderStateStreamResponse {\n    return OrderStateStreamResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderStateStreamResponse>): OrderStateStreamResponse {\n    const message = createBaseOrderStateStreamResponse();\n    message.orderState = (object.orderState !== undefined && object.orderState !== null)\n      ? OrderStateStreamResponse_OrderState.fromPartial(object.orderState)\n      : undefined;\n    message.ping = (object.ping !== undefined && object.ping !== null) ? Ping.fromPartial(object.ping) : undefined;\n    message.subscription = (object.subscription !== undefined && object.subscription !== null)\n      ? SubscriptionResponse.fromPartial(object.subscription)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderStateStreamResponse_OrderState(): OrderStateStreamResponse_OrderState {\n  return {\n    orderId: \"\",\n    orderRequestId: undefined,\n    clientCode: \"\",\n    createdAt: undefined,\n    executionReportStatus: 0,\n    statusInfo: undefined,\n    ticker: \"\",\n    classCode: \"\",\n    lotSize: 0,\n    direction: 0,\n    timeInForce: 0,\n    orderType: 0,\n    accountId: \"\",\n    initialOrderPrice: undefined,\n    orderPrice: undefined,\n    amount: undefined,\n    executedOrderPrice: undefined,\n    currency: \"\",\n    lotsRequested: 0,\n    lotsExecuted: 0,\n    lotsLeft: 0,\n    lotsCancelled: 0,\n    marker: undefined,\n    trades: [],\n    completionTime: undefined,\n    exchange: \"\",\n    instrumentUid: \"\",\n  };\n}\n\nexport const OrderStateStreamResponse_OrderState: OrdersMessageUtils.MessageFns<OrderStateStreamResponse_OrderState> = {\n  encode(message: OrderStateStreamResponse_OrderState, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderId !== \"\") {\n      writer.uint32(10).string(message.orderId);\n    }\n    if (message.orderRequestId !== undefined) {\n      writer.uint32(18).string(message.orderRequestId);\n    }\n    if (message.clientCode !== \"\") {\n      writer.uint32(26).string(message.clientCode);\n    }\n    if (message.createdAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.createdAt), writer.uint32(34).fork()).join();\n    }\n    if (message.executionReportStatus !== 0) {\n      writer.uint32(40).int32(message.executionReportStatus);\n    }\n    if (message.statusInfo !== undefined) {\n      writer.uint32(48).int32(message.statusInfo);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(58).string(message.ticker);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(66).string(message.classCode);\n    }\n    if (message.lotSize !== 0) {\n      writer.uint32(72).int32(message.lotSize);\n    }\n    if (message.direction !== 0) {\n      writer.uint32(80).int32(message.direction);\n    }\n    if (message.timeInForce !== 0) {\n      writer.uint32(88).int32(message.timeInForce);\n    }\n    if (message.orderType !== 0) {\n      writer.uint32(96).int32(message.orderType);\n    }\n    if (message.accountId !== \"\") {\n      writer.uint32(106).string(message.accountId);\n    }\n    if (message.initialOrderPrice !== undefined) {\n      MoneyValue.encode(message.initialOrderPrice, writer.uint32(178).fork()).join();\n    }\n    if (message.orderPrice !== undefined) {\n      MoneyValue.encode(message.orderPrice, writer.uint32(186).fork()).join();\n    }\n    if (message.amount !== undefined) {\n      MoneyValue.encode(message.amount, writer.uint32(194).fork()).join();\n    }\n    if (message.executedOrderPrice !== undefined) {\n      MoneyValue.encode(message.executedOrderPrice, writer.uint32(202).fork()).join();\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(210).string(message.currency);\n    }\n    if (message.lotsRequested !== 0) {\n      writer.uint32(216).int64(message.lotsRequested);\n    }\n    if (message.lotsExecuted !== 0) {\n      writer.uint32(224).int64(message.lotsExecuted);\n    }\n    if (message.lotsLeft !== 0) {\n      writer.uint32(232).int64(message.lotsLeft);\n    }\n    if (message.lotsCancelled !== 0) {\n      writer.uint32(240).int64(message.lotsCancelled);\n    }\n    if (message.marker !== undefined) {\n      writer.uint32(248).int32(message.marker);\n    }\n    for (const v of message.trades) {\n      OrderTrade.encode(v!, writer.uint32(266).fork()).join();\n    }\n    if (message.completionTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.completionTime), writer.uint32(282).fork()).join();\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(290).string(message.exchange);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(330).string(message.instrumentUid);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderStateStreamResponse_OrderState {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderStateStreamResponse_OrderState();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.orderRequestId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.clientCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.createdAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.executionReportStatus = reader.int32() as any;\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.statusInfo = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.lotSize = reader.int32();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.timeInForce = reader.int32() as any;\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.orderType = reader.int32() as any;\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.initialOrderPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.orderPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.amount = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          message.executedOrderPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 27: {\n          if (tag !== 216) {\n            break;\n          }\n\n          message.lotsRequested = longToNumber(reader.int64());\n          continue;\n        }\n        case 28: {\n          if (tag !== 224) {\n            break;\n          }\n\n          message.lotsExecuted = longToNumber(reader.int64());\n          continue;\n        }\n        case 29: {\n          if (tag !== 232) {\n            break;\n          }\n\n          message.lotsLeft = longToNumber(reader.int64());\n          continue;\n        }\n        case 30: {\n          if (tag !== 240) {\n            break;\n          }\n\n          message.lotsCancelled = longToNumber(reader.int64());\n          continue;\n        }\n        case 31: {\n          if (tag !== 248) {\n            break;\n          }\n\n          message.marker = reader.int32() as any;\n          continue;\n        }\n        case 33: {\n          if (tag !== 266) {\n            break;\n          }\n\n          message.trades.push(OrderTrade.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 35: {\n          if (tag !== 282) {\n            break;\n          }\n\n          message.completionTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 36: {\n          if (tag !== 290) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 41: {\n          if (tag !== 330) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderStateStreamResponse_OrderState {\n    return {\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      orderRequestId: isSet(object.orderRequestId) ? globalThis.String(object.orderRequestId) : undefined,\n      clientCode: isSet(object.clientCode) ? globalThis.String(object.clientCode) : \"\",\n      createdAt: isSet(object.createdAt) ? fromJsonTimestamp(object.createdAt) : undefined,\n      executionReportStatus: isSet(object.executionReportStatus)\n        ? orderExecutionReportStatusFromJSON(object.executionReportStatus)\n        : 0,\n      statusInfo: isSet(object.statusInfo)\n        ? orderStateStreamResponse_StatusCauseInfoFromJSON(object.statusInfo)\n        : undefined,\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      lotSize: isSet(object.lotSize) ? globalThis.Number(object.lotSize) : 0,\n      direction: isSet(object.direction) ? orderDirectionFromJSON(object.direction) : 0,\n      timeInForce: isSet(object.timeInForce) ? timeInForceTypeFromJSON(object.timeInForce) : 0,\n      orderType: isSet(object.orderType) ? orderTypeFromJSON(object.orderType) : 0,\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      initialOrderPrice: isSet(object.initialOrderPrice) ? MoneyValue.fromJSON(object.initialOrderPrice) : undefined,\n      orderPrice: isSet(object.orderPrice) ? MoneyValue.fromJSON(object.orderPrice) : undefined,\n      amount: isSet(object.amount) ? MoneyValue.fromJSON(object.amount) : undefined,\n      executedOrderPrice: isSet(object.executedOrderPrice) ? MoneyValue.fromJSON(object.executedOrderPrice) : undefined,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      lotsRequested: isSet(object.lotsRequested) ? globalThis.Number(object.lotsRequested) : 0,\n      lotsExecuted: isSet(object.lotsExecuted) ? globalThis.Number(object.lotsExecuted) : 0,\n      lotsLeft: isSet(object.lotsLeft) ? globalThis.Number(object.lotsLeft) : 0,\n      lotsCancelled: isSet(object.lotsCancelled) ? globalThis.Number(object.lotsCancelled) : 0,\n      marker: isSet(object.marker) ? orderStateStreamResponse_MarkerTypeFromJSON(object.marker) : undefined,\n      trades: globalThis.Array.isArray(object?.trades) ? object.trades.map((e: any) => OrderTrade.fromJSON(e)) : [],\n      completionTime: isSet(object.completionTime) ? fromJsonTimestamp(object.completionTime) : undefined,\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n    };\n  },\n\n  toJSON(message: OrderStateStreamResponse_OrderState): unknown {\n    const obj: any = {};\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.orderRequestId !== undefined) {\n      obj.orderRequestId = message.orderRequestId;\n    }\n    if (message.clientCode !== \"\") {\n      obj.clientCode = message.clientCode;\n    }\n    if (message.createdAt !== undefined) {\n      obj.createdAt = message.createdAt.toISOString();\n    }\n    if (message.executionReportStatus !== 0) {\n      obj.executionReportStatus = orderExecutionReportStatusToJSON(message.executionReportStatus);\n    }\n    if (message.statusInfo !== undefined) {\n      obj.statusInfo = orderStateStreamResponse_StatusCauseInfoToJSON(message.statusInfo);\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.lotSize !== 0) {\n      obj.lotSize = Math.round(message.lotSize);\n    }\n    if (message.direction !== 0) {\n      obj.direction = orderDirectionToJSON(message.direction);\n    }\n    if (message.timeInForce !== 0) {\n      obj.timeInForce = timeInForceTypeToJSON(message.timeInForce);\n    }\n    if (message.orderType !== 0) {\n      obj.orderType = orderTypeToJSON(message.orderType);\n    }\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.initialOrderPrice !== undefined) {\n      obj.initialOrderPrice = MoneyValue.toJSON(message.initialOrderPrice);\n    }\n    if (message.orderPrice !== undefined) {\n      obj.orderPrice = MoneyValue.toJSON(message.orderPrice);\n    }\n    if (message.amount !== undefined) {\n      obj.amount = MoneyValue.toJSON(message.amount);\n    }\n    if (message.executedOrderPrice !== undefined) {\n      obj.executedOrderPrice = MoneyValue.toJSON(message.executedOrderPrice);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.lotsRequested !== 0) {\n      obj.lotsRequested = Math.round(message.lotsRequested);\n    }\n    if (message.lotsExecuted !== 0) {\n      obj.lotsExecuted = Math.round(message.lotsExecuted);\n    }\n    if (message.lotsLeft !== 0) {\n      obj.lotsLeft = Math.round(message.lotsLeft);\n    }\n    if (message.lotsCancelled !== 0) {\n      obj.lotsCancelled = Math.round(message.lotsCancelled);\n    }\n    if (message.marker !== undefined) {\n      obj.marker = orderStateStreamResponse_MarkerTypeToJSON(message.marker);\n    }\n    if (message.trades?.length) {\n      obj.trades = message.trades.map((e) => OrderTrade.toJSON(e));\n    }\n    if (message.completionTime !== undefined) {\n      obj.completionTime = message.completionTime.toISOString();\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderStateStreamResponse_OrderState>): OrderStateStreamResponse_OrderState {\n    return OrderStateStreamResponse_OrderState.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderStateStreamResponse_OrderState>): OrderStateStreamResponse_OrderState {\n    const message = createBaseOrderStateStreamResponse_OrderState();\n    message.orderId = object.orderId ?? \"\";\n    message.orderRequestId = object.orderRequestId ?? undefined;\n    message.clientCode = object.clientCode ?? \"\";\n    message.createdAt = object.createdAt ?? undefined;\n    message.executionReportStatus = object.executionReportStatus ?? 0;\n    message.statusInfo = object.statusInfo ?? undefined;\n    message.ticker = object.ticker ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.lotSize = object.lotSize ?? 0;\n    message.direction = object.direction ?? 0;\n    message.timeInForce = object.timeInForce ?? 0;\n    message.orderType = object.orderType ?? 0;\n    message.accountId = object.accountId ?? \"\";\n    message.initialOrderPrice = (object.initialOrderPrice !== undefined && object.initialOrderPrice !== null)\n      ? MoneyValue.fromPartial(object.initialOrderPrice)\n      : undefined;\n    message.orderPrice = (object.orderPrice !== undefined && object.orderPrice !== null)\n      ? MoneyValue.fromPartial(object.orderPrice)\n      : undefined;\n    message.amount = (object.amount !== undefined && object.amount !== null)\n      ? MoneyValue.fromPartial(object.amount)\n      : undefined;\n    message.executedOrderPrice = (object.executedOrderPrice !== undefined && object.executedOrderPrice !== null)\n      ? MoneyValue.fromPartial(object.executedOrderPrice)\n      : undefined;\n    message.currency = object.currency ?? \"\";\n    message.lotsRequested = object.lotsRequested ?? 0;\n    message.lotsExecuted = object.lotsExecuted ?? 0;\n    message.lotsLeft = object.lotsLeft ?? 0;\n    message.lotsCancelled = object.lotsCancelled ?? 0;\n    message.marker = object.marker ?? undefined;\n    message.trades = object.trades?.map((e) => OrderTrade.fromPartial(e)) || [];\n    message.completionTime = object.completionTime ?? undefined;\n    message.exchange = object.exchange ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    return message;\n  },\n};\n\nexport type OrdersStreamServiceDefinition = typeof OrdersStreamServiceDefinition;\nexport const OrdersStreamServiceDefinition = {\n  name: \"OrdersStreamService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.OrdersStreamService\",\n  methods: {\n    /** Stream сделок пользователя */\n    tradesStream: {\n      name: \"TradesStream\",\n      requestType: TradesStreamRequest,\n      requestStream: false,\n      responseType: TradesStreamResponse,\n      responseStream: true,\n      options: {},\n    },\n    /** Stream поручений пользователя. Перед работой прочитайте [статью](https://russianinvestments.github.io/investAPI/orders_state_stream/). */\n    orderStateStream: {\n      name: \"OrderStateStream\",\n      requestType: OrderStateStreamRequest,\n      requestStream: false,\n      responseType: OrderStateStreamResponse,\n      responseStream: true,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface OrdersStreamServiceImplementation<CallContextExt = {}> {\n  /** Stream сделок пользователя */\n  tradesStream(\n    request: TradesStreamRequest,\n    context: CallContext & CallContextExt,\n  ): ServerStreamingMethodResult<DeepPartial<TradesStreamResponse>>;\n  /** Stream поручений пользователя. Перед работой прочитайте [статью](https://russianinvestments.github.io/investAPI/orders_state_stream/). */\n  orderStateStream(\n    request: OrderStateStreamRequest,\n    context: CallContext & CallContextExt,\n  ): ServerStreamingMethodResult<DeepPartial<OrderStateStreamResponse>>;\n}\n\nexport interface OrdersStreamServiceClient<CallOptionsExt = {}> {\n  /** Stream сделок пользователя */\n  tradesStream(\n    request: DeepPartial<TradesStreamRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): AsyncIterable<TradesStreamResponse>;\n  /** Stream поручений пользователя. Перед работой прочитайте [статью](https://russianinvestments.github.io/investAPI/orders_state_stream/). */\n  orderStateStream(\n    request: DeepPartial<OrderStateStreamRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): AsyncIterable<OrderStateStreamResponse>;\n}\n\n/**\n * Сервис предназначен для работы с торговыми поручениями:</br> **1**.\n * выставление;</br> **2**. отмена;</br> **3**. получение статуса;</br> **4**.\n * расчёт полной стоимости;</br> **5**. получение списка заявок.\n */\nexport type OrdersServiceDefinition = typeof OrdersServiceDefinition;\nexport const OrdersServiceDefinition = {\n  name: \"OrdersService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.OrdersService\",\n  methods: {\n    /** Метод выставления заявки. */\n    postOrder: {\n      name: \"PostOrder\",\n      requestType: PostOrderRequest,\n      requestStream: false,\n      responseType: PostOrderResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Асинхронный метод выставления заявки. */\n    postOrderAsync: {\n      name: \"PostOrderAsync\",\n      requestType: PostOrderAsyncRequest,\n      requestStream: false,\n      responseType: PostOrderAsyncResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Метод отмены биржевой заявки. */\n    cancelOrder: {\n      name: \"CancelOrder\",\n      requestType: CancelOrderRequest,\n      requestStream: false,\n      responseType: CancelOrderResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Метод получения статуса торгового поручения. */\n    getOrderState: {\n      name: \"GetOrderState\",\n      requestType: GetOrderStateRequest,\n      requestStream: false,\n      responseType: OrderState,\n      responseStream: false,\n      options: {},\n    },\n    /** Метод получения списка активных заявок по счёту. */\n    getOrders: {\n      name: \"GetOrders\",\n      requestType: GetOrdersRequest,\n      requestStream: false,\n      responseType: GetOrdersResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Метод изменения выставленной заявки. */\n    replaceOrder: {\n      name: \"ReplaceOrder\",\n      requestType: ReplaceOrderRequest,\n      requestStream: false,\n      responseType: PostOrderResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** расчет количества доступных для покупки/продажи лотов */\n    getMaxLots: {\n      name: \"GetMaxLots\",\n      requestType: GetMaxLotsRequest,\n      requestStream: false,\n      responseType: GetMaxLotsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Метод получения предварительной стоимости для лимитной заявки */\n    getOrderPrice: {\n      name: \"GetOrderPrice\",\n      requestType: GetOrderPriceRequest,\n      requestStream: false,\n      responseType: GetOrderPriceResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface OrdersServiceImplementation<CallContextExt = {}> {\n  /** Метод выставления заявки. */\n  postOrder(request: PostOrderRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PostOrderResponse>>;\n  /** Асинхронный метод выставления заявки. */\n  postOrderAsync(\n    request: PostOrderAsyncRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PostOrderAsyncResponse>>;\n  /** Метод отмены биржевой заявки. */\n  cancelOrder(\n    request: CancelOrderRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<CancelOrderResponse>>;\n  /** Метод получения статуса торгового поручения. */\n  getOrderState(request: GetOrderStateRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OrderState>>;\n  /** Метод получения списка активных заявок по счёту. */\n  getOrders(request: GetOrdersRequest, context: CallContext & CallContextExt): Promise<DeepPartial<GetOrdersResponse>>;\n  /** Метод изменения выставленной заявки. */\n  replaceOrder(\n    request: ReplaceOrderRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PostOrderResponse>>;\n  /** расчет количества доступных для покупки/продажи лотов */\n  getMaxLots(\n    request: GetMaxLotsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetMaxLotsResponse>>;\n  /** Метод получения предварительной стоимости для лимитной заявки */\n  getOrderPrice(\n    request: GetOrderPriceRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetOrderPriceResponse>>;\n}\n\nexport interface OrdersServiceClient<CallOptionsExt = {}> {\n  /** Метод выставления заявки. */\n  postOrder(request: DeepPartial<PostOrderRequest>, options?: CallOptions & CallOptionsExt): Promise<PostOrderResponse>;\n  /** Асинхронный метод выставления заявки. */\n  postOrderAsync(\n    request: DeepPartial<PostOrderAsyncRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PostOrderAsyncResponse>;\n  /** Метод отмены биржевой заявки. */\n  cancelOrder(\n    request: DeepPartial<CancelOrderRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<CancelOrderResponse>;\n  /** Метод получения статуса торгового поручения. */\n  getOrderState(\n    request: DeepPartial<GetOrderStateRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OrderState>;\n  /** Метод получения списка активных заявок по счёту. */\n  getOrders(request: DeepPartial<GetOrdersRequest>, options?: CallOptions & CallOptionsExt): Promise<GetOrdersResponse>;\n  /** Метод изменения выставленной заявки. */\n  replaceOrder(\n    request: DeepPartial<ReplaceOrderRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PostOrderResponse>;\n  /** расчет количества доступных для покупки/продажи лотов */\n  getMaxLots(\n    request: DeepPartial<GetMaxLotsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetMaxLotsResponse>;\n  /** Метод получения предварительной стоимости для лимитной заявки */\n  getOrderPrice(\n    request: DeepPartial<GetOrderPriceRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetOrderPriceResponse>;\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\ntype ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void> };\n\n// interface MessageFns<T> {\n//   encode(message: T, writer?: BinaryWriter): BinaryWriter;\n//   decode(input: BinaryReader | Uint8Array, length?: number): T;\n//   fromJSON(object: any): T;\n//   toJSON(message: T): unknown;\n//   create(base?: DeepPartial<T>): T;\n//   fromPartial(object: DeepPartial<T>): T;\n// }\n\nexport declare namespace OrdersMessageUtils {\n  export interface MessageFns<T> {\n    encode(message: T, writer?: BinaryWriter): BinaryWriter;\n    decode(input: BinaryReader | Uint8Array, length?: number): T;\n    fromJSON(object: any): T;\n    toJSON(message: T): unknown;\n    create(base?: DeepPartial<T>): T;\n    fromPartial(object: DeepPartial<T>): T;\n  }\n\n}","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: operations.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport {\n  InstrumentType,\n  instrumentTypeFromJSON,\n  instrumentTypeToJSON,\n  MoneyValue,\n  Ping,\n  PingDelaySettings,\n  Quotation,\n} from \"./common\";\nimport { Timestamp } from \"./google/protobuf/timestamp\";\n\n/** Статус запрашиваемых операций. */\nexport enum OperationState {\n  /** OPERATION_STATE_UNSPECIFIED - Статус операции не определён. */\n  OPERATION_STATE_UNSPECIFIED = 0,\n  /** OPERATION_STATE_EXECUTED - Исполнена частично или полностью. */\n  OPERATION_STATE_EXECUTED = 1,\n  /** OPERATION_STATE_CANCELED - Отменена. */\n  OPERATION_STATE_CANCELED = 2,\n  /** OPERATION_STATE_PROGRESS - Исполняется. */\n  OPERATION_STATE_PROGRESS = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function operationStateFromJSON(object: any): OperationState {\n  switch (object) {\n    case 0:\n    case \"OPERATION_STATE_UNSPECIFIED\":\n      return OperationState.OPERATION_STATE_UNSPECIFIED;\n    case 1:\n    case \"OPERATION_STATE_EXECUTED\":\n      return OperationState.OPERATION_STATE_EXECUTED;\n    case 2:\n    case \"OPERATION_STATE_CANCELED\":\n      return OperationState.OPERATION_STATE_CANCELED;\n    case 3:\n    case \"OPERATION_STATE_PROGRESS\":\n      return OperationState.OPERATION_STATE_PROGRESS;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OperationState.UNRECOGNIZED;\n  }\n}\n\nexport function operationStateToJSON(object: OperationState): string {\n  switch (object) {\n    case OperationState.OPERATION_STATE_UNSPECIFIED:\n      return \"OPERATION_STATE_UNSPECIFIED\";\n    case OperationState.OPERATION_STATE_EXECUTED:\n      return \"OPERATION_STATE_EXECUTED\";\n    case OperationState.OPERATION_STATE_CANCELED:\n      return \"OPERATION_STATE_CANCELED\";\n    case OperationState.OPERATION_STATE_PROGRESS:\n      return \"OPERATION_STATE_PROGRESS\";\n    case OperationState.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип операции. */\nexport enum OperationType {\n  /** OPERATION_TYPE_UNSPECIFIED - Тип операции не определён. */\n  OPERATION_TYPE_UNSPECIFIED = 0,\n  /** OPERATION_TYPE_INPUT - Пополнение брокерского счёта. */\n  OPERATION_TYPE_INPUT = 1,\n  /** OPERATION_TYPE_BOND_TAX - Удержание НДФЛ по купонам. */\n  OPERATION_TYPE_BOND_TAX = 2,\n  /** OPERATION_TYPE_OUTPUT_SECURITIES - Вывод ЦБ. */\n  OPERATION_TYPE_OUTPUT_SECURITIES = 3,\n  /** OPERATION_TYPE_OVERNIGHT - Доход по сделке РЕПО овернайт. */\n  OPERATION_TYPE_OVERNIGHT = 4,\n  /** OPERATION_TYPE_TAX - Удержание налога. */\n  OPERATION_TYPE_TAX = 5,\n  /** OPERATION_TYPE_BOND_REPAYMENT_FULL - Полное погашение облигаций. */\n  OPERATION_TYPE_BOND_REPAYMENT_FULL = 6,\n  /** OPERATION_TYPE_SELL_CARD - Продажа ЦБ с карты. */\n  OPERATION_TYPE_SELL_CARD = 7,\n  /** OPERATION_TYPE_DIVIDEND_TAX - Удержание налога по дивидендам. */\n  OPERATION_TYPE_DIVIDEND_TAX = 8,\n  /** OPERATION_TYPE_OUTPUT - Вывод денежных средств. */\n  OPERATION_TYPE_OUTPUT = 9,\n  /** OPERATION_TYPE_BOND_REPAYMENT - Частичное погашение облигаций. */\n  OPERATION_TYPE_BOND_REPAYMENT = 10,\n  /** OPERATION_TYPE_TAX_CORRECTION - Корректировка налога. */\n  OPERATION_TYPE_TAX_CORRECTION = 11,\n  /** OPERATION_TYPE_SERVICE_FEE - Удержание комиссии за обслуживание брокерского счёта. */\n  OPERATION_TYPE_SERVICE_FEE = 12,\n  /** OPERATION_TYPE_BENEFIT_TAX - Удержание налога за материальную выгоду. */\n  OPERATION_TYPE_BENEFIT_TAX = 13,\n  /** OPERATION_TYPE_MARGIN_FEE - Удержание комиссии за непокрытую позицию. */\n  OPERATION_TYPE_MARGIN_FEE = 14,\n  /** OPERATION_TYPE_BUY - Покупка ЦБ. */\n  OPERATION_TYPE_BUY = 15,\n  /** OPERATION_TYPE_BUY_CARD - Покупка ЦБ с карты. */\n  OPERATION_TYPE_BUY_CARD = 16,\n  /** OPERATION_TYPE_INPUT_SECURITIES - Перевод ценных бумаг из другого депозитария. */\n  OPERATION_TYPE_INPUT_SECURITIES = 17,\n  /** OPERATION_TYPE_SELL_MARGIN - Продажа в результате Margin-call. */\n  OPERATION_TYPE_SELL_MARGIN = 18,\n  /** OPERATION_TYPE_BROKER_FEE - Удержание комиссии за операцию. */\n  OPERATION_TYPE_BROKER_FEE = 19,\n  /** OPERATION_TYPE_BUY_MARGIN - Покупка в результате Margin-call. */\n  OPERATION_TYPE_BUY_MARGIN = 20,\n  /** OPERATION_TYPE_DIVIDEND - Выплата дивидендов. */\n  OPERATION_TYPE_DIVIDEND = 21,\n  /** OPERATION_TYPE_SELL - Продажа ЦБ. */\n  OPERATION_TYPE_SELL = 22,\n  /** OPERATION_TYPE_COUPON - Выплата купонов. */\n  OPERATION_TYPE_COUPON = 23,\n  /** OPERATION_TYPE_SUCCESS_FEE - Удержание комиссии SuccessFee. */\n  OPERATION_TYPE_SUCCESS_FEE = 24,\n  /** OPERATION_TYPE_DIVIDEND_TRANSFER - Передача дивидендного дохода. */\n  OPERATION_TYPE_DIVIDEND_TRANSFER = 25,\n  /** OPERATION_TYPE_ACCRUING_VARMARGIN - Зачисление вариационной маржи. */\n  OPERATION_TYPE_ACCRUING_VARMARGIN = 26,\n  /** OPERATION_TYPE_WRITING_OFF_VARMARGIN - Списание вариационной маржи. */\n  OPERATION_TYPE_WRITING_OFF_VARMARGIN = 27,\n  /** OPERATION_TYPE_DELIVERY_BUY - Покупка в рамках экспирации фьючерсного контракта. */\n  OPERATION_TYPE_DELIVERY_BUY = 28,\n  /** OPERATION_TYPE_DELIVERY_SELL - Продажа в рамках экспирации фьючерсного контракта. */\n  OPERATION_TYPE_DELIVERY_SELL = 29,\n  /** OPERATION_TYPE_TRACK_MFEE - Комиссия за управление по счёту автоследования. */\n  OPERATION_TYPE_TRACK_MFEE = 30,\n  /** OPERATION_TYPE_TRACK_PFEE - Комиссия за результат по счёту автоследования. */\n  OPERATION_TYPE_TRACK_PFEE = 31,\n  /** OPERATION_TYPE_TAX_PROGRESSIVE - Удержание налога по ставке 15%. */\n  OPERATION_TYPE_TAX_PROGRESSIVE = 32,\n  /** OPERATION_TYPE_BOND_TAX_PROGRESSIVE - Удержание налога по купонам по ставке 15%. */\n  OPERATION_TYPE_BOND_TAX_PROGRESSIVE = 33,\n  /** OPERATION_TYPE_DIVIDEND_TAX_PROGRESSIVE - Удержание налога по дивидендам по ставке 15%. */\n  OPERATION_TYPE_DIVIDEND_TAX_PROGRESSIVE = 34,\n  /** OPERATION_TYPE_BENEFIT_TAX_PROGRESSIVE - Удержание налога за материальную выгоду по ставке 15%. */\n  OPERATION_TYPE_BENEFIT_TAX_PROGRESSIVE = 35,\n  /** OPERATION_TYPE_TAX_CORRECTION_PROGRESSIVE - Корректировка налога по ставке 15%. */\n  OPERATION_TYPE_TAX_CORRECTION_PROGRESSIVE = 36,\n  /** OPERATION_TYPE_TAX_REPO_PROGRESSIVE - Удержание налога за возмещение по сделкам РЕПО по ставке 15%. */\n  OPERATION_TYPE_TAX_REPO_PROGRESSIVE = 37,\n  /** OPERATION_TYPE_TAX_REPO - Удержание налога за возмещение по сделкам РЕПО. */\n  OPERATION_TYPE_TAX_REPO = 38,\n  /** OPERATION_TYPE_TAX_REPO_HOLD - Удержание налога по сделкам РЕПО. */\n  OPERATION_TYPE_TAX_REPO_HOLD = 39,\n  /** OPERATION_TYPE_TAX_REPO_REFUND - Возврат налога по сделкам РЕПО. */\n  OPERATION_TYPE_TAX_REPO_REFUND = 40,\n  /** OPERATION_TYPE_TAX_REPO_HOLD_PROGRESSIVE - Удержание налога по сделкам РЕПО по ставке 15%. */\n  OPERATION_TYPE_TAX_REPO_HOLD_PROGRESSIVE = 41,\n  /** OPERATION_TYPE_TAX_REPO_REFUND_PROGRESSIVE - Возврат налога по сделкам РЕПО по ставке 15%. */\n  OPERATION_TYPE_TAX_REPO_REFUND_PROGRESSIVE = 42,\n  /** OPERATION_TYPE_DIV_EXT - Выплата дивидендов на карту. */\n  OPERATION_TYPE_DIV_EXT = 43,\n  /** OPERATION_TYPE_TAX_CORRECTION_COUPON - Корректировка налога по купонам. */\n  OPERATION_TYPE_TAX_CORRECTION_COUPON = 44,\n  /** OPERATION_TYPE_CASH_FEE - Комиссия за валютный остаток. */\n  OPERATION_TYPE_CASH_FEE = 45,\n  /** OPERATION_TYPE_OUT_FEE - Комиссия за вывод валюты с брокерского счёта. */\n  OPERATION_TYPE_OUT_FEE = 46,\n  /** OPERATION_TYPE_OUT_STAMP_DUTY - Гербовый сбор. */\n  OPERATION_TYPE_OUT_STAMP_DUTY = 47,\n  /** OPERATION_TYPE_OUTPUT_SWIFT - SWIFT-перевод. */\n  OPERATION_TYPE_OUTPUT_SWIFT = 50,\n  /** OPERATION_TYPE_INPUT_SWIFT - SWIFT-перевод. */\n  OPERATION_TYPE_INPUT_SWIFT = 51,\n  /** OPERATION_TYPE_OUTPUT_ACQUIRING - Перевод на карту. */\n  OPERATION_TYPE_OUTPUT_ACQUIRING = 53,\n  /** OPERATION_TYPE_INPUT_ACQUIRING - Перевод с карты. */\n  OPERATION_TYPE_INPUT_ACQUIRING = 54,\n  /** OPERATION_TYPE_OUTPUT_PENALTY - Комиссия за вывод средств. */\n  OPERATION_TYPE_OUTPUT_PENALTY = 55,\n  /** OPERATION_TYPE_ADVICE_FEE - Списание оплаты за сервис Советов. */\n  OPERATION_TYPE_ADVICE_FEE = 56,\n  /** OPERATION_TYPE_TRANS_IIS_BS - Перевод ценных бумаг с ИИС на брокерский счёт. */\n  OPERATION_TYPE_TRANS_IIS_BS = 57,\n  /** OPERATION_TYPE_TRANS_BS_BS - Перевод ценных бумаг с одного брокерского счёта на другой. */\n  OPERATION_TYPE_TRANS_BS_BS = 58,\n  /** OPERATION_TYPE_OUT_MULTI - Вывод денежных средств со счёта. */\n  OPERATION_TYPE_OUT_MULTI = 59,\n  /** OPERATION_TYPE_INP_MULTI - Пополнение денежных средств со счёта. */\n  OPERATION_TYPE_INP_MULTI = 60,\n  /** OPERATION_TYPE_OVER_PLACEMENT - Размещение биржевого овернайта. */\n  OPERATION_TYPE_OVER_PLACEMENT = 61,\n  /** OPERATION_TYPE_OVER_COM - Списание комиссии. */\n  OPERATION_TYPE_OVER_COM = 62,\n  /** OPERATION_TYPE_OVER_INCOME - Доход от оверанайта. */\n  OPERATION_TYPE_OVER_INCOME = 63,\n  /** OPERATION_TYPE_OPTION_EXPIRATION - Экспирация опциона. */\n  OPERATION_TYPE_OPTION_EXPIRATION = 64,\n  /** OPERATION_TYPE_FUTURE_EXPIRATION - Экспирация фьючерса. */\n  OPERATION_TYPE_FUTURE_EXPIRATION = 65,\n  UNRECOGNIZED = -1,\n}\n\nexport function operationTypeFromJSON(object: any): OperationType {\n  switch (object) {\n    case 0:\n    case \"OPERATION_TYPE_UNSPECIFIED\":\n      return OperationType.OPERATION_TYPE_UNSPECIFIED;\n    case 1:\n    case \"OPERATION_TYPE_INPUT\":\n      return OperationType.OPERATION_TYPE_INPUT;\n    case 2:\n    case \"OPERATION_TYPE_BOND_TAX\":\n      return OperationType.OPERATION_TYPE_BOND_TAX;\n    case 3:\n    case \"OPERATION_TYPE_OUTPUT_SECURITIES\":\n      return OperationType.OPERATION_TYPE_OUTPUT_SECURITIES;\n    case 4:\n    case \"OPERATION_TYPE_OVERNIGHT\":\n      return OperationType.OPERATION_TYPE_OVERNIGHT;\n    case 5:\n    case \"OPERATION_TYPE_TAX\":\n      return OperationType.OPERATION_TYPE_TAX;\n    case 6:\n    case \"OPERATION_TYPE_BOND_REPAYMENT_FULL\":\n      return OperationType.OPERATION_TYPE_BOND_REPAYMENT_FULL;\n    case 7:\n    case \"OPERATION_TYPE_SELL_CARD\":\n      return OperationType.OPERATION_TYPE_SELL_CARD;\n    case 8:\n    case \"OPERATION_TYPE_DIVIDEND_TAX\":\n      return OperationType.OPERATION_TYPE_DIVIDEND_TAX;\n    case 9:\n    case \"OPERATION_TYPE_OUTPUT\":\n      return OperationType.OPERATION_TYPE_OUTPUT;\n    case 10:\n    case \"OPERATION_TYPE_BOND_REPAYMENT\":\n      return OperationType.OPERATION_TYPE_BOND_REPAYMENT;\n    case 11:\n    case \"OPERATION_TYPE_TAX_CORRECTION\":\n      return OperationType.OPERATION_TYPE_TAX_CORRECTION;\n    case 12:\n    case \"OPERATION_TYPE_SERVICE_FEE\":\n      return OperationType.OPERATION_TYPE_SERVICE_FEE;\n    case 13:\n    case \"OPERATION_TYPE_BENEFIT_TAX\":\n      return OperationType.OPERATION_TYPE_BENEFIT_TAX;\n    case 14:\n    case \"OPERATION_TYPE_MARGIN_FEE\":\n      return OperationType.OPERATION_TYPE_MARGIN_FEE;\n    case 15:\n    case \"OPERATION_TYPE_BUY\":\n      return OperationType.OPERATION_TYPE_BUY;\n    case 16:\n    case \"OPERATION_TYPE_BUY_CARD\":\n      return OperationType.OPERATION_TYPE_BUY_CARD;\n    case 17:\n    case \"OPERATION_TYPE_INPUT_SECURITIES\":\n      return OperationType.OPERATION_TYPE_INPUT_SECURITIES;\n    case 18:\n    case \"OPERATION_TYPE_SELL_MARGIN\":\n      return OperationType.OPERATION_TYPE_SELL_MARGIN;\n    case 19:\n    case \"OPERATION_TYPE_BROKER_FEE\":\n      return OperationType.OPERATION_TYPE_BROKER_FEE;\n    case 20:\n    case \"OPERATION_TYPE_BUY_MARGIN\":\n      return OperationType.OPERATION_TYPE_BUY_MARGIN;\n    case 21:\n    case \"OPERATION_TYPE_DIVIDEND\":\n      return OperationType.OPERATION_TYPE_DIVIDEND;\n    case 22:\n    case \"OPERATION_TYPE_SELL\":\n      return OperationType.OPERATION_TYPE_SELL;\n    case 23:\n    case \"OPERATION_TYPE_COUPON\":\n      return OperationType.OPERATION_TYPE_COUPON;\n    case 24:\n    case \"OPERATION_TYPE_SUCCESS_FEE\":\n      return OperationType.OPERATION_TYPE_SUCCESS_FEE;\n    case 25:\n    case \"OPERATION_TYPE_DIVIDEND_TRANSFER\":\n      return OperationType.OPERATION_TYPE_DIVIDEND_TRANSFER;\n    case 26:\n    case \"OPERATION_TYPE_ACCRUING_VARMARGIN\":\n      return OperationType.OPERATION_TYPE_ACCRUING_VARMARGIN;\n    case 27:\n    case \"OPERATION_TYPE_WRITING_OFF_VARMARGIN\":\n      return OperationType.OPERATION_TYPE_WRITING_OFF_VARMARGIN;\n    case 28:\n    case \"OPERATION_TYPE_DELIVERY_BUY\":\n      return OperationType.OPERATION_TYPE_DELIVERY_BUY;\n    case 29:\n    case \"OPERATION_TYPE_DELIVERY_SELL\":\n      return OperationType.OPERATION_TYPE_DELIVERY_SELL;\n    case 30:\n    case \"OPERATION_TYPE_TRACK_MFEE\":\n      return OperationType.OPERATION_TYPE_TRACK_MFEE;\n    case 31:\n    case \"OPERATION_TYPE_TRACK_PFEE\":\n      return OperationType.OPERATION_TYPE_TRACK_PFEE;\n    case 32:\n    case \"OPERATION_TYPE_TAX_PROGRESSIVE\":\n      return OperationType.OPERATION_TYPE_TAX_PROGRESSIVE;\n    case 33:\n    case \"OPERATION_TYPE_BOND_TAX_PROGRESSIVE\":\n      return OperationType.OPERATION_TYPE_BOND_TAX_PROGRESSIVE;\n    case 34:\n    case \"OPERATION_TYPE_DIVIDEND_TAX_PROGRESSIVE\":\n      return OperationType.OPERATION_TYPE_DIVIDEND_TAX_PROGRESSIVE;\n    case 35:\n    case \"OPERATION_TYPE_BENEFIT_TAX_PROGRESSIVE\":\n      return OperationType.OPERATION_TYPE_BENEFIT_TAX_PROGRESSIVE;\n    case 36:\n    case \"OPERATION_TYPE_TAX_CORRECTION_PROGRESSIVE\":\n      return OperationType.OPERATION_TYPE_TAX_CORRECTION_PROGRESSIVE;\n    case 37:\n    case \"OPERATION_TYPE_TAX_REPO_PROGRESSIVE\":\n      return OperationType.OPERATION_TYPE_TAX_REPO_PROGRESSIVE;\n    case 38:\n    case \"OPERATION_TYPE_TAX_REPO\":\n      return OperationType.OPERATION_TYPE_TAX_REPO;\n    case 39:\n    case \"OPERATION_TYPE_TAX_REPO_HOLD\":\n      return OperationType.OPERATION_TYPE_TAX_REPO_HOLD;\n    case 40:\n    case \"OPERATION_TYPE_TAX_REPO_REFUND\":\n      return OperationType.OPERATION_TYPE_TAX_REPO_REFUND;\n    case 41:\n    case \"OPERATION_TYPE_TAX_REPO_HOLD_PROGRESSIVE\":\n      return OperationType.OPERATION_TYPE_TAX_REPO_HOLD_PROGRESSIVE;\n    case 42:\n    case \"OPERATION_TYPE_TAX_REPO_REFUND_PROGRESSIVE\":\n      return OperationType.OPERATION_TYPE_TAX_REPO_REFUND_PROGRESSIVE;\n    case 43:\n    case \"OPERATION_TYPE_DIV_EXT\":\n      return OperationType.OPERATION_TYPE_DIV_EXT;\n    case 44:\n    case \"OPERATION_TYPE_TAX_CORRECTION_COUPON\":\n      return OperationType.OPERATION_TYPE_TAX_CORRECTION_COUPON;\n    case 45:\n    case \"OPERATION_TYPE_CASH_FEE\":\n      return OperationType.OPERATION_TYPE_CASH_FEE;\n    case 46:\n    case \"OPERATION_TYPE_OUT_FEE\":\n      return OperationType.OPERATION_TYPE_OUT_FEE;\n    case 47:\n    case \"OPERATION_TYPE_OUT_STAMP_DUTY\":\n      return OperationType.OPERATION_TYPE_OUT_STAMP_DUTY;\n    case 50:\n    case \"OPERATION_TYPE_OUTPUT_SWIFT\":\n      return OperationType.OPERATION_TYPE_OUTPUT_SWIFT;\n    case 51:\n    case \"OPERATION_TYPE_INPUT_SWIFT\":\n      return OperationType.OPERATION_TYPE_INPUT_SWIFT;\n    case 53:\n    case \"OPERATION_TYPE_OUTPUT_ACQUIRING\":\n      return OperationType.OPERATION_TYPE_OUTPUT_ACQUIRING;\n    case 54:\n    case \"OPERATION_TYPE_INPUT_ACQUIRING\":\n      return OperationType.OPERATION_TYPE_INPUT_ACQUIRING;\n    case 55:\n    case \"OPERATION_TYPE_OUTPUT_PENALTY\":\n      return OperationType.OPERATION_TYPE_OUTPUT_PENALTY;\n    case 56:\n    case \"OPERATION_TYPE_ADVICE_FEE\":\n      return OperationType.OPERATION_TYPE_ADVICE_FEE;\n    case 57:\n    case \"OPERATION_TYPE_TRANS_IIS_BS\":\n      return OperationType.OPERATION_TYPE_TRANS_IIS_BS;\n    case 58:\n    case \"OPERATION_TYPE_TRANS_BS_BS\":\n      return OperationType.OPERATION_TYPE_TRANS_BS_BS;\n    case 59:\n    case \"OPERATION_TYPE_OUT_MULTI\":\n      return OperationType.OPERATION_TYPE_OUT_MULTI;\n    case 60:\n    case \"OPERATION_TYPE_INP_MULTI\":\n      return OperationType.OPERATION_TYPE_INP_MULTI;\n    case 61:\n    case \"OPERATION_TYPE_OVER_PLACEMENT\":\n      return OperationType.OPERATION_TYPE_OVER_PLACEMENT;\n    case 62:\n    case \"OPERATION_TYPE_OVER_COM\":\n      return OperationType.OPERATION_TYPE_OVER_COM;\n    case 63:\n    case \"OPERATION_TYPE_OVER_INCOME\":\n      return OperationType.OPERATION_TYPE_OVER_INCOME;\n    case 64:\n    case \"OPERATION_TYPE_OPTION_EXPIRATION\":\n      return OperationType.OPERATION_TYPE_OPTION_EXPIRATION;\n    case 65:\n    case \"OPERATION_TYPE_FUTURE_EXPIRATION\":\n      return OperationType.OPERATION_TYPE_FUTURE_EXPIRATION;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OperationType.UNRECOGNIZED;\n  }\n}\n\nexport function operationTypeToJSON(object: OperationType): string {\n  switch (object) {\n    case OperationType.OPERATION_TYPE_UNSPECIFIED:\n      return \"OPERATION_TYPE_UNSPECIFIED\";\n    case OperationType.OPERATION_TYPE_INPUT:\n      return \"OPERATION_TYPE_INPUT\";\n    case OperationType.OPERATION_TYPE_BOND_TAX:\n      return \"OPERATION_TYPE_BOND_TAX\";\n    case OperationType.OPERATION_TYPE_OUTPUT_SECURITIES:\n      return \"OPERATION_TYPE_OUTPUT_SECURITIES\";\n    case OperationType.OPERATION_TYPE_OVERNIGHT:\n      return \"OPERATION_TYPE_OVERNIGHT\";\n    case OperationType.OPERATION_TYPE_TAX:\n      return \"OPERATION_TYPE_TAX\";\n    case OperationType.OPERATION_TYPE_BOND_REPAYMENT_FULL:\n      return \"OPERATION_TYPE_BOND_REPAYMENT_FULL\";\n    case OperationType.OPERATION_TYPE_SELL_CARD:\n      return \"OPERATION_TYPE_SELL_CARD\";\n    case OperationType.OPERATION_TYPE_DIVIDEND_TAX:\n      return \"OPERATION_TYPE_DIVIDEND_TAX\";\n    case OperationType.OPERATION_TYPE_OUTPUT:\n      return \"OPERATION_TYPE_OUTPUT\";\n    case OperationType.OPERATION_TYPE_BOND_REPAYMENT:\n      return \"OPERATION_TYPE_BOND_REPAYMENT\";\n    case OperationType.OPERATION_TYPE_TAX_CORRECTION:\n      return \"OPERATION_TYPE_TAX_CORRECTION\";\n    case OperationType.OPERATION_TYPE_SERVICE_FEE:\n      return \"OPERATION_TYPE_SERVICE_FEE\";\n    case OperationType.OPERATION_TYPE_BENEFIT_TAX:\n      return \"OPERATION_TYPE_BENEFIT_TAX\";\n    case OperationType.OPERATION_TYPE_MARGIN_FEE:\n      return \"OPERATION_TYPE_MARGIN_FEE\";\n    case OperationType.OPERATION_TYPE_BUY:\n      return \"OPERATION_TYPE_BUY\";\n    case OperationType.OPERATION_TYPE_BUY_CARD:\n      return \"OPERATION_TYPE_BUY_CARD\";\n    case OperationType.OPERATION_TYPE_INPUT_SECURITIES:\n      return \"OPERATION_TYPE_INPUT_SECURITIES\";\n    case OperationType.OPERATION_TYPE_SELL_MARGIN:\n      return \"OPERATION_TYPE_SELL_MARGIN\";\n    case OperationType.OPERATION_TYPE_BROKER_FEE:\n      return \"OPERATION_TYPE_BROKER_FEE\";\n    case OperationType.OPERATION_TYPE_BUY_MARGIN:\n      return \"OPERATION_TYPE_BUY_MARGIN\";\n    case OperationType.OPERATION_TYPE_DIVIDEND:\n      return \"OPERATION_TYPE_DIVIDEND\";\n    case OperationType.OPERATION_TYPE_SELL:\n      return \"OPERATION_TYPE_SELL\";\n    case OperationType.OPERATION_TYPE_COUPON:\n      return \"OPERATION_TYPE_COUPON\";\n    case OperationType.OPERATION_TYPE_SUCCESS_FEE:\n      return \"OPERATION_TYPE_SUCCESS_FEE\";\n    case OperationType.OPERATION_TYPE_DIVIDEND_TRANSFER:\n      return \"OPERATION_TYPE_DIVIDEND_TRANSFER\";\n    case OperationType.OPERATION_TYPE_ACCRUING_VARMARGIN:\n      return \"OPERATION_TYPE_ACCRUING_VARMARGIN\";\n    case OperationType.OPERATION_TYPE_WRITING_OFF_VARMARGIN:\n      return \"OPERATION_TYPE_WRITING_OFF_VARMARGIN\";\n    case OperationType.OPERATION_TYPE_DELIVERY_BUY:\n      return \"OPERATION_TYPE_DELIVERY_BUY\";\n    case OperationType.OPERATION_TYPE_DELIVERY_SELL:\n      return \"OPERATION_TYPE_DELIVERY_SELL\";\n    case OperationType.OPERATION_TYPE_TRACK_MFEE:\n      return \"OPERATION_TYPE_TRACK_MFEE\";\n    case OperationType.OPERATION_TYPE_TRACK_PFEE:\n      return \"OPERATION_TYPE_TRACK_PFEE\";\n    case OperationType.OPERATION_TYPE_TAX_PROGRESSIVE:\n      return \"OPERATION_TYPE_TAX_PROGRESSIVE\";\n    case OperationType.OPERATION_TYPE_BOND_TAX_PROGRESSIVE:\n      return \"OPERATION_TYPE_BOND_TAX_PROGRESSIVE\";\n    case OperationType.OPERATION_TYPE_DIVIDEND_TAX_PROGRESSIVE:\n      return \"OPERATION_TYPE_DIVIDEND_TAX_PROGRESSIVE\";\n    case OperationType.OPERATION_TYPE_BENEFIT_TAX_PROGRESSIVE:\n      return \"OPERATION_TYPE_BENEFIT_TAX_PROGRESSIVE\";\n    case OperationType.OPERATION_TYPE_TAX_CORRECTION_PROGRESSIVE:\n      return \"OPERATION_TYPE_TAX_CORRECTION_PROGRESSIVE\";\n    case OperationType.OPERATION_TYPE_TAX_REPO_PROGRESSIVE:\n      return \"OPERATION_TYPE_TAX_REPO_PROGRESSIVE\";\n    case OperationType.OPERATION_TYPE_TAX_REPO:\n      return \"OPERATION_TYPE_TAX_REPO\";\n    case OperationType.OPERATION_TYPE_TAX_REPO_HOLD:\n      return \"OPERATION_TYPE_TAX_REPO_HOLD\";\n    case OperationType.OPERATION_TYPE_TAX_REPO_REFUND:\n      return \"OPERATION_TYPE_TAX_REPO_REFUND\";\n    case OperationType.OPERATION_TYPE_TAX_REPO_HOLD_PROGRESSIVE:\n      return \"OPERATION_TYPE_TAX_REPO_HOLD_PROGRESSIVE\";\n    case OperationType.OPERATION_TYPE_TAX_REPO_REFUND_PROGRESSIVE:\n      return \"OPERATION_TYPE_TAX_REPO_REFUND_PROGRESSIVE\";\n    case OperationType.OPERATION_TYPE_DIV_EXT:\n      return \"OPERATION_TYPE_DIV_EXT\";\n    case OperationType.OPERATION_TYPE_TAX_CORRECTION_COUPON:\n      return \"OPERATION_TYPE_TAX_CORRECTION_COUPON\";\n    case OperationType.OPERATION_TYPE_CASH_FEE:\n      return \"OPERATION_TYPE_CASH_FEE\";\n    case OperationType.OPERATION_TYPE_OUT_FEE:\n      return \"OPERATION_TYPE_OUT_FEE\";\n    case OperationType.OPERATION_TYPE_OUT_STAMP_DUTY:\n      return \"OPERATION_TYPE_OUT_STAMP_DUTY\";\n    case OperationType.OPERATION_TYPE_OUTPUT_SWIFT:\n      return \"OPERATION_TYPE_OUTPUT_SWIFT\";\n    case OperationType.OPERATION_TYPE_INPUT_SWIFT:\n      return \"OPERATION_TYPE_INPUT_SWIFT\";\n    case OperationType.OPERATION_TYPE_OUTPUT_ACQUIRING:\n      return \"OPERATION_TYPE_OUTPUT_ACQUIRING\";\n    case OperationType.OPERATION_TYPE_INPUT_ACQUIRING:\n      return \"OPERATION_TYPE_INPUT_ACQUIRING\";\n    case OperationType.OPERATION_TYPE_OUTPUT_PENALTY:\n      return \"OPERATION_TYPE_OUTPUT_PENALTY\";\n    case OperationType.OPERATION_TYPE_ADVICE_FEE:\n      return \"OPERATION_TYPE_ADVICE_FEE\";\n    case OperationType.OPERATION_TYPE_TRANS_IIS_BS:\n      return \"OPERATION_TYPE_TRANS_IIS_BS\";\n    case OperationType.OPERATION_TYPE_TRANS_BS_BS:\n      return \"OPERATION_TYPE_TRANS_BS_BS\";\n    case OperationType.OPERATION_TYPE_OUT_MULTI:\n      return \"OPERATION_TYPE_OUT_MULTI\";\n    case OperationType.OPERATION_TYPE_INP_MULTI:\n      return \"OPERATION_TYPE_INP_MULTI\";\n    case OperationType.OPERATION_TYPE_OVER_PLACEMENT:\n      return \"OPERATION_TYPE_OVER_PLACEMENT\";\n    case OperationType.OPERATION_TYPE_OVER_COM:\n      return \"OPERATION_TYPE_OVER_COM\";\n    case OperationType.OPERATION_TYPE_OVER_INCOME:\n      return \"OPERATION_TYPE_OVER_INCOME\";\n    case OperationType.OPERATION_TYPE_OPTION_EXPIRATION:\n      return \"OPERATION_TYPE_OPTION_EXPIRATION\";\n    case OperationType.OPERATION_TYPE_FUTURE_EXPIRATION:\n      return \"OPERATION_TYPE_FUTURE_EXPIRATION\";\n    case OperationType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Результат подписки. */\nexport enum PortfolioSubscriptionStatus {\n  /** PORTFOLIO_SUBSCRIPTION_STATUS_UNSPECIFIED - Тип не определён. */\n  PORTFOLIO_SUBSCRIPTION_STATUS_UNSPECIFIED = 0,\n  /** PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS - Успешно. */\n  PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS = 1,\n  /** PORTFOLIO_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND - Счёт не найден или недостаточно прав. */\n  PORTFOLIO_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND = 2,\n  /** PORTFOLIO_SUBSCRIPTION_STATUS_INTERNAL_ERROR - Произошла ошибка. */\n  PORTFOLIO_SUBSCRIPTION_STATUS_INTERNAL_ERROR = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function portfolioSubscriptionStatusFromJSON(object: any): PortfolioSubscriptionStatus {\n  switch (object) {\n    case 0:\n    case \"PORTFOLIO_SUBSCRIPTION_STATUS_UNSPECIFIED\":\n      return PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_UNSPECIFIED;\n    case 1:\n    case \"PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS\":\n      return PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS;\n    case 2:\n    case \"PORTFOLIO_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND\":\n      return PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND;\n    case 3:\n    case \"PORTFOLIO_SUBSCRIPTION_STATUS_INTERNAL_ERROR\":\n      return PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_INTERNAL_ERROR;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PortfolioSubscriptionStatus.UNRECOGNIZED;\n  }\n}\n\nexport function portfolioSubscriptionStatusToJSON(object: PortfolioSubscriptionStatus): string {\n  switch (object) {\n    case PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_UNSPECIFIED:\n      return \"PORTFOLIO_SUBSCRIPTION_STATUS_UNSPECIFIED\";\n    case PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS:\n      return \"PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS\";\n    case PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND:\n      return \"PORTFOLIO_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND\";\n    case PortfolioSubscriptionStatus.PORTFOLIO_SUBSCRIPTION_STATUS_INTERNAL_ERROR:\n      return \"PORTFOLIO_SUBSCRIPTION_STATUS_INTERNAL_ERROR\";\n    case PortfolioSubscriptionStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Результат подписки. */\nexport enum PositionsAccountSubscriptionStatus {\n  /** POSITIONS_SUBSCRIPTION_STATUS_UNSPECIFIED - Тип не определён. */\n  POSITIONS_SUBSCRIPTION_STATUS_UNSPECIFIED = 0,\n  /** POSITIONS_SUBSCRIPTION_STATUS_SUCCESS - Успешно. */\n  POSITIONS_SUBSCRIPTION_STATUS_SUCCESS = 1,\n  /** POSITIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND - Счёт не найден или недостаточно прав. */\n  POSITIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND = 2,\n  /** POSITIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR - Произошла ошибка. */\n  POSITIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function positionsAccountSubscriptionStatusFromJSON(object: any): PositionsAccountSubscriptionStatus {\n  switch (object) {\n    case 0:\n    case \"POSITIONS_SUBSCRIPTION_STATUS_UNSPECIFIED\":\n      return PositionsAccountSubscriptionStatus.POSITIONS_SUBSCRIPTION_STATUS_UNSPECIFIED;\n    case 1:\n    case \"POSITIONS_SUBSCRIPTION_STATUS_SUCCESS\":\n      return PositionsAccountSubscriptionStatus.POSITIONS_SUBSCRIPTION_STATUS_SUCCESS;\n    case 2:\n    case \"POSITIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND\":\n      return PositionsAccountSubscriptionStatus.POSITIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND;\n    case 3:\n    case \"POSITIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR\":\n      return PositionsAccountSubscriptionStatus.POSITIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PositionsAccountSubscriptionStatus.UNRECOGNIZED;\n  }\n}\n\nexport function positionsAccountSubscriptionStatusToJSON(object: PositionsAccountSubscriptionStatus): string {\n  switch (object) {\n    case PositionsAccountSubscriptionStatus.POSITIONS_SUBSCRIPTION_STATUS_UNSPECIFIED:\n      return \"POSITIONS_SUBSCRIPTION_STATUS_UNSPECIFIED\";\n    case PositionsAccountSubscriptionStatus.POSITIONS_SUBSCRIPTION_STATUS_SUCCESS:\n      return \"POSITIONS_SUBSCRIPTION_STATUS_SUCCESS\";\n    case PositionsAccountSubscriptionStatus.POSITIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND:\n      return \"POSITIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND\";\n    case PositionsAccountSubscriptionStatus.POSITIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR:\n      return \"POSITIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR\";\n    case PositionsAccountSubscriptionStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Запрос получения списка операций по счёту. */\nexport interface OperationsRequest {\n  /** Идентификатор счёта клиента. */\n  accountId: string;\n  /** Начало периода по UTC. */\n  from?:\n    | Date\n    | undefined;\n  /** Окончание периода по UTC. */\n  to?:\n    | Date\n    | undefined;\n  /** Статус запрашиваемых операций. */\n  state?:\n    | OperationState\n    | undefined;\n  /** FIGI-идентификатор инструмента для фильтрации. */\n  figi?: string | undefined;\n}\n\n/** Список операций. */\nexport interface OperationsResponse {\n  /** Массив операций. */\n  operations: Operation[];\n}\n\n/** Данные по операции. */\nexport interface Operation {\n  /** Идентификатор операции. */\n  id: string;\n  /** Идентификатор родительской операции. */\n  parentOperationId: string;\n  /** Валюта операции. */\n  currency: string;\n  /** Сумма операции. */\n  payment:\n    | MoneyValue\n    | undefined;\n  /** Цена операции за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */\n  price:\n    | MoneyValue\n    | undefined;\n  /** Статус операции. */\n  state: OperationState;\n  /** Количество единиц инструмента. */\n  quantity: number;\n  /** Неисполненный остаток по сделке. */\n  quantityRest: number;\n  /** FIGI-идентификатор инструмента, связанного с операцией. */\n  figi: string;\n  /** Тип инструмента. Возможные значения: </br></br>`bond` — облигация; </br>`share` — акция; </br>`currency` — валюта; </br>`etf` — фонд; </br>`futures` — фьючерс. */\n  instrumentType: string;\n  /** Дата и время операции в формате часовом поясе UTC. */\n  date:\n    | Date\n    | undefined;\n  /** Текстовое описание типа операции. */\n  type: string;\n  /** Тип операции. */\n  operationType: OperationType;\n  /** Массив сделок. */\n  trades: OperationTrade[];\n  /** Идентификатор актива */\n  assetUid: string;\n  /** Уникальный идентификатор позиции. */\n  positionUid: string;\n  /** Уникальный идентификатор инструмента. */\n  instrumentUid: string;\n  /** Массив дочерних операций. */\n  childOperations: ChildOperationItem[];\n}\n\n/** Сделка по операции. */\nexport interface OperationTrade {\n  /** Идентификатор сделки. */\n  tradeId: string;\n  /** Дата и время сделки по UTC. */\n  dateTime:\n    | Date\n    | undefined;\n  /** Количество инструментов. */\n  quantity: number;\n  /** Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */\n  price: MoneyValue | undefined;\n}\n\n/** Запрос получения текущего портфеля по счёту. */\nexport interface PortfolioRequest {\n  /** Идентификатор счёта пользователя. */\n  accountId: string;\n  /** Валюта, в которой нужно рассчитать портфель. */\n  currency?: PortfolioRequest_CurrencyRequest | undefined;\n}\n\nexport enum PortfolioRequest_CurrencyRequest {\n  /** RUB - Рубли */\n  RUB = 0,\n  /** USD - Доллары */\n  USD = 1,\n  /** EUR - Евро */\n  EUR = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function portfolioRequest_CurrencyRequestFromJSON(object: any): PortfolioRequest_CurrencyRequest {\n  switch (object) {\n    case 0:\n    case \"RUB\":\n      return PortfolioRequest_CurrencyRequest.RUB;\n    case 1:\n    case \"USD\":\n      return PortfolioRequest_CurrencyRequest.USD;\n    case 2:\n    case \"EUR\":\n      return PortfolioRequest_CurrencyRequest.EUR;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PortfolioRequest_CurrencyRequest.UNRECOGNIZED;\n  }\n}\n\nexport function portfolioRequest_CurrencyRequestToJSON(object: PortfolioRequest_CurrencyRequest): string {\n  switch (object) {\n    case PortfolioRequest_CurrencyRequest.RUB:\n      return \"RUB\";\n    case PortfolioRequest_CurrencyRequest.USD:\n      return \"USD\";\n    case PortfolioRequest_CurrencyRequest.EUR:\n      return \"EUR\";\n    case PortfolioRequest_CurrencyRequest.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Текущий портфель по счёту. */\nexport interface PortfolioResponse {\n  /** Общая стоимость акций в портфеле. */\n  totalAmountShares:\n    | MoneyValue\n    | undefined;\n  /** Общая стоимость облигаций в портфеле. */\n  totalAmountBonds:\n    | MoneyValue\n    | undefined;\n  /** Общая стоимость фондов в портфеле. */\n  totalAmountEtf:\n    | MoneyValue\n    | undefined;\n  /** Общая стоимость валют в портфеле. */\n  totalAmountCurrencies:\n    | MoneyValue\n    | undefined;\n  /** Общая стоимость фьючерсов в портфеле. */\n  totalAmountFutures:\n    | MoneyValue\n    | undefined;\n  /** Текущая относительная доходность портфеля в %. */\n  expectedYield:\n    | Quotation\n    | undefined;\n  /** Список позиций портфеля. */\n  positions: PortfolioPosition[];\n  /** Идентификатор счёта пользователя. */\n  accountId: string;\n  /** Общая стоимость опционов в портфеле. */\n  totalAmountOptions:\n    | MoneyValue\n    | undefined;\n  /** Общая стоимость структурных нот в портфеле. */\n  totalAmountSp:\n    | MoneyValue\n    | undefined;\n  /** Общая стоимость портфеля. */\n  totalAmountPortfolio:\n    | MoneyValue\n    | undefined;\n  /** Массив виртуальных позиций портфеля. */\n  virtualPositions: VirtualPortfolioPosition[];\n  /** Рассчитанная доходность портфеля за день в рублях */\n  dailyYield:\n    | MoneyValue\n    | undefined;\n  /** Относительная доходность в день в % */\n  dailyYieldRelative: Quotation | undefined;\n}\n\n/** Запрос позиций портфеля по счёту. */\nexport interface PositionsRequest {\n  /** Идентификатор счёта пользователя. */\n  accountId: string;\n}\n\n/** Список позиций по счёту. */\nexport interface PositionsResponse {\n  /** Массив валютных позиций портфеля. */\n  money: MoneyValue[];\n  /** Массив заблокированных валютных позиций портфеля. */\n  blocked: MoneyValue[];\n  /** Список ценно-бумажных позиций портфеля. */\n  securities: PositionsSecurities[];\n  /** Признак идущей выгрузки лимитов в данный момент. */\n  limitsLoadingInProgress: boolean;\n  /** Список фьючерсов портфеля. */\n  futures: PositionsFutures[];\n  /** Список опционов портфеля. */\n  options: PositionsOptions[];\n  /** Идентификатор счёта пользователя. */\n  accountId: string;\n}\n\n/** Запрос доступного остатка для вывода. */\nexport interface WithdrawLimitsRequest {\n  /** Идентификатор счёта пользователя. */\n  accountId: string;\n}\n\n/** Доступный остаток для вывода. */\nexport interface WithdrawLimitsResponse {\n  /** Массив валютных позиций портфеля. */\n  money: MoneyValue[];\n  /** Массив заблокированных валютных позиций портфеля. */\n  blocked: MoneyValue[];\n  /** Заблокировано под гарантийное обеспечение фьючерсов. */\n  blockedGuarantee: MoneyValue[];\n}\n\n/** Позиции портфеля. */\nexport interface PortfolioPosition {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тип инструмента. */\n  instrumentType: string;\n  /** Количество инструмента в портфеле в штуках. */\n  quantity:\n    | Quotation\n    | undefined;\n  /** Средневзвешенная цена позиции. Для пересчёта возможна задержка до одной секунды. */\n  averagePositionPrice:\n    | MoneyValue\n    | undefined;\n  /** Текущая рассчитанная доходность позиции. */\n  expectedYield:\n    | Quotation\n    | undefined;\n  /** Текущий НКД. */\n  currentNkd:\n    | MoneyValue\n    | undefined;\n  /**\n   * Deprecated Средняя цена позиции в пунктах (для фьючерсов). Для пересчёта возможна задержка до одной секунды.\n   *\n   * @deprecated\n   */\n  averagePositionPricePt:\n    | Quotation\n    | undefined;\n  /** Текущая цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */\n  currentPrice:\n    | MoneyValue\n    | undefined;\n  /** Средняя цена позиции по методу FIFO. Для пересчёта возможна задержка до одной секунды. */\n  averagePositionPriceFifo:\n    | MoneyValue\n    | undefined;\n  /**\n   * Deprecated Количество лотов в портфеле.\n   *\n   * @deprecated\n   */\n  quantityLots:\n    | Quotation\n    | undefined;\n  /** Заблокировано на бирже. */\n  blocked: boolean;\n  /** Количество бумаг, заблокированных выставленными заявками. */\n  blockedLots:\n    | Quotation\n    | undefined;\n  /** Уникальный идентификатор позиции. */\n  positionUid: string;\n  /** Уникальный идентификатор инструмента. */\n  instrumentUid: string;\n  /** Вариационная маржа. */\n  varMargin:\n    | MoneyValue\n    | undefined;\n  /** Текущая рассчитанная доходность позиции. */\n  expectedYieldFifo:\n    | Quotation\n    | undefined;\n  /** Рассчитанная доходность портфеля за день */\n  dailyYield: MoneyValue | undefined;\n}\n\nexport interface VirtualPortfolioPosition {\n  /** Уникальный идентификатор позиции. */\n  positionUid: string;\n  /** Уникальный идентификатор инструмента. */\n  instrumentUid: string;\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Тип инструмента. */\n  instrumentType: string;\n  /** Количество инструмента в портфеле в штуках. */\n  quantity:\n    | Quotation\n    | undefined;\n  /** Средневзвешенная цена позиции. Для пересчёта возможна задержка до одной секунды. */\n  averagePositionPrice:\n    | MoneyValue\n    | undefined;\n  /** Текущая рассчитанная доходность позиции. */\n  expectedYield:\n    | Quotation\n    | undefined;\n  /** Текущая рассчитанная доходность позиции. */\n  expectedYieldFifo:\n    | Quotation\n    | undefined;\n  /** Дата, до которой нужно продать виртуальные бумаги. После этой даты виртуальная позиция «сгораетт». */\n  expireDate:\n    | Date\n    | undefined;\n  /** Текущая цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */\n  currentPrice:\n    | MoneyValue\n    | undefined;\n  /** Средняя цена позиции по методу FIFO. Для пересчёта возможна задержка до одной секунды. */\n  averagePositionPriceFifo:\n    | MoneyValue\n    | undefined;\n  /** Рассчитанная доходность портфеля за день */\n  dailyYield: MoneyValue | undefined;\n}\n\n/** Баланс позиции ценной бумаги. */\nexport interface PositionsSecurities {\n  /** FIGI-идентификатор бумаги. */\n  figi: string;\n  /** Количество бумаг, заблокированных выставленными заявками. */\n  blocked: number;\n  /** Текущий незаблокированный баланс. */\n  balance: number;\n  /** Уникальный идентификатор позиции. */\n  positionUid: string;\n  /** Уникальный идентификатор инструмента. */\n  instrumentUid: string;\n  /** Заблокировано на бирже. */\n  exchangeBlocked: boolean;\n  /** Тип инструмента. */\n  instrumentType: string;\n}\n\n/** Баланс фьючерса. */\nexport interface PositionsFutures {\n  /** FIGI-идентификатор фьючерса. */\n  figi: string;\n  /** Количество бумаг, заблокированных выставленными заявками. */\n  blocked: number;\n  /** Текущий незаблокированный баланс. */\n  balance: number;\n  /** Уникальный идентификатор позиции. */\n  positionUid: string;\n  /** Уникальный идентификатор  инструмента. */\n  instrumentUid: string;\n}\n\n/** Баланс опциона. */\nexport interface PositionsOptions {\n  /** Уникальный идентификатор позиции опциона. */\n  positionUid: string;\n  /** Уникальный идентификатор  инструмента. */\n  instrumentUid: string;\n  /** Количество бумаг, заблокированных выставленными заявками. */\n  blocked: number;\n  /** Текущий незаблокированный баланс. */\n  balance: number;\n}\n\nexport interface BrokerReportRequest {\n  generateBrokerReportRequest?: GenerateBrokerReportRequest | undefined;\n  getBrokerReportRequest?: GetBrokerReportRequest | undefined;\n}\n\nexport interface BrokerReportResponse {\n  generateBrokerReportResponse?: GenerateBrokerReportResponse | undefined;\n  getBrokerReportResponse?: GetBrokerReportResponse | undefined;\n}\n\nexport interface GenerateBrokerReportRequest {\n  /** Идентификатор счёта клиента. */\n  accountId: string;\n  /** Начало периода по UTC. */\n  from:\n    | Date\n    | undefined;\n  /** Окончание периода по UTC. */\n  to: Date | undefined;\n}\n\nexport interface GenerateBrokerReportResponse {\n  /** Идентификатор задачи формирования брокерского отчёта. */\n  taskId: string;\n}\n\nexport interface GetBrokerReportRequest {\n  /** Идентификатор задачи формирования брокерского отчёта. */\n  taskId: string;\n  /** Номер страницы отчёта, начинается с 1. Значение по умолчанию — 0. */\n  page?: number | undefined;\n}\n\nexport interface GetBrokerReportResponse {\n  brokerReport: BrokerReport[];\n  /** Количество записей в отчёте. */\n  itemsCount: number;\n  /** Количество страниц с данными отчёта, начинается с 0. */\n  pagesCount: number;\n  /** Текущая страница, начинается с 0. */\n  page: number;\n}\n\nexport interface BrokerReport {\n  /** Номер сделки. */\n  tradeId: string;\n  /** Номер поручения. */\n  orderId: string;\n  /** FIGI-идентификаторинструмента. */\n  figi: string;\n  /** Признак исполнения. */\n  executeSign: string;\n  /** Дата и время заключения по UTC. */\n  tradeDatetime:\n    | Date\n    | undefined;\n  /** Торговая площадка. */\n  exchange: string;\n  /** Режим торгов. */\n  classCode: string;\n  /** Вид сделки. */\n  direction: string;\n  /** Сокращённое наименование актива. */\n  name: string;\n  /** Код актива. */\n  ticker: string;\n  /** Цена за единицу. */\n  price:\n    | MoneyValue\n    | undefined;\n  /** Количество. */\n  quantity: number;\n  /** Сумма без НКД. */\n  orderAmount:\n    | MoneyValue\n    | undefined;\n  /** НКД. */\n  aciValue:\n    | Quotation\n    | undefined;\n  /** Сумма сделки. */\n  totalOrderAmount:\n    | MoneyValue\n    | undefined;\n  /** Комиссия брокера. */\n  brokerCommission:\n    | MoneyValue\n    | undefined;\n  /** Комиссия биржи. */\n  exchangeCommission:\n    | MoneyValue\n    | undefined;\n  /** Комиссия клирингового центра. */\n  exchangeClearingCommission:\n    | MoneyValue\n    | undefined;\n  /** Ставка РЕПО, %. */\n  repoRate:\n    | Quotation\n    | undefined;\n  /** Контрагент или брокерарокер. */\n  party: string;\n  /** Дата расчётов по UTC. */\n  clearValueDate:\n    | Date\n    | undefined;\n  /** Дата поставки по UTC. */\n  secValueDate:\n    | Date\n    | undefined;\n  /** Статус брокера. */\n  brokerStatus: string;\n  /** Тип договора. */\n  separateAgreementType: string;\n  /** Номер договора. */\n  separateAgreementNumber: string;\n  /** Дата договора. */\n  separateAgreementDate: string;\n  /** Тип расчёта по сделке. */\n  deliveryType: string;\n}\n\nexport interface GetDividendsForeignIssuerRequest {\n  /** Объект запроса формирования отчёта. */\n  generateDivForeignIssuerReport?:\n    | GenerateDividendsForeignIssuerReportRequest\n    | undefined;\n  /** Объект запроса сформированного отчёта. */\n  getDivForeignIssuerReport?: GetDividendsForeignIssuerReportRequest | undefined;\n}\n\nexport interface GetDividendsForeignIssuerResponse {\n  /** Объект результата задачи запуска формирования отчёта. */\n  generateDivForeignIssuerReportResponse?:\n    | GenerateDividendsForeignIssuerReportResponse\n    | undefined;\n  /** Отчёт «Справка о доходах за пределами РФ». */\n  divForeignIssuerReport?: GetDividendsForeignIssuerReportResponse | undefined;\n}\n\n/** Объект запроса формирования отчёта «Справка о доходах за пределами РФ». */\nexport interface GenerateDividendsForeignIssuerReportRequest {\n  /** Идентификатор счёта клиента. */\n  accountId: string;\n  /** Начало периода по UTC. */\n  from:\n    | Date\n    | undefined;\n  /** Окончание периода по UTC. Как правило, можно сформировать отчёт по дату на несколько дней меньше текущей. Начало и окончание периода должны быть в рамках одного календарного года. */\n  to: Date | undefined;\n}\n\n/** Объект запроса сформированного отчёта «Справка о доходах за пределами РФ». */\nexport interface GetDividendsForeignIssuerReportRequest {\n  /** Идентификатор задачи формирования отчёта. */\n  taskId: string;\n  /** Номер страницы отчета (начинается с 0), значение по умолчанию: 0. */\n  page?: number | undefined;\n}\n\n/** Объект результата задачи запуска формирования отчёта «Справка о доходах за пределами РФ». */\nexport interface GenerateDividendsForeignIssuerReportResponse {\n  /** Идентификатор задачи формирования отчёта. */\n  taskId: string;\n}\n\nexport interface GetDividendsForeignIssuerReportResponse {\n  dividendsForeignIssuerReport: DividendsForeignIssuerReport[];\n  /** Количество записей в отчёте. */\n  itemsCount: number;\n  /** Количество страниц с данными отчёта, начинается с 0. */\n  pagesCount: number;\n  /** Текущая страница, начинается с 0. */\n  page: number;\n}\n\n/** Отчёт «Справка о доходах за пределами РФ». */\nexport interface DividendsForeignIssuerReport {\n  /** Дата фиксации реестра. */\n  recordDate:\n    | Date\n    | undefined;\n  /** Дата выплаты. */\n  paymentDate:\n    | Date\n    | undefined;\n  /** Наименование ценной бумаги. */\n  securityName: string;\n  /** ISIN-идентификатор ценной бумаги. */\n  isin: string;\n  /** Страна эмитента. Для депозитарных расписок указывается страна эмитента базового актива. */\n  issuerCountry: string;\n  /** Количество ценных бумаг. */\n  quantity: number;\n  /** Выплаты на одну бумагу */\n  dividend:\n    | Quotation\n    | undefined;\n  /** Комиссия внешних платёжных агентов. */\n  externalCommission:\n    | Quotation\n    | undefined;\n  /** Сумма до удержания налога. */\n  dividendGross:\n    | Quotation\n    | undefined;\n  /** Сумма налога, удержанного агентом. */\n  tax:\n    | Quotation\n    | undefined;\n  /** Итоговая сумма выплаты. */\n  dividendAmount:\n    | Quotation\n    | undefined;\n  /** Валюта. */\n  currency: string;\n}\n\n/** Запрос установки stream-соединения. */\nexport interface PortfolioStreamRequest {\n  /** Массив идентификаторов счётов пользователя. */\n  accounts: string[];\n  /** Запрос настройки пинга. */\n  pingSettings: PingDelaySettings | undefined;\n}\n\n/** Информация по позициям и доходностям портфелей. */\nexport interface PortfolioStreamResponse {\n  /** Объект результата подписки. */\n  subscriptions?:\n    | PortfolioSubscriptionResult\n    | undefined;\n  /** Объект стриминга портфеля. */\n  portfolio?:\n    | PortfolioResponse\n    | undefined;\n  /** Проверка активности стрима. */\n  ping?: Ping | undefined;\n}\n\n/** Объект результата подписки. */\nexport interface PortfolioSubscriptionResult {\n  /** Массив счетов клиента. */\n  accounts: AccountSubscriptionStatus[];\n  /** Уникальный идентификатор запроса, подробнее: [tracking_id](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */\n  trackingId: string;\n  /** Идентификатор открытого соединения */\n  streamId: string;\n}\n\n/** Счёт клиента. */\nexport interface AccountSubscriptionStatus {\n  /** Идентификатор счёта. */\n  accountId: string;\n  /** Результат подписки. */\n  subscriptionStatus: PortfolioSubscriptionStatus;\n}\n\n/** Запрос списка операций по счёту с пагинацией. */\nexport interface GetOperationsByCursorRequest {\n  /** Идентификатор счёта клиента, обязательный параметр. Остальные параметры опциональны. */\n  accountId: string;\n  /** Идентификатор инструмента — FIGI или UID инструмента. */\n  instrumentId?:\n    | string\n    | undefined;\n  /** Начало периода по UTC. */\n  from?:\n    | Date\n    | undefined;\n  /** Окончание периода по UTC. */\n  to?:\n    | Date\n    | undefined;\n  /** Идентификатор элемента, с которого начать формировать ответ. */\n  cursor?:\n    | string\n    | undefined;\n  /** Лимит количества операций. По умолчанию — `100`, максимальное значение — `1000`. */\n  limit?:\n    | number\n    | undefined;\n  /** Тип операции. Принимает значение из списка `OperationType`. */\n  operationTypes: OperationType[];\n  /** Статус запрашиваемых операций. Возможные значения указаны в `OperationState`. */\n  state?:\n    | OperationState\n    | undefined;\n  /** Флаг возврата комиссии. По умолчанию — `false`. */\n  withoutCommissions?:\n    | boolean\n    | undefined;\n  /** Флаг получения ответа без массива сделок. */\n  withoutTrades?:\n    | boolean\n    | undefined;\n  /** Флаг показа overnight операций. */\n  withoutOvernights?: boolean | undefined;\n}\n\n/** Список операций по счёту с пагинацией. */\nexport interface GetOperationsByCursorResponse {\n  /** Признак, есть ли следующий элемент. */\n  hasNext: boolean;\n  /** Следующий курсор. */\n  nextCursor: string;\n  /** Список операций. */\n  items: OperationItem[];\n}\n\n/** Данные об операции. */\nexport interface OperationItem {\n  /** Курсор. */\n  cursor: string;\n  /** Номер счёта клиента. */\n  brokerAccountId: string;\n  /** Идентификатор операции, может меняться с течением времени. */\n  id: string;\n  /** Идентификатор родительской операции. Может измениться, если изменился ID родительской операции. */\n  parentOperationId: string;\n  /** Название операции. */\n  name: string;\n  /** Дата поручения. */\n  date:\n    | Date\n    | undefined;\n  /** Тип операции. */\n  type: OperationType;\n  /** Описание операции. */\n  description: string;\n  /** Статус поручения. */\n  state: OperationState;\n  /** Уникальный идентификатор инструмента. */\n  instrumentUid: string;\n  /** FIGI. */\n  figi: string;\n  /** Тип инструмента. */\n  instrumentType: string;\n  /** Тип инструмента. */\n  instrumentKind: InstrumentType;\n  /** Уникальный идентификатор позиции. */\n  positionUid: string;\n  /** Сумма операции. */\n  payment:\n    | MoneyValue\n    | undefined;\n  /** Цена операции за 1 инструмент. */\n  price:\n    | MoneyValue\n    | undefined;\n  /** Комиссия. */\n  commission:\n    | MoneyValue\n    | undefined;\n  /** Доходность. */\n  yield:\n    | MoneyValue\n    | undefined;\n  /** Относительная доходность. */\n  yieldRelative:\n    | Quotation\n    | undefined;\n  /** Накопленный купонный доход. */\n  accruedInt:\n    | MoneyValue\n    | undefined;\n  /** Количество единиц инструмента. */\n  quantity: number;\n  /** Неисполненный остаток по сделке. */\n  quantityRest: number;\n  /** Исполненный остаток. */\n  quantityDone: number;\n  /** Дата и время снятия заявки. */\n  cancelDateTime:\n    | Date\n    | undefined;\n  /** Причина отмены операции. */\n  cancelReason: string;\n  /** Массив сделок. */\n  tradesInfo:\n    | OperationItemTrades\n    | undefined;\n  /** Идентификатор актива. */\n  assetUid: string;\n  /** Массив дочерних операций. */\n  childOperations: ChildOperationItem[];\n}\n\n/** Массив с информацией о сделках. */\nexport interface OperationItemTrades {\n  trades: OperationItemTrade[];\n}\n\n/** Сделка по операции. */\nexport interface OperationItemTrade {\n  /** Номер сделки. */\n  num: string;\n  /** Дата сделки. */\n  date:\n    | Date\n    | undefined;\n  /** Количество в единицах. */\n  quantity: number;\n  /** Цена. */\n  price:\n    | MoneyValue\n    | undefined;\n  /** Доходность. */\n  yield:\n    | MoneyValue\n    | undefined;\n  /** Относительная доходность. */\n  yieldRelative: Quotation | undefined;\n}\n\n/** Запрос установки stream-соединения позиций. */\nexport interface PositionsStreamRequest {\n  /** Массив идентификаторов счётов пользователя. */\n  accounts: string[];\n  /** Получение состояния позиций на момент подключения. */\n  withInitialPositions: boolean;\n  /** Запрос настройки пинга. */\n  pingSettings: PingDelaySettings | undefined;\n}\n\n/** Информация по изменению позиций портфеля. */\nexport interface PositionsStreamResponse {\n  /** Объект результата подписки. */\n  subscriptions?:\n    | PositionsSubscriptionResult\n    | undefined;\n  /** Объект стриминга позиций. */\n  position?:\n    | PositionData\n    | undefined;\n  /** Проверка активности стрима. */\n  ping?:\n    | Ping\n    | undefined;\n  /** Текущие позиции. */\n  initialPositions?: PositionsResponse | undefined;\n}\n\n/** Объект результата подписки. */\nexport interface PositionsSubscriptionResult {\n  /** Массив счетов клиента. */\n  accounts: PositionsSubscriptionStatus[];\n  /** Уникальный идентификатор запроса, подробнее: [tracking_id](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */\n  trackingId: string;\n  /** Идентификатор открытого соединения */\n  streamId: string;\n}\n\n/** Счёт клиента. */\nexport interface PositionsSubscriptionStatus {\n  /** Идентификатор счёта. */\n  accountId: string;\n  /** Результат подписки. */\n  subscriptionStatus: PositionsAccountSubscriptionStatus;\n}\n\n/** Данные о позиции портфеля. */\nexport interface PositionData {\n  /** Идентификатор счёта. */\n  accountId: string;\n  /** Массив валютных позиций портфеля. */\n  money: PositionsMoney[];\n  /** Список ценно-бумажных позиций портфеля. */\n  securities: PositionsSecurities[];\n  /** Список фьючерсов портфеля. */\n  futures: PositionsFutures[];\n  /** Список опционов портфеля. */\n  options: PositionsOptions[];\n  /** Дата и время операции в формате UTC. */\n  date: Date | undefined;\n}\n\n/** Валютная позиция портфеля. */\nexport interface PositionsMoney {\n  /** Доступное количество валютный позиций. */\n  availableValue:\n    | MoneyValue\n    | undefined;\n  /** Заблокированное количество валютных позиций. */\n  blockedValue: MoneyValue | undefined;\n}\n\nexport interface ChildOperationItem {\n  /** Уникальный идентификатор инструмента. */\n  instrumentUid: string;\n  /** Сумма операции. */\n  payment: MoneyValue | undefined;\n}\n\nfunction createBaseOperationsRequest(): OperationsRequest {\n  return { accountId: \"\", from: undefined, to: undefined, state: undefined, figi: undefined };\n}\n\nexport const OperationsRequest: OperationsUtils.MessageFns<OperationsRequest> = {\n  encode(message: OperationsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    if (message.state !== undefined) {\n      writer.uint32(32).int32(message.state);\n    }\n    if (message.figi !== undefined) {\n      writer.uint32(42).string(message.figi);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OperationsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperationsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.state = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OperationsRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      state: isSet(object.state) ? operationStateFromJSON(object.state) : undefined,\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined,\n    };\n  },\n\n  toJSON(message: OperationsRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.state !== undefined) {\n      obj.state = operationStateToJSON(message.state);\n    }\n    if (message.figi !== undefined) {\n      obj.figi = message.figi;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OperationsRequest>): OperationsRequest {\n    return OperationsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OperationsRequest>): OperationsRequest {\n    const message = createBaseOperationsRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.state = object.state ?? undefined;\n    message.figi = object.figi ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseOperationsResponse(): OperationsResponse {\n  return { operations: [] };\n}\n\nexport const OperationsResponse: OperationsUtils.MessageFns<OperationsResponse> = {\n  encode(message: OperationsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.operations) {\n      Operation.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OperationsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperationsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.operations.push(Operation.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OperationsResponse {\n    return {\n      operations: globalThis.Array.isArray(object?.operations)\n        ? object.operations.map((e: any) => Operation.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: OperationsResponse): unknown {\n    const obj: any = {};\n    if (message.operations?.length) {\n      obj.operations = message.operations.map((e) => Operation.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OperationsResponse>): OperationsResponse {\n    return OperationsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OperationsResponse>): OperationsResponse {\n    const message = createBaseOperationsResponse();\n    message.operations = object.operations?.map((e) => Operation.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOperation(): Operation {\n  return {\n    id: \"\",\n    parentOperationId: \"\",\n    currency: \"\",\n    payment: undefined,\n    price: undefined,\n    state: 0,\n    quantity: 0,\n    quantityRest: 0,\n    figi: \"\",\n    instrumentType: \"\",\n    date: undefined,\n    type: \"\",\n    operationType: 0,\n    trades: [],\n    assetUid: \"\",\n    positionUid: \"\",\n    instrumentUid: \"\",\n    childOperations: [],\n  };\n}\n\nexport const Operation: OperationsUtils.MessageFns<Operation> = {\n  encode(message: Operation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== \"\") {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.parentOperationId !== \"\") {\n      writer.uint32(18).string(message.parentOperationId);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(26).string(message.currency);\n    }\n    if (message.payment !== undefined) {\n      MoneyValue.encode(message.payment, writer.uint32(34).fork()).join();\n    }\n    if (message.price !== undefined) {\n      MoneyValue.encode(message.price, writer.uint32(42).fork()).join();\n    }\n    if (message.state !== 0) {\n      writer.uint32(48).int32(message.state);\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(56).int64(message.quantity);\n    }\n    if (message.quantityRest !== 0) {\n      writer.uint32(64).int64(message.quantityRest);\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(74).string(message.figi);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(82).string(message.instrumentType);\n    }\n    if (message.date !== undefined) {\n      Timestamp.encode(toTimestamp(message.date), writer.uint32(90).fork()).join();\n    }\n    if (message.type !== \"\") {\n      writer.uint32(98).string(message.type);\n    }\n    if (message.operationType !== 0) {\n      writer.uint32(104).int32(message.operationType);\n    }\n    for (const v of message.trades) {\n      OperationTrade.encode(v!, writer.uint32(114).fork()).join();\n    }\n    if (message.assetUid !== \"\") {\n      writer.uint32(130).string(message.assetUid);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(138).string(message.positionUid);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(146).string(message.instrumentUid);\n    }\n    for (const v of message.childOperations) {\n      ChildOperationItem.encode(v!, writer.uint32(154).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Operation {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperation();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.parentOperationId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.payment = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.price = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.state = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.quantityRest = longToNumber(reader.int64());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.date = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.operationType = reader.int32() as any;\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.trades.push(OperationTrade.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.assetUid = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.childOperations.push(ChildOperationItem.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Operation {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n      parentOperationId: isSet(object.parentOperationId) ? globalThis.String(object.parentOperationId) : \"\",\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      payment: isSet(object.payment) ? MoneyValue.fromJSON(object.payment) : undefined,\n      price: isSet(object.price) ? MoneyValue.fromJSON(object.price) : undefined,\n      state: isSet(object.state) ? operationStateFromJSON(object.state) : 0,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      quantityRest: isSet(object.quantityRest) ? globalThis.Number(object.quantityRest) : 0,\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n      date: isSet(object.date) ? fromJsonTimestamp(object.date) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : \"\",\n      operationType: isSet(object.operationType) ? operationTypeFromJSON(object.operationType) : 0,\n      trades: globalThis.Array.isArray(object?.trades) ? object.trades.map((e: any) => OperationTrade.fromJSON(e)) : [],\n      assetUid: isSet(object.assetUid) ? globalThis.String(object.assetUid) : \"\",\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      childOperations: globalThis.Array.isArray(object?.childOperations)\n        ? object.childOperations.map((e: any) => ChildOperationItem.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: Operation): unknown {\n    const obj: any = {};\n    if (message.id !== \"\") {\n      obj.id = message.id;\n    }\n    if (message.parentOperationId !== \"\") {\n      obj.parentOperationId = message.parentOperationId;\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.payment !== undefined) {\n      obj.payment = MoneyValue.toJSON(message.payment);\n    }\n    if (message.price !== undefined) {\n      obj.price = MoneyValue.toJSON(message.price);\n    }\n    if (message.state !== 0) {\n      obj.state = operationStateToJSON(message.state);\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.quantityRest !== 0) {\n      obj.quantityRest = Math.round(message.quantityRest);\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    if (message.date !== undefined) {\n      obj.date = message.date.toISOString();\n    }\n    if (message.type !== \"\") {\n      obj.type = message.type;\n    }\n    if (message.operationType !== 0) {\n      obj.operationType = operationTypeToJSON(message.operationType);\n    }\n    if (message.trades?.length) {\n      obj.trades = message.trades.map((e) => OperationTrade.toJSON(e));\n    }\n    if (message.assetUid !== \"\") {\n      obj.assetUid = message.assetUid;\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.childOperations?.length) {\n      obj.childOperations = message.childOperations.map((e) => ChildOperationItem.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Operation>): Operation {\n    return Operation.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Operation>): Operation {\n    const message = createBaseOperation();\n    message.id = object.id ?? \"\";\n    message.parentOperationId = object.parentOperationId ?? \"\";\n    message.currency = object.currency ?? \"\";\n    message.payment = (object.payment !== undefined && object.payment !== null)\n      ? MoneyValue.fromPartial(object.payment)\n      : undefined;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? MoneyValue.fromPartial(object.price)\n      : undefined;\n    message.state = object.state ?? 0;\n    message.quantity = object.quantity ?? 0;\n    message.quantityRest = object.quantityRest ?? 0;\n    message.figi = object.figi ?? \"\";\n    message.instrumentType = object.instrumentType ?? \"\";\n    message.date = object.date ?? undefined;\n    message.type = object.type ?? \"\";\n    message.operationType = object.operationType ?? 0;\n    message.trades = object.trades?.map((e) => OperationTrade.fromPartial(e)) || [];\n    message.assetUid = object.assetUid ?? \"\";\n    message.positionUid = object.positionUid ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.childOperations = object.childOperations?.map((e) => ChildOperationItem.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOperationTrade(): OperationTrade {\n  return { tradeId: \"\", dateTime: undefined, quantity: 0, price: undefined };\n}\n\nexport const OperationTrade: OperationsUtils.MessageFns<OperationTrade> = {\n  encode(message: OperationTrade, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.tradeId !== \"\") {\n      writer.uint32(10).string(message.tradeId);\n    }\n    if (message.dateTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.dateTime), writer.uint32(18).fork()).join();\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(24).int64(message.quantity);\n    }\n    if (message.price !== undefined) {\n      MoneyValue.encode(message.price, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OperationTrade {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperationTrade();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.tradeId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.dateTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.price = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OperationTrade {\n    return {\n      tradeId: isSet(object.tradeId) ? globalThis.String(object.tradeId) : \"\",\n      dateTime: isSet(object.dateTime) ? fromJsonTimestamp(object.dateTime) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      price: isSet(object.price) ? MoneyValue.fromJSON(object.price) : undefined,\n    };\n  },\n\n  toJSON(message: OperationTrade): unknown {\n    const obj: any = {};\n    if (message.tradeId !== \"\") {\n      obj.tradeId = message.tradeId;\n    }\n    if (message.dateTime !== undefined) {\n      obj.dateTime = message.dateTime.toISOString();\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.price !== undefined) {\n      obj.price = MoneyValue.toJSON(message.price);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OperationTrade>): OperationTrade {\n    return OperationTrade.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OperationTrade>): OperationTrade {\n    const message = createBaseOperationTrade();\n    message.tradeId = object.tradeId ?? \"\";\n    message.dateTime = object.dateTime ?? undefined;\n    message.quantity = object.quantity ?? 0;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? MoneyValue.fromPartial(object.price)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePortfolioRequest(): PortfolioRequest {\n  return { accountId: \"\", currency: undefined };\n}\n\nexport const PortfolioRequest: OperationsUtils.MessageFns<PortfolioRequest> = {\n  encode(message: PortfolioRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.currency !== undefined) {\n      writer.uint32(16).int32(message.currency);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PortfolioRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePortfolioRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.currency = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PortfolioRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      currency: isSet(object.currency) ? portfolioRequest_CurrencyRequestFromJSON(object.currency) : undefined,\n    };\n  },\n\n  toJSON(message: PortfolioRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.currency !== undefined) {\n      obj.currency = portfolioRequest_CurrencyRequestToJSON(message.currency);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PortfolioRequest>): PortfolioRequest {\n    return PortfolioRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PortfolioRequest>): PortfolioRequest {\n    const message = createBasePortfolioRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.currency = object.currency ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePortfolioResponse(): PortfolioResponse {\n  return {\n    totalAmountShares: undefined,\n    totalAmountBonds: undefined,\n    totalAmountEtf: undefined,\n    totalAmountCurrencies: undefined,\n    totalAmountFutures: undefined,\n    expectedYield: undefined,\n    positions: [],\n    accountId: \"\",\n    totalAmountOptions: undefined,\n    totalAmountSp: undefined,\n    totalAmountPortfolio: undefined,\n    virtualPositions: [],\n    dailyYield: undefined,\n    dailyYieldRelative: undefined,\n  };\n}\n\nexport const PortfolioResponse: OperationsUtils.MessageFns<PortfolioResponse> = {\n  encode(message: PortfolioResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.totalAmountShares !== undefined) {\n      MoneyValue.encode(message.totalAmountShares, writer.uint32(10).fork()).join();\n    }\n    if (message.totalAmountBonds !== undefined) {\n      MoneyValue.encode(message.totalAmountBonds, writer.uint32(18).fork()).join();\n    }\n    if (message.totalAmountEtf !== undefined) {\n      MoneyValue.encode(message.totalAmountEtf, writer.uint32(26).fork()).join();\n    }\n    if (message.totalAmountCurrencies !== undefined) {\n      MoneyValue.encode(message.totalAmountCurrencies, writer.uint32(34).fork()).join();\n    }\n    if (message.totalAmountFutures !== undefined) {\n      MoneyValue.encode(message.totalAmountFutures, writer.uint32(42).fork()).join();\n    }\n    if (message.expectedYield !== undefined) {\n      Quotation.encode(message.expectedYield, writer.uint32(50).fork()).join();\n    }\n    for (const v of message.positions) {\n      PortfolioPosition.encode(v!, writer.uint32(58).fork()).join();\n    }\n    if (message.accountId !== \"\") {\n      writer.uint32(66).string(message.accountId);\n    }\n    if (message.totalAmountOptions !== undefined) {\n      MoneyValue.encode(message.totalAmountOptions, writer.uint32(74).fork()).join();\n    }\n    if (message.totalAmountSp !== undefined) {\n      MoneyValue.encode(message.totalAmountSp, writer.uint32(82).fork()).join();\n    }\n    if (message.totalAmountPortfolio !== undefined) {\n      MoneyValue.encode(message.totalAmountPortfolio, writer.uint32(90).fork()).join();\n    }\n    for (const v of message.virtualPositions) {\n      VirtualPortfolioPosition.encode(v!, writer.uint32(98).fork()).join();\n    }\n    if (message.dailyYield !== undefined) {\n      MoneyValue.encode(message.dailyYield, writer.uint32(122).fork()).join();\n    }\n    if (message.dailyYieldRelative !== undefined) {\n      Quotation.encode(message.dailyYieldRelative, writer.uint32(130).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PortfolioResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePortfolioResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.totalAmountShares = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.totalAmountBonds = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.totalAmountEtf = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.totalAmountCurrencies = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.totalAmountFutures = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.expectedYield = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.positions.push(PortfolioPosition.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.totalAmountOptions = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.totalAmountSp = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.totalAmountPortfolio = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.virtualPositions.push(VirtualPortfolioPosition.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.dailyYield = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.dailyYieldRelative = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PortfolioResponse {\n    return {\n      totalAmountShares: isSet(object.totalAmountShares) ? MoneyValue.fromJSON(object.totalAmountShares) : undefined,\n      totalAmountBonds: isSet(object.totalAmountBonds) ? MoneyValue.fromJSON(object.totalAmountBonds) : undefined,\n      totalAmountEtf: isSet(object.totalAmountEtf) ? MoneyValue.fromJSON(object.totalAmountEtf) : undefined,\n      totalAmountCurrencies: isSet(object.totalAmountCurrencies)\n        ? MoneyValue.fromJSON(object.totalAmountCurrencies)\n        : undefined,\n      totalAmountFutures: isSet(object.totalAmountFutures) ? MoneyValue.fromJSON(object.totalAmountFutures) : undefined,\n      expectedYield: isSet(object.expectedYield) ? Quotation.fromJSON(object.expectedYield) : undefined,\n      positions: globalThis.Array.isArray(object?.positions)\n        ? object.positions.map((e: any) => PortfolioPosition.fromJSON(e))\n        : [],\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      totalAmountOptions: isSet(object.totalAmountOptions) ? MoneyValue.fromJSON(object.totalAmountOptions) : undefined,\n      totalAmountSp: isSet(object.totalAmountSp) ? MoneyValue.fromJSON(object.totalAmountSp) : undefined,\n      totalAmountPortfolio: isSet(object.totalAmountPortfolio)\n        ? MoneyValue.fromJSON(object.totalAmountPortfolio)\n        : undefined,\n      virtualPositions: globalThis.Array.isArray(object?.virtualPositions)\n        ? object.virtualPositions.map((e: any) => VirtualPortfolioPosition.fromJSON(e))\n        : [],\n      dailyYield: isSet(object.dailyYield) ? MoneyValue.fromJSON(object.dailyYield) : undefined,\n      dailyYieldRelative: isSet(object.dailyYieldRelative) ? Quotation.fromJSON(object.dailyYieldRelative) : undefined,\n    };\n  },\n\n  toJSON(message: PortfolioResponse): unknown {\n    const obj: any = {};\n    if (message.totalAmountShares !== undefined) {\n      obj.totalAmountShares = MoneyValue.toJSON(message.totalAmountShares);\n    }\n    if (message.totalAmountBonds !== undefined) {\n      obj.totalAmountBonds = MoneyValue.toJSON(message.totalAmountBonds);\n    }\n    if (message.totalAmountEtf !== undefined) {\n      obj.totalAmountEtf = MoneyValue.toJSON(message.totalAmountEtf);\n    }\n    if (message.totalAmountCurrencies !== undefined) {\n      obj.totalAmountCurrencies = MoneyValue.toJSON(message.totalAmountCurrencies);\n    }\n    if (message.totalAmountFutures !== undefined) {\n      obj.totalAmountFutures = MoneyValue.toJSON(message.totalAmountFutures);\n    }\n    if (message.expectedYield !== undefined) {\n      obj.expectedYield = Quotation.toJSON(message.expectedYield);\n    }\n    if (message.positions?.length) {\n      obj.positions = message.positions.map((e) => PortfolioPosition.toJSON(e));\n    }\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.totalAmountOptions !== undefined) {\n      obj.totalAmountOptions = MoneyValue.toJSON(message.totalAmountOptions);\n    }\n    if (message.totalAmountSp !== undefined) {\n      obj.totalAmountSp = MoneyValue.toJSON(message.totalAmountSp);\n    }\n    if (message.totalAmountPortfolio !== undefined) {\n      obj.totalAmountPortfolio = MoneyValue.toJSON(message.totalAmountPortfolio);\n    }\n    if (message.virtualPositions?.length) {\n      obj.virtualPositions = message.virtualPositions.map((e) => VirtualPortfolioPosition.toJSON(e));\n    }\n    if (message.dailyYield !== undefined) {\n      obj.dailyYield = MoneyValue.toJSON(message.dailyYield);\n    }\n    if (message.dailyYieldRelative !== undefined) {\n      obj.dailyYieldRelative = Quotation.toJSON(message.dailyYieldRelative);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PortfolioResponse>): PortfolioResponse {\n    return PortfolioResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PortfolioResponse>): PortfolioResponse {\n    const message = createBasePortfolioResponse();\n    message.totalAmountShares = (object.totalAmountShares !== undefined && object.totalAmountShares !== null)\n      ? MoneyValue.fromPartial(object.totalAmountShares)\n      : undefined;\n    message.totalAmountBonds = (object.totalAmountBonds !== undefined && object.totalAmountBonds !== null)\n      ? MoneyValue.fromPartial(object.totalAmountBonds)\n      : undefined;\n    message.totalAmountEtf = (object.totalAmountEtf !== undefined && object.totalAmountEtf !== null)\n      ? MoneyValue.fromPartial(object.totalAmountEtf)\n      : undefined;\n    message.totalAmountCurrencies =\n      (object.totalAmountCurrencies !== undefined && object.totalAmountCurrencies !== null)\n        ? MoneyValue.fromPartial(object.totalAmountCurrencies)\n        : undefined;\n    message.totalAmountFutures = (object.totalAmountFutures !== undefined && object.totalAmountFutures !== null)\n      ? MoneyValue.fromPartial(object.totalAmountFutures)\n      : undefined;\n    message.expectedYield = (object.expectedYield !== undefined && object.expectedYield !== null)\n      ? Quotation.fromPartial(object.expectedYield)\n      : undefined;\n    message.positions = object.positions?.map((e) => PortfolioPosition.fromPartial(e)) || [];\n    message.accountId = object.accountId ?? \"\";\n    message.totalAmountOptions = (object.totalAmountOptions !== undefined && object.totalAmountOptions !== null)\n      ? MoneyValue.fromPartial(object.totalAmountOptions)\n      : undefined;\n    message.totalAmountSp = (object.totalAmountSp !== undefined && object.totalAmountSp !== null)\n      ? MoneyValue.fromPartial(object.totalAmountSp)\n      : undefined;\n    message.totalAmountPortfolio = (object.totalAmountPortfolio !== undefined && object.totalAmountPortfolio !== null)\n      ? MoneyValue.fromPartial(object.totalAmountPortfolio)\n      : undefined;\n    message.virtualPositions = object.virtualPositions?.map((e) => VirtualPortfolioPosition.fromPartial(e)) || [];\n    message.dailyYield = (object.dailyYield !== undefined && object.dailyYield !== null)\n      ? MoneyValue.fromPartial(object.dailyYield)\n      : undefined;\n    message.dailyYieldRelative = (object.dailyYieldRelative !== undefined && object.dailyYieldRelative !== null)\n      ? Quotation.fromPartial(object.dailyYieldRelative)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePositionsRequest(): PositionsRequest {\n  return { accountId: \"\" };\n}\n\nexport const PositionsRequest: OperationsUtils.MessageFns<PositionsRequest> = {\n  encode(message: PositionsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsRequest {\n    return { accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\" };\n  },\n\n  toJSON(message: PositionsRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsRequest>): PositionsRequest {\n    return PositionsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsRequest>): PositionsRequest {\n    const message = createBasePositionsRequest();\n    message.accountId = object.accountId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBasePositionsResponse(): PositionsResponse {\n  return {\n    money: [],\n    blocked: [],\n    securities: [],\n    limitsLoadingInProgress: false,\n    futures: [],\n    options: [],\n    accountId: \"\",\n  };\n}\n\nexport const PositionsResponse: OperationsUtils.MessageFns<PositionsResponse> = {\n  encode(message: PositionsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.money) {\n      MoneyValue.encode(v!, writer.uint32(10).fork()).join();\n    }\n    for (const v of message.blocked) {\n      MoneyValue.encode(v!, writer.uint32(18).fork()).join();\n    }\n    for (const v of message.securities) {\n      PositionsSecurities.encode(v!, writer.uint32(26).fork()).join();\n    }\n    if (message.limitsLoadingInProgress !== false) {\n      writer.uint32(32).bool(message.limitsLoadingInProgress);\n    }\n    for (const v of message.futures) {\n      PositionsFutures.encode(v!, writer.uint32(42).fork()).join();\n    }\n    for (const v of message.options) {\n      PositionsOptions.encode(v!, writer.uint32(50).fork()).join();\n    }\n    if (message.accountId !== \"\") {\n      writer.uint32(122).string(message.accountId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.money.push(MoneyValue.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.blocked.push(MoneyValue.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.securities.push(PositionsSecurities.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.limitsLoadingInProgress = reader.bool();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.futures.push(PositionsFutures.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.options.push(PositionsOptions.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsResponse {\n    return {\n      money: globalThis.Array.isArray(object?.money) ? object.money.map((e: any) => MoneyValue.fromJSON(e)) : [],\n      blocked: globalThis.Array.isArray(object?.blocked) ? object.blocked.map((e: any) => MoneyValue.fromJSON(e)) : [],\n      securities: globalThis.Array.isArray(object?.securities)\n        ? object.securities.map((e: any) => PositionsSecurities.fromJSON(e))\n        : [],\n      limitsLoadingInProgress: isSet(object.limitsLoadingInProgress)\n        ? globalThis.Boolean(object.limitsLoadingInProgress)\n        : false,\n      futures: globalThis.Array.isArray(object?.futures)\n        ? object.futures.map((e: any) => PositionsFutures.fromJSON(e))\n        : [],\n      options: globalThis.Array.isArray(object?.options)\n        ? object.options.map((e: any) => PositionsOptions.fromJSON(e))\n        : [],\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n    };\n  },\n\n  toJSON(message: PositionsResponse): unknown {\n    const obj: any = {};\n    if (message.money?.length) {\n      obj.money = message.money.map((e) => MoneyValue.toJSON(e));\n    }\n    if (message.blocked?.length) {\n      obj.blocked = message.blocked.map((e) => MoneyValue.toJSON(e));\n    }\n    if (message.securities?.length) {\n      obj.securities = message.securities.map((e) => PositionsSecurities.toJSON(e));\n    }\n    if (message.limitsLoadingInProgress !== false) {\n      obj.limitsLoadingInProgress = message.limitsLoadingInProgress;\n    }\n    if (message.futures?.length) {\n      obj.futures = message.futures.map((e) => PositionsFutures.toJSON(e));\n    }\n    if (message.options?.length) {\n      obj.options = message.options.map((e) => PositionsOptions.toJSON(e));\n    }\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsResponse>): PositionsResponse {\n    return PositionsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsResponse>): PositionsResponse {\n    const message = createBasePositionsResponse();\n    message.money = object.money?.map((e) => MoneyValue.fromPartial(e)) || [];\n    message.blocked = object.blocked?.map((e) => MoneyValue.fromPartial(e)) || [];\n    message.securities = object.securities?.map((e) => PositionsSecurities.fromPartial(e)) || [];\n    message.limitsLoadingInProgress = object.limitsLoadingInProgress ?? false;\n    message.futures = object.futures?.map((e) => PositionsFutures.fromPartial(e)) || [];\n    message.options = object.options?.map((e) => PositionsOptions.fromPartial(e)) || [];\n    message.accountId = object.accountId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseWithdrawLimitsRequest(): WithdrawLimitsRequest {\n  return { accountId: \"\" };\n}\n\nexport const WithdrawLimitsRequest: OperationsUtils.MessageFns<WithdrawLimitsRequest> = {\n  encode(message: WithdrawLimitsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): WithdrawLimitsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseWithdrawLimitsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): WithdrawLimitsRequest {\n    return { accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\" };\n  },\n\n  toJSON(message: WithdrawLimitsRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<WithdrawLimitsRequest>): WithdrawLimitsRequest {\n    return WithdrawLimitsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<WithdrawLimitsRequest>): WithdrawLimitsRequest {\n    const message = createBaseWithdrawLimitsRequest();\n    message.accountId = object.accountId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseWithdrawLimitsResponse(): WithdrawLimitsResponse {\n  return { money: [], blocked: [], blockedGuarantee: [] };\n}\n\nexport const WithdrawLimitsResponse: OperationsUtils.MessageFns<WithdrawLimitsResponse> = {\n  encode(message: WithdrawLimitsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.money) {\n      MoneyValue.encode(v!, writer.uint32(10).fork()).join();\n    }\n    for (const v of message.blocked) {\n      MoneyValue.encode(v!, writer.uint32(18).fork()).join();\n    }\n    for (const v of message.blockedGuarantee) {\n      MoneyValue.encode(v!, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): WithdrawLimitsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseWithdrawLimitsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.money.push(MoneyValue.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.blocked.push(MoneyValue.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.blockedGuarantee.push(MoneyValue.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): WithdrawLimitsResponse {\n    return {\n      money: globalThis.Array.isArray(object?.money) ? object.money.map((e: any) => MoneyValue.fromJSON(e)) : [],\n      blocked: globalThis.Array.isArray(object?.blocked) ? object.blocked.map((e: any) => MoneyValue.fromJSON(e)) : [],\n      blockedGuarantee: globalThis.Array.isArray(object?.blockedGuarantee)\n        ? object.blockedGuarantee.map((e: any) => MoneyValue.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: WithdrawLimitsResponse): unknown {\n    const obj: any = {};\n    if (message.money?.length) {\n      obj.money = message.money.map((e) => MoneyValue.toJSON(e));\n    }\n    if (message.blocked?.length) {\n      obj.blocked = message.blocked.map((e) => MoneyValue.toJSON(e));\n    }\n    if (message.blockedGuarantee?.length) {\n      obj.blockedGuarantee = message.blockedGuarantee.map((e) => MoneyValue.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<WithdrawLimitsResponse>): WithdrawLimitsResponse {\n    return WithdrawLimitsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<WithdrawLimitsResponse>): WithdrawLimitsResponse {\n    const message = createBaseWithdrawLimitsResponse();\n    message.money = object.money?.map((e) => MoneyValue.fromPartial(e)) || [];\n    message.blocked = object.blocked?.map((e) => MoneyValue.fromPartial(e)) || [];\n    message.blockedGuarantee = object.blockedGuarantee?.map((e) => MoneyValue.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBasePortfolioPosition(): PortfolioPosition {\n  return {\n    figi: \"\",\n    instrumentType: \"\",\n    quantity: undefined,\n    averagePositionPrice: undefined,\n    expectedYield: undefined,\n    currentNkd: undefined,\n    averagePositionPricePt: undefined,\n    currentPrice: undefined,\n    averagePositionPriceFifo: undefined,\n    quantityLots: undefined,\n    blocked: false,\n    blockedLots: undefined,\n    positionUid: \"\",\n    instrumentUid: \"\",\n    varMargin: undefined,\n    expectedYieldFifo: undefined,\n    dailyYield: undefined,\n  };\n}\n\nexport const PortfolioPosition: OperationsUtils.MessageFns<PortfolioPosition> = {\n  encode(message: PortfolioPosition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(18).string(message.instrumentType);\n    }\n    if (message.quantity !== undefined) {\n      Quotation.encode(message.quantity, writer.uint32(26).fork()).join();\n    }\n    if (message.averagePositionPrice !== undefined) {\n      MoneyValue.encode(message.averagePositionPrice, writer.uint32(34).fork()).join();\n    }\n    if (message.expectedYield !== undefined) {\n      Quotation.encode(message.expectedYield, writer.uint32(42).fork()).join();\n    }\n    if (message.currentNkd !== undefined) {\n      MoneyValue.encode(message.currentNkd, writer.uint32(50).fork()).join();\n    }\n    if (message.averagePositionPricePt !== undefined) {\n      Quotation.encode(message.averagePositionPricePt, writer.uint32(58).fork()).join();\n    }\n    if (message.currentPrice !== undefined) {\n      MoneyValue.encode(message.currentPrice, writer.uint32(66).fork()).join();\n    }\n    if (message.averagePositionPriceFifo !== undefined) {\n      MoneyValue.encode(message.averagePositionPriceFifo, writer.uint32(74).fork()).join();\n    }\n    if (message.quantityLots !== undefined) {\n      Quotation.encode(message.quantityLots, writer.uint32(82).fork()).join();\n    }\n    if (message.blocked !== false) {\n      writer.uint32(168).bool(message.blocked);\n    }\n    if (message.blockedLots !== undefined) {\n      Quotation.encode(message.blockedLots, writer.uint32(178).fork()).join();\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(194).string(message.positionUid);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(202).string(message.instrumentUid);\n    }\n    if (message.varMargin !== undefined) {\n      MoneyValue.encode(message.varMargin, writer.uint32(210).fork()).join();\n    }\n    if (message.expectedYieldFifo !== undefined) {\n      Quotation.encode(message.expectedYieldFifo, writer.uint32(218).fork()).join();\n    }\n    if (message.dailyYield !== undefined) {\n      MoneyValue.encode(message.dailyYield, writer.uint32(250).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PortfolioPosition {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePortfolioPosition();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.quantity = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.averagePositionPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.expectedYield = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.currentNkd = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.averagePositionPricePt = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.currentPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.averagePositionPriceFifo = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.quantityLots = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 168) {\n            break;\n          }\n\n          message.blocked = reader.bool();\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.blockedLots = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          message.varMargin = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.expectedYieldFifo = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 31: {\n          if (tag !== 250) {\n            break;\n          }\n\n          message.dailyYield = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PortfolioPosition {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n      quantity: isSet(object.quantity) ? Quotation.fromJSON(object.quantity) : undefined,\n      averagePositionPrice: isSet(object.averagePositionPrice)\n        ? MoneyValue.fromJSON(object.averagePositionPrice)\n        : undefined,\n      expectedYield: isSet(object.expectedYield) ? Quotation.fromJSON(object.expectedYield) : undefined,\n      currentNkd: isSet(object.currentNkd) ? MoneyValue.fromJSON(object.currentNkd) : undefined,\n      averagePositionPricePt: isSet(object.averagePositionPricePt)\n        ? Quotation.fromJSON(object.averagePositionPricePt)\n        : undefined,\n      currentPrice: isSet(object.currentPrice) ? MoneyValue.fromJSON(object.currentPrice) : undefined,\n      averagePositionPriceFifo: isSet(object.averagePositionPriceFifo)\n        ? MoneyValue.fromJSON(object.averagePositionPriceFifo)\n        : undefined,\n      quantityLots: isSet(object.quantityLots) ? Quotation.fromJSON(object.quantityLots) : undefined,\n      blocked: isSet(object.blocked) ? globalThis.Boolean(object.blocked) : false,\n      blockedLots: isSet(object.blockedLots) ? Quotation.fromJSON(object.blockedLots) : undefined,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      varMargin: isSet(object.varMargin) ? MoneyValue.fromJSON(object.varMargin) : undefined,\n      expectedYieldFifo: isSet(object.expectedYieldFifo) ? Quotation.fromJSON(object.expectedYieldFifo) : undefined,\n      dailyYield: isSet(object.dailyYield) ? MoneyValue.fromJSON(object.dailyYield) : undefined,\n    };\n  },\n\n  toJSON(message: PortfolioPosition): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = Quotation.toJSON(message.quantity);\n    }\n    if (message.averagePositionPrice !== undefined) {\n      obj.averagePositionPrice = MoneyValue.toJSON(message.averagePositionPrice);\n    }\n    if (message.expectedYield !== undefined) {\n      obj.expectedYield = Quotation.toJSON(message.expectedYield);\n    }\n    if (message.currentNkd !== undefined) {\n      obj.currentNkd = MoneyValue.toJSON(message.currentNkd);\n    }\n    if (message.averagePositionPricePt !== undefined) {\n      obj.averagePositionPricePt = Quotation.toJSON(message.averagePositionPricePt);\n    }\n    if (message.currentPrice !== undefined) {\n      obj.currentPrice = MoneyValue.toJSON(message.currentPrice);\n    }\n    if (message.averagePositionPriceFifo !== undefined) {\n      obj.averagePositionPriceFifo = MoneyValue.toJSON(message.averagePositionPriceFifo);\n    }\n    if (message.quantityLots !== undefined) {\n      obj.quantityLots = Quotation.toJSON(message.quantityLots);\n    }\n    if (message.blocked !== false) {\n      obj.blocked = message.blocked;\n    }\n    if (message.blockedLots !== undefined) {\n      obj.blockedLots = Quotation.toJSON(message.blockedLots);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.varMargin !== undefined) {\n      obj.varMargin = MoneyValue.toJSON(message.varMargin);\n    }\n    if (message.expectedYieldFifo !== undefined) {\n      obj.expectedYieldFifo = Quotation.toJSON(message.expectedYieldFifo);\n    }\n    if (message.dailyYield !== undefined) {\n      obj.dailyYield = MoneyValue.toJSON(message.dailyYield);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PortfolioPosition>): PortfolioPosition {\n    return PortfolioPosition.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PortfolioPosition>): PortfolioPosition {\n    const message = createBasePortfolioPosition();\n    message.figi = object.figi ?? \"\";\n    message.instrumentType = object.instrumentType ?? \"\";\n    message.quantity = (object.quantity !== undefined && object.quantity !== null)\n      ? Quotation.fromPartial(object.quantity)\n      : undefined;\n    message.averagePositionPrice = (object.averagePositionPrice !== undefined && object.averagePositionPrice !== null)\n      ? MoneyValue.fromPartial(object.averagePositionPrice)\n      : undefined;\n    message.expectedYield = (object.expectedYield !== undefined && object.expectedYield !== null)\n      ? Quotation.fromPartial(object.expectedYield)\n      : undefined;\n    message.currentNkd = (object.currentNkd !== undefined && object.currentNkd !== null)\n      ? MoneyValue.fromPartial(object.currentNkd)\n      : undefined;\n    message.averagePositionPricePt =\n      (object.averagePositionPricePt !== undefined && object.averagePositionPricePt !== null)\n        ? Quotation.fromPartial(object.averagePositionPricePt)\n        : undefined;\n    message.currentPrice = (object.currentPrice !== undefined && object.currentPrice !== null)\n      ? MoneyValue.fromPartial(object.currentPrice)\n      : undefined;\n    message.averagePositionPriceFifo =\n      (object.averagePositionPriceFifo !== undefined && object.averagePositionPriceFifo !== null)\n        ? MoneyValue.fromPartial(object.averagePositionPriceFifo)\n        : undefined;\n    message.quantityLots = (object.quantityLots !== undefined && object.quantityLots !== null)\n      ? Quotation.fromPartial(object.quantityLots)\n      : undefined;\n    message.blocked = object.blocked ?? false;\n    message.blockedLots = (object.blockedLots !== undefined && object.blockedLots !== null)\n      ? Quotation.fromPartial(object.blockedLots)\n      : undefined;\n    message.positionUid = object.positionUid ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.varMargin = (object.varMargin !== undefined && object.varMargin !== null)\n      ? MoneyValue.fromPartial(object.varMargin)\n      : undefined;\n    message.expectedYieldFifo = (object.expectedYieldFifo !== undefined && object.expectedYieldFifo !== null)\n      ? Quotation.fromPartial(object.expectedYieldFifo)\n      : undefined;\n    message.dailyYield = (object.dailyYield !== undefined && object.dailyYield !== null)\n      ? MoneyValue.fromPartial(object.dailyYield)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseVirtualPortfolioPosition(): VirtualPortfolioPosition {\n  return {\n    positionUid: \"\",\n    instrumentUid: \"\",\n    figi: \"\",\n    instrumentType: \"\",\n    quantity: undefined,\n    averagePositionPrice: undefined,\n    expectedYield: undefined,\n    expectedYieldFifo: undefined,\n    expireDate: undefined,\n    currentPrice: undefined,\n    averagePositionPriceFifo: undefined,\n    dailyYield: undefined,\n  };\n}\n\nexport const VirtualPortfolioPosition: OperationsUtils.MessageFns<VirtualPortfolioPosition> = {\n  encode(message: VirtualPortfolioPosition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.positionUid !== \"\") {\n      writer.uint32(10).string(message.positionUid);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(18).string(message.instrumentUid);\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(26).string(message.figi);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(34).string(message.instrumentType);\n    }\n    if (message.quantity !== undefined) {\n      Quotation.encode(message.quantity, writer.uint32(42).fork()).join();\n    }\n    if (message.averagePositionPrice !== undefined) {\n      MoneyValue.encode(message.averagePositionPrice, writer.uint32(50).fork()).join();\n    }\n    if (message.expectedYield !== undefined) {\n      Quotation.encode(message.expectedYield, writer.uint32(58).fork()).join();\n    }\n    if (message.expectedYieldFifo !== undefined) {\n      Quotation.encode(message.expectedYieldFifo, writer.uint32(66).fork()).join();\n    }\n    if (message.expireDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.expireDate), writer.uint32(74).fork()).join();\n    }\n    if (message.currentPrice !== undefined) {\n      MoneyValue.encode(message.currentPrice, writer.uint32(82).fork()).join();\n    }\n    if (message.averagePositionPriceFifo !== undefined) {\n      MoneyValue.encode(message.averagePositionPriceFifo, writer.uint32(90).fork()).join();\n    }\n    if (message.dailyYield !== undefined) {\n      MoneyValue.encode(message.dailyYield, writer.uint32(250).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): VirtualPortfolioPosition {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseVirtualPortfolioPosition();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.quantity = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.averagePositionPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.expectedYield = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.expectedYieldFifo = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.expireDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.currentPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.averagePositionPriceFifo = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 31: {\n          if (tag !== 250) {\n            break;\n          }\n\n          message.dailyYield = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): VirtualPortfolioPosition {\n    return {\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n      quantity: isSet(object.quantity) ? Quotation.fromJSON(object.quantity) : undefined,\n      averagePositionPrice: isSet(object.averagePositionPrice)\n        ? MoneyValue.fromJSON(object.averagePositionPrice)\n        : undefined,\n      expectedYield: isSet(object.expectedYield) ? Quotation.fromJSON(object.expectedYield) : undefined,\n      expectedYieldFifo: isSet(object.expectedYieldFifo) ? Quotation.fromJSON(object.expectedYieldFifo) : undefined,\n      expireDate: isSet(object.expireDate) ? fromJsonTimestamp(object.expireDate) : undefined,\n      currentPrice: isSet(object.currentPrice) ? MoneyValue.fromJSON(object.currentPrice) : undefined,\n      averagePositionPriceFifo: isSet(object.averagePositionPriceFifo)\n        ? MoneyValue.fromJSON(object.averagePositionPriceFifo)\n        : undefined,\n      dailyYield: isSet(object.dailyYield) ? MoneyValue.fromJSON(object.dailyYield) : undefined,\n    };\n  },\n\n  toJSON(message: VirtualPortfolioPosition): unknown {\n    const obj: any = {};\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = Quotation.toJSON(message.quantity);\n    }\n    if (message.averagePositionPrice !== undefined) {\n      obj.averagePositionPrice = MoneyValue.toJSON(message.averagePositionPrice);\n    }\n    if (message.expectedYield !== undefined) {\n      obj.expectedYield = Quotation.toJSON(message.expectedYield);\n    }\n    if (message.expectedYieldFifo !== undefined) {\n      obj.expectedYieldFifo = Quotation.toJSON(message.expectedYieldFifo);\n    }\n    if (message.expireDate !== undefined) {\n      obj.expireDate = message.expireDate.toISOString();\n    }\n    if (message.currentPrice !== undefined) {\n      obj.currentPrice = MoneyValue.toJSON(message.currentPrice);\n    }\n    if (message.averagePositionPriceFifo !== undefined) {\n      obj.averagePositionPriceFifo = MoneyValue.toJSON(message.averagePositionPriceFifo);\n    }\n    if (message.dailyYield !== undefined) {\n      obj.dailyYield = MoneyValue.toJSON(message.dailyYield);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<VirtualPortfolioPosition>): VirtualPortfolioPosition {\n    return VirtualPortfolioPosition.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<VirtualPortfolioPosition>): VirtualPortfolioPosition {\n    const message = createBaseVirtualPortfolioPosition();\n    message.positionUid = object.positionUid ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.figi = object.figi ?? \"\";\n    message.instrumentType = object.instrumentType ?? \"\";\n    message.quantity = (object.quantity !== undefined && object.quantity !== null)\n      ? Quotation.fromPartial(object.quantity)\n      : undefined;\n    message.averagePositionPrice = (object.averagePositionPrice !== undefined && object.averagePositionPrice !== null)\n      ? MoneyValue.fromPartial(object.averagePositionPrice)\n      : undefined;\n    message.expectedYield = (object.expectedYield !== undefined && object.expectedYield !== null)\n      ? Quotation.fromPartial(object.expectedYield)\n      : undefined;\n    message.expectedYieldFifo = (object.expectedYieldFifo !== undefined && object.expectedYieldFifo !== null)\n      ? Quotation.fromPartial(object.expectedYieldFifo)\n      : undefined;\n    message.expireDate = object.expireDate ?? undefined;\n    message.currentPrice = (object.currentPrice !== undefined && object.currentPrice !== null)\n      ? MoneyValue.fromPartial(object.currentPrice)\n      : undefined;\n    message.averagePositionPriceFifo =\n      (object.averagePositionPriceFifo !== undefined && object.averagePositionPriceFifo !== null)\n        ? MoneyValue.fromPartial(object.averagePositionPriceFifo)\n        : undefined;\n    message.dailyYield = (object.dailyYield !== undefined && object.dailyYield !== null)\n      ? MoneyValue.fromPartial(object.dailyYield)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePositionsSecurities(): PositionsSecurities {\n  return {\n    figi: \"\",\n    blocked: 0,\n    balance: 0,\n    positionUid: \"\",\n    instrumentUid: \"\",\n    exchangeBlocked: false,\n    instrumentType: \"\",\n  };\n}\n\nexport const PositionsSecurities: OperationsUtils.MessageFns<PositionsSecurities> = {\n  encode(message: PositionsSecurities, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.blocked !== 0) {\n      writer.uint32(16).int64(message.blocked);\n    }\n    if (message.balance !== 0) {\n      writer.uint32(24).int64(message.balance);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(34).string(message.positionUid);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(42).string(message.instrumentUid);\n    }\n    if (message.exchangeBlocked !== false) {\n      writer.uint32(88).bool(message.exchangeBlocked);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(130).string(message.instrumentType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsSecurities {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsSecurities();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.blocked = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.balance = longToNumber(reader.int64());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.exchangeBlocked = reader.bool();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsSecurities {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      blocked: isSet(object.blocked) ? globalThis.Number(object.blocked) : 0,\n      balance: isSet(object.balance) ? globalThis.Number(object.balance) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      exchangeBlocked: isSet(object.exchangeBlocked) ? globalThis.Boolean(object.exchangeBlocked) : false,\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n    };\n  },\n\n  toJSON(message: PositionsSecurities): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.blocked !== 0) {\n      obj.blocked = Math.round(message.blocked);\n    }\n    if (message.balance !== 0) {\n      obj.balance = Math.round(message.balance);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.exchangeBlocked !== false) {\n      obj.exchangeBlocked = message.exchangeBlocked;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsSecurities>): PositionsSecurities {\n    return PositionsSecurities.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsSecurities>): PositionsSecurities {\n    const message = createBasePositionsSecurities();\n    message.figi = object.figi ?? \"\";\n    message.blocked = object.blocked ?? 0;\n    message.balance = object.balance ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.exchangeBlocked = object.exchangeBlocked ?? false;\n    message.instrumentType = object.instrumentType ?? \"\";\n    return message;\n  },\n};\n\nfunction createBasePositionsFutures(): PositionsFutures {\n  return { figi: \"\", blocked: 0, balance: 0, positionUid: \"\", instrumentUid: \"\" };\n}\n\nexport const PositionsFutures: OperationsUtils.MessageFns<PositionsFutures> = {\n  encode(message: PositionsFutures, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.blocked !== 0) {\n      writer.uint32(16).int64(message.blocked);\n    }\n    if (message.balance !== 0) {\n      writer.uint32(24).int64(message.balance);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(34).string(message.positionUid);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(42).string(message.instrumentUid);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsFutures {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsFutures();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.blocked = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.balance = longToNumber(reader.int64());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsFutures {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      blocked: isSet(object.blocked) ? globalThis.Number(object.blocked) : 0,\n      balance: isSet(object.balance) ? globalThis.Number(object.balance) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n    };\n  },\n\n  toJSON(message: PositionsFutures): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.blocked !== 0) {\n      obj.blocked = Math.round(message.blocked);\n    }\n    if (message.balance !== 0) {\n      obj.balance = Math.round(message.balance);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsFutures>): PositionsFutures {\n    return PositionsFutures.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsFutures>): PositionsFutures {\n    const message = createBasePositionsFutures();\n    message.figi = object.figi ?? \"\";\n    message.blocked = object.blocked ?? 0;\n    message.balance = object.balance ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    return message;\n  },\n};\n\nfunction createBasePositionsOptions(): PositionsOptions {\n  return { positionUid: \"\", instrumentUid: \"\", blocked: 0, balance: 0 };\n}\n\nexport const PositionsOptions: OperationsUtils.MessageFns<PositionsOptions> = {\n  encode(message: PositionsOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.positionUid !== \"\") {\n      writer.uint32(10).string(message.positionUid);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(18).string(message.instrumentUid);\n    }\n    if (message.blocked !== 0) {\n      writer.uint32(88).int64(message.blocked);\n    }\n    if (message.balance !== 0) {\n      writer.uint32(168).int64(message.balance);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.blocked = longToNumber(reader.int64());\n          continue;\n        }\n        case 21: {\n          if (tag !== 168) {\n            break;\n          }\n\n          message.balance = longToNumber(reader.int64());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsOptions {\n    return {\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      blocked: isSet(object.blocked) ? globalThis.Number(object.blocked) : 0,\n      balance: isSet(object.balance) ? globalThis.Number(object.balance) : 0,\n    };\n  },\n\n  toJSON(message: PositionsOptions): unknown {\n    const obj: any = {};\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.blocked !== 0) {\n      obj.blocked = Math.round(message.blocked);\n    }\n    if (message.balance !== 0) {\n      obj.balance = Math.round(message.balance);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsOptions>): PositionsOptions {\n    return PositionsOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsOptions>): PositionsOptions {\n    const message = createBasePositionsOptions();\n    message.positionUid = object.positionUid ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.blocked = object.blocked ?? 0;\n    message.balance = object.balance ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseBrokerReportRequest(): BrokerReportRequest {\n  return { generateBrokerReportRequest: undefined, getBrokerReportRequest: undefined };\n}\n\nexport const BrokerReportRequest: OperationsUtils.MessageFns<BrokerReportRequest> = {\n  encode(message: BrokerReportRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.generateBrokerReportRequest !== undefined) {\n      GenerateBrokerReportRequest.encode(message.generateBrokerReportRequest, writer.uint32(10).fork()).join();\n    }\n    if (message.getBrokerReportRequest !== undefined) {\n      GetBrokerReportRequest.encode(message.getBrokerReportRequest, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BrokerReportRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBrokerReportRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.generateBrokerReportRequest = GenerateBrokerReportRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.getBrokerReportRequest = GetBrokerReportRequest.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BrokerReportRequest {\n    return {\n      generateBrokerReportRequest: isSet(object.generateBrokerReportRequest)\n        ? GenerateBrokerReportRequest.fromJSON(object.generateBrokerReportRequest)\n        : undefined,\n      getBrokerReportRequest: isSet(object.getBrokerReportRequest)\n        ? GetBrokerReportRequest.fromJSON(object.getBrokerReportRequest)\n        : undefined,\n    };\n  },\n\n  toJSON(message: BrokerReportRequest): unknown {\n    const obj: any = {};\n    if (message.generateBrokerReportRequest !== undefined) {\n      obj.generateBrokerReportRequest = GenerateBrokerReportRequest.toJSON(message.generateBrokerReportRequest);\n    }\n    if (message.getBrokerReportRequest !== undefined) {\n      obj.getBrokerReportRequest = GetBrokerReportRequest.toJSON(message.getBrokerReportRequest);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BrokerReportRequest>): BrokerReportRequest {\n    return BrokerReportRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BrokerReportRequest>): BrokerReportRequest {\n    const message = createBaseBrokerReportRequest();\n    message.generateBrokerReportRequest =\n      (object.generateBrokerReportRequest !== undefined && object.generateBrokerReportRequest !== null)\n        ? GenerateBrokerReportRequest.fromPartial(object.generateBrokerReportRequest)\n        : undefined;\n    message.getBrokerReportRequest =\n      (object.getBrokerReportRequest !== undefined && object.getBrokerReportRequest !== null)\n        ? GetBrokerReportRequest.fromPartial(object.getBrokerReportRequest)\n        : undefined;\n    return message;\n  },\n};\n\nfunction createBaseBrokerReportResponse(): BrokerReportResponse {\n  return { generateBrokerReportResponse: undefined, getBrokerReportResponse: undefined };\n}\n\nexport const BrokerReportResponse: OperationsUtils.MessageFns<BrokerReportResponse> = {\n  encode(message: BrokerReportResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.generateBrokerReportResponse !== undefined) {\n      GenerateBrokerReportResponse.encode(message.generateBrokerReportResponse, writer.uint32(10).fork()).join();\n    }\n    if (message.getBrokerReportResponse !== undefined) {\n      GetBrokerReportResponse.encode(message.getBrokerReportResponse, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BrokerReportResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBrokerReportResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.generateBrokerReportResponse = GenerateBrokerReportResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.getBrokerReportResponse = GetBrokerReportResponse.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BrokerReportResponse {\n    return {\n      generateBrokerReportResponse: isSet(object.generateBrokerReportResponse)\n        ? GenerateBrokerReportResponse.fromJSON(object.generateBrokerReportResponse)\n        : undefined,\n      getBrokerReportResponse: isSet(object.getBrokerReportResponse)\n        ? GetBrokerReportResponse.fromJSON(object.getBrokerReportResponse)\n        : undefined,\n    };\n  },\n\n  toJSON(message: BrokerReportResponse): unknown {\n    const obj: any = {};\n    if (message.generateBrokerReportResponse !== undefined) {\n      obj.generateBrokerReportResponse = GenerateBrokerReportResponse.toJSON(message.generateBrokerReportResponse);\n    }\n    if (message.getBrokerReportResponse !== undefined) {\n      obj.getBrokerReportResponse = GetBrokerReportResponse.toJSON(message.getBrokerReportResponse);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BrokerReportResponse>): BrokerReportResponse {\n    return BrokerReportResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BrokerReportResponse>): BrokerReportResponse {\n    const message = createBaseBrokerReportResponse();\n    message.generateBrokerReportResponse =\n      (object.generateBrokerReportResponse !== undefined && object.generateBrokerReportResponse !== null)\n        ? GenerateBrokerReportResponse.fromPartial(object.generateBrokerReportResponse)\n        : undefined;\n    message.getBrokerReportResponse =\n      (object.getBrokerReportResponse !== undefined && object.getBrokerReportResponse !== null)\n        ? GetBrokerReportResponse.fromPartial(object.getBrokerReportResponse)\n        : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGenerateBrokerReportRequest(): GenerateBrokerReportRequest {\n  return { accountId: \"\", from: undefined, to: undefined };\n}\n\nexport const GenerateBrokerReportRequest: OperationsUtils.MessageFns<GenerateBrokerReportRequest> = {\n  encode(message: GenerateBrokerReportRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GenerateBrokerReportRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGenerateBrokerReportRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GenerateBrokerReportRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n    };\n  },\n\n  toJSON(message: GenerateBrokerReportRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GenerateBrokerReportRequest>): GenerateBrokerReportRequest {\n    return GenerateBrokerReportRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GenerateBrokerReportRequest>): GenerateBrokerReportRequest {\n    const message = createBaseGenerateBrokerReportRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGenerateBrokerReportResponse(): GenerateBrokerReportResponse {\n  return { taskId: \"\" };\n}\n\nexport const GenerateBrokerReportResponse: OperationsUtils.MessageFns<GenerateBrokerReportResponse> = {\n  encode(message: GenerateBrokerReportResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.taskId !== \"\") {\n      writer.uint32(10).string(message.taskId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GenerateBrokerReportResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGenerateBrokerReportResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.taskId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GenerateBrokerReportResponse {\n    return { taskId: isSet(object.taskId) ? globalThis.String(object.taskId) : \"\" };\n  },\n\n  toJSON(message: GenerateBrokerReportResponse): unknown {\n    const obj: any = {};\n    if (message.taskId !== \"\") {\n      obj.taskId = message.taskId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GenerateBrokerReportResponse>): GenerateBrokerReportResponse {\n    return GenerateBrokerReportResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GenerateBrokerReportResponse>): GenerateBrokerReportResponse {\n    const message = createBaseGenerateBrokerReportResponse();\n    message.taskId = object.taskId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetBrokerReportRequest(): GetBrokerReportRequest {\n  return { taskId: \"\", page: undefined };\n}\n\nexport const GetBrokerReportRequest: OperationsUtils.MessageFns<GetBrokerReportRequest> = {\n  encode(message: GetBrokerReportRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.taskId !== \"\") {\n      writer.uint32(10).string(message.taskId);\n    }\n    if (message.page !== undefined) {\n      writer.uint32(16).int32(message.page);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBrokerReportRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBrokerReportRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.taskId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.page = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBrokerReportRequest {\n    return {\n      taskId: isSet(object.taskId) ? globalThis.String(object.taskId) : \"\",\n      page: isSet(object.page) ? globalThis.Number(object.page) : undefined,\n    };\n  },\n\n  toJSON(message: GetBrokerReportRequest): unknown {\n    const obj: any = {};\n    if (message.taskId !== \"\") {\n      obj.taskId = message.taskId;\n    }\n    if (message.page !== undefined) {\n      obj.page = Math.round(message.page);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBrokerReportRequest>): GetBrokerReportRequest {\n    return GetBrokerReportRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBrokerReportRequest>): GetBrokerReportRequest {\n    const message = createBaseGetBrokerReportRequest();\n    message.taskId = object.taskId ?? \"\";\n    message.page = object.page ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetBrokerReportResponse(): GetBrokerReportResponse {\n  return { brokerReport: [], itemsCount: 0, pagesCount: 0, page: 0 };\n}\n\nexport const GetBrokerReportResponse: OperationsUtils.MessageFns<GetBrokerReportResponse> = {\n  encode(message: GetBrokerReportResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.brokerReport) {\n      BrokerReport.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.itemsCount !== 0) {\n      writer.uint32(16).int32(message.itemsCount);\n    }\n    if (message.pagesCount !== 0) {\n      writer.uint32(24).int32(message.pagesCount);\n    }\n    if (message.page !== 0) {\n      writer.uint32(32).int32(message.page);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetBrokerReportResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetBrokerReportResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.brokerReport.push(BrokerReport.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.itemsCount = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.pagesCount = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.page = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetBrokerReportResponse {\n    return {\n      brokerReport: globalThis.Array.isArray(object?.brokerReport)\n        ? object.brokerReport.map((e: any) => BrokerReport.fromJSON(e))\n        : [],\n      itemsCount: isSet(object.itemsCount) ? globalThis.Number(object.itemsCount) : 0,\n      pagesCount: isSet(object.pagesCount) ? globalThis.Number(object.pagesCount) : 0,\n      page: isSet(object.page) ? globalThis.Number(object.page) : 0,\n    };\n  },\n\n  toJSON(message: GetBrokerReportResponse): unknown {\n    const obj: any = {};\n    if (message.brokerReport?.length) {\n      obj.brokerReport = message.brokerReport.map((e) => BrokerReport.toJSON(e));\n    }\n    if (message.itemsCount !== 0) {\n      obj.itemsCount = Math.round(message.itemsCount);\n    }\n    if (message.pagesCount !== 0) {\n      obj.pagesCount = Math.round(message.pagesCount);\n    }\n    if (message.page !== 0) {\n      obj.page = Math.round(message.page);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetBrokerReportResponse>): GetBrokerReportResponse {\n    return GetBrokerReportResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetBrokerReportResponse>): GetBrokerReportResponse {\n    const message = createBaseGetBrokerReportResponse();\n    message.brokerReport = object.brokerReport?.map((e) => BrokerReport.fromPartial(e)) || [];\n    message.itemsCount = object.itemsCount ?? 0;\n    message.pagesCount = object.pagesCount ?? 0;\n    message.page = object.page ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseBrokerReport(): BrokerReport {\n  return {\n    tradeId: \"\",\n    orderId: \"\",\n    figi: \"\",\n    executeSign: \"\",\n    tradeDatetime: undefined,\n    exchange: \"\",\n    classCode: \"\",\n    direction: \"\",\n    name: \"\",\n    ticker: \"\",\n    price: undefined,\n    quantity: 0,\n    orderAmount: undefined,\n    aciValue: undefined,\n    totalOrderAmount: undefined,\n    brokerCommission: undefined,\n    exchangeCommission: undefined,\n    exchangeClearingCommission: undefined,\n    repoRate: undefined,\n    party: \"\",\n    clearValueDate: undefined,\n    secValueDate: undefined,\n    brokerStatus: \"\",\n    separateAgreementType: \"\",\n    separateAgreementNumber: \"\",\n    separateAgreementDate: \"\",\n    deliveryType: \"\",\n  };\n}\n\nexport const BrokerReport: OperationsUtils.MessageFns<BrokerReport> = {\n  encode(message: BrokerReport, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.tradeId !== \"\") {\n      writer.uint32(10).string(message.tradeId);\n    }\n    if (message.orderId !== \"\") {\n      writer.uint32(18).string(message.orderId);\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(26).string(message.figi);\n    }\n    if (message.executeSign !== \"\") {\n      writer.uint32(34).string(message.executeSign);\n    }\n    if (message.tradeDatetime !== undefined) {\n      Timestamp.encode(toTimestamp(message.tradeDatetime), writer.uint32(42).fork()).join();\n    }\n    if (message.exchange !== \"\") {\n      writer.uint32(50).string(message.exchange);\n    }\n    if (message.classCode !== \"\") {\n      writer.uint32(58).string(message.classCode);\n    }\n    if (message.direction !== \"\") {\n      writer.uint32(66).string(message.direction);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(74).string(message.name);\n    }\n    if (message.ticker !== \"\") {\n      writer.uint32(82).string(message.ticker);\n    }\n    if (message.price !== undefined) {\n      MoneyValue.encode(message.price, writer.uint32(90).fork()).join();\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(96).int64(message.quantity);\n    }\n    if (message.orderAmount !== undefined) {\n      MoneyValue.encode(message.orderAmount, writer.uint32(106).fork()).join();\n    }\n    if (message.aciValue !== undefined) {\n      Quotation.encode(message.aciValue, writer.uint32(114).fork()).join();\n    }\n    if (message.totalOrderAmount !== undefined) {\n      MoneyValue.encode(message.totalOrderAmount, writer.uint32(122).fork()).join();\n    }\n    if (message.brokerCommission !== undefined) {\n      MoneyValue.encode(message.brokerCommission, writer.uint32(130).fork()).join();\n    }\n    if (message.exchangeCommission !== undefined) {\n      MoneyValue.encode(message.exchangeCommission, writer.uint32(138).fork()).join();\n    }\n    if (message.exchangeClearingCommission !== undefined) {\n      MoneyValue.encode(message.exchangeClearingCommission, writer.uint32(146).fork()).join();\n    }\n    if (message.repoRate !== undefined) {\n      Quotation.encode(message.repoRate, writer.uint32(154).fork()).join();\n    }\n    if (message.party !== \"\") {\n      writer.uint32(162).string(message.party);\n    }\n    if (message.clearValueDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.clearValueDate), writer.uint32(170).fork()).join();\n    }\n    if (message.secValueDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.secValueDate), writer.uint32(178).fork()).join();\n    }\n    if (message.brokerStatus !== \"\") {\n      writer.uint32(186).string(message.brokerStatus);\n    }\n    if (message.separateAgreementType !== \"\") {\n      writer.uint32(194).string(message.separateAgreementType);\n    }\n    if (message.separateAgreementNumber !== \"\") {\n      writer.uint32(202).string(message.separateAgreementNumber);\n    }\n    if (message.separateAgreementDate !== \"\") {\n      writer.uint32(210).string(message.separateAgreementDate);\n    }\n    if (message.deliveryType !== \"\") {\n      writer.uint32(218).string(message.deliveryType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BrokerReport {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBrokerReport();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.tradeId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.executeSign = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.tradeDatetime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.exchange = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.classCode = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.direction = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.ticker = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.price = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.orderAmount = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.aciValue = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.totalOrderAmount = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.brokerCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.exchangeCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.exchangeClearingCommission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.repoRate = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.party = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.clearValueDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.secValueDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.brokerStatus = reader.string();\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.separateAgreementType = reader.string();\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          message.separateAgreementNumber = reader.string();\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          message.separateAgreementDate = reader.string();\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.deliveryType = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BrokerReport {\n    return {\n      tradeId: isSet(object.tradeId) ? globalThis.String(object.tradeId) : \"\",\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      executeSign: isSet(object.executeSign) ? globalThis.String(object.executeSign) : \"\",\n      tradeDatetime: isSet(object.tradeDatetime) ? fromJsonTimestamp(object.tradeDatetime) : undefined,\n      exchange: isSet(object.exchange) ? globalThis.String(object.exchange) : \"\",\n      classCode: isSet(object.classCode) ? globalThis.String(object.classCode) : \"\",\n      direction: isSet(object.direction) ? globalThis.String(object.direction) : \"\",\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      ticker: isSet(object.ticker) ? globalThis.String(object.ticker) : \"\",\n      price: isSet(object.price) ? MoneyValue.fromJSON(object.price) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      orderAmount: isSet(object.orderAmount) ? MoneyValue.fromJSON(object.orderAmount) : undefined,\n      aciValue: isSet(object.aciValue) ? Quotation.fromJSON(object.aciValue) : undefined,\n      totalOrderAmount: isSet(object.totalOrderAmount) ? MoneyValue.fromJSON(object.totalOrderAmount) : undefined,\n      brokerCommission: isSet(object.brokerCommission) ? MoneyValue.fromJSON(object.brokerCommission) : undefined,\n      exchangeCommission: isSet(object.exchangeCommission) ? MoneyValue.fromJSON(object.exchangeCommission) : undefined,\n      exchangeClearingCommission: isSet(object.exchangeClearingCommission)\n        ? MoneyValue.fromJSON(object.exchangeClearingCommission)\n        : undefined,\n      repoRate: isSet(object.repoRate) ? Quotation.fromJSON(object.repoRate) : undefined,\n      party: isSet(object.party) ? globalThis.String(object.party) : \"\",\n      clearValueDate: isSet(object.clearValueDate) ? fromJsonTimestamp(object.clearValueDate) : undefined,\n      secValueDate: isSet(object.secValueDate) ? fromJsonTimestamp(object.secValueDate) : undefined,\n      brokerStatus: isSet(object.brokerStatus) ? globalThis.String(object.brokerStatus) : \"\",\n      separateAgreementType: isSet(object.separateAgreementType) ? globalThis.String(object.separateAgreementType) : \"\",\n      separateAgreementNumber: isSet(object.separateAgreementNumber)\n        ? globalThis.String(object.separateAgreementNumber)\n        : \"\",\n      separateAgreementDate: isSet(object.separateAgreementDate) ? globalThis.String(object.separateAgreementDate) : \"\",\n      deliveryType: isSet(object.deliveryType) ? globalThis.String(object.deliveryType) : \"\",\n    };\n  },\n\n  toJSON(message: BrokerReport): unknown {\n    const obj: any = {};\n    if (message.tradeId !== \"\") {\n      obj.tradeId = message.tradeId;\n    }\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.executeSign !== \"\") {\n      obj.executeSign = message.executeSign;\n    }\n    if (message.tradeDatetime !== undefined) {\n      obj.tradeDatetime = message.tradeDatetime.toISOString();\n    }\n    if (message.exchange !== \"\") {\n      obj.exchange = message.exchange;\n    }\n    if (message.classCode !== \"\") {\n      obj.classCode = message.classCode;\n    }\n    if (message.direction !== \"\") {\n      obj.direction = message.direction;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.ticker !== \"\") {\n      obj.ticker = message.ticker;\n    }\n    if (message.price !== undefined) {\n      obj.price = MoneyValue.toJSON(message.price);\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.orderAmount !== undefined) {\n      obj.orderAmount = MoneyValue.toJSON(message.orderAmount);\n    }\n    if (message.aciValue !== undefined) {\n      obj.aciValue = Quotation.toJSON(message.aciValue);\n    }\n    if (message.totalOrderAmount !== undefined) {\n      obj.totalOrderAmount = MoneyValue.toJSON(message.totalOrderAmount);\n    }\n    if (message.brokerCommission !== undefined) {\n      obj.brokerCommission = MoneyValue.toJSON(message.brokerCommission);\n    }\n    if (message.exchangeCommission !== undefined) {\n      obj.exchangeCommission = MoneyValue.toJSON(message.exchangeCommission);\n    }\n    if (message.exchangeClearingCommission !== undefined) {\n      obj.exchangeClearingCommission = MoneyValue.toJSON(message.exchangeClearingCommission);\n    }\n    if (message.repoRate !== undefined) {\n      obj.repoRate = Quotation.toJSON(message.repoRate);\n    }\n    if (message.party !== \"\") {\n      obj.party = message.party;\n    }\n    if (message.clearValueDate !== undefined) {\n      obj.clearValueDate = message.clearValueDate.toISOString();\n    }\n    if (message.secValueDate !== undefined) {\n      obj.secValueDate = message.secValueDate.toISOString();\n    }\n    if (message.brokerStatus !== \"\") {\n      obj.brokerStatus = message.brokerStatus;\n    }\n    if (message.separateAgreementType !== \"\") {\n      obj.separateAgreementType = message.separateAgreementType;\n    }\n    if (message.separateAgreementNumber !== \"\") {\n      obj.separateAgreementNumber = message.separateAgreementNumber;\n    }\n    if (message.separateAgreementDate !== \"\") {\n      obj.separateAgreementDate = message.separateAgreementDate;\n    }\n    if (message.deliveryType !== \"\") {\n      obj.deliveryType = message.deliveryType;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BrokerReport>): BrokerReport {\n    return BrokerReport.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BrokerReport>): BrokerReport {\n    const message = createBaseBrokerReport();\n    message.tradeId = object.tradeId ?? \"\";\n    message.orderId = object.orderId ?? \"\";\n    message.figi = object.figi ?? \"\";\n    message.executeSign = object.executeSign ?? \"\";\n    message.tradeDatetime = object.tradeDatetime ?? undefined;\n    message.exchange = object.exchange ?? \"\";\n    message.classCode = object.classCode ?? \"\";\n    message.direction = object.direction ?? \"\";\n    message.name = object.name ?? \"\";\n    message.ticker = object.ticker ?? \"\";\n    message.price = (object.price !== undefined && object.price !== null)\n      ? MoneyValue.fromPartial(object.price)\n      : undefined;\n    message.quantity = object.quantity ?? 0;\n    message.orderAmount = (object.orderAmount !== undefined && object.orderAmount !== null)\n      ? MoneyValue.fromPartial(object.orderAmount)\n      : undefined;\n    message.aciValue = (object.aciValue !== undefined && object.aciValue !== null)\n      ? Quotation.fromPartial(object.aciValue)\n      : undefined;\n    message.totalOrderAmount = (object.totalOrderAmount !== undefined && object.totalOrderAmount !== null)\n      ? MoneyValue.fromPartial(object.totalOrderAmount)\n      : undefined;\n    message.brokerCommission = (object.brokerCommission !== undefined && object.brokerCommission !== null)\n      ? MoneyValue.fromPartial(object.brokerCommission)\n      : undefined;\n    message.exchangeCommission = (object.exchangeCommission !== undefined && object.exchangeCommission !== null)\n      ? MoneyValue.fromPartial(object.exchangeCommission)\n      : undefined;\n    message.exchangeClearingCommission =\n      (object.exchangeClearingCommission !== undefined && object.exchangeClearingCommission !== null)\n        ? MoneyValue.fromPartial(object.exchangeClearingCommission)\n        : undefined;\n    message.repoRate = (object.repoRate !== undefined && object.repoRate !== null)\n      ? Quotation.fromPartial(object.repoRate)\n      : undefined;\n    message.party = object.party ?? \"\";\n    message.clearValueDate = object.clearValueDate ?? undefined;\n    message.secValueDate = object.secValueDate ?? undefined;\n    message.brokerStatus = object.brokerStatus ?? \"\";\n    message.separateAgreementType = object.separateAgreementType ?? \"\";\n    message.separateAgreementNumber = object.separateAgreementNumber ?? \"\";\n    message.separateAgreementDate = object.separateAgreementDate ?? \"\";\n    message.deliveryType = object.deliveryType ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetDividendsForeignIssuerRequest(): GetDividendsForeignIssuerRequest {\n  return { generateDivForeignIssuerReport: undefined, getDivForeignIssuerReport: undefined };\n}\n\nexport const GetDividendsForeignIssuerRequest: OperationsUtils.MessageFns<GetDividendsForeignIssuerRequest> = {\n  encode(message: GetDividendsForeignIssuerRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.generateDivForeignIssuerReport !== undefined) {\n      GenerateDividendsForeignIssuerReportRequest.encode(\n        message.generateDivForeignIssuerReport,\n        writer.uint32(10).fork(),\n      ).join();\n    }\n    if (message.getDivForeignIssuerReport !== undefined) {\n      GetDividendsForeignIssuerReportRequest.encode(message.getDivForeignIssuerReport, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetDividendsForeignIssuerRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetDividendsForeignIssuerRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.generateDivForeignIssuerReport = GenerateDividendsForeignIssuerReportRequest.decode(\n            reader,\n            reader.uint32(),\n          );\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.getDivForeignIssuerReport = GetDividendsForeignIssuerReportRequest.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetDividendsForeignIssuerRequest {\n    return {\n      generateDivForeignIssuerReport: isSet(object.generateDivForeignIssuerReport)\n        ? GenerateDividendsForeignIssuerReportRequest.fromJSON(object.generateDivForeignIssuerReport)\n        : undefined,\n      getDivForeignIssuerReport: isSet(object.getDivForeignIssuerReport)\n        ? GetDividendsForeignIssuerReportRequest.fromJSON(object.getDivForeignIssuerReport)\n        : undefined,\n    };\n  },\n\n  toJSON(message: GetDividendsForeignIssuerRequest): unknown {\n    const obj: any = {};\n    if (message.generateDivForeignIssuerReport !== undefined) {\n      obj.generateDivForeignIssuerReport = GenerateDividendsForeignIssuerReportRequest.toJSON(\n        message.generateDivForeignIssuerReport,\n      );\n    }\n    if (message.getDivForeignIssuerReport !== undefined) {\n      obj.getDivForeignIssuerReport = GetDividendsForeignIssuerReportRequest.toJSON(message.getDivForeignIssuerReport);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetDividendsForeignIssuerRequest>): GetDividendsForeignIssuerRequest {\n    return GetDividendsForeignIssuerRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetDividendsForeignIssuerRequest>): GetDividendsForeignIssuerRequest {\n    const message = createBaseGetDividendsForeignIssuerRequest();\n    message.generateDivForeignIssuerReport =\n      (object.generateDivForeignIssuerReport !== undefined && object.generateDivForeignIssuerReport !== null)\n        ? GenerateDividendsForeignIssuerReportRequest.fromPartial(object.generateDivForeignIssuerReport)\n        : undefined;\n    message.getDivForeignIssuerReport =\n      (object.getDivForeignIssuerReport !== undefined && object.getDivForeignIssuerReport !== null)\n        ? GetDividendsForeignIssuerReportRequest.fromPartial(object.getDivForeignIssuerReport)\n        : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetDividendsForeignIssuerResponse(): GetDividendsForeignIssuerResponse {\n  return { generateDivForeignIssuerReportResponse: undefined, divForeignIssuerReport: undefined };\n}\n\nexport const GetDividendsForeignIssuerResponse: OperationsUtils.MessageFns<GetDividendsForeignIssuerResponse> = {\n  encode(message: GetDividendsForeignIssuerResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.generateDivForeignIssuerReportResponse !== undefined) {\n      GenerateDividendsForeignIssuerReportResponse.encode(\n        message.generateDivForeignIssuerReportResponse,\n        writer.uint32(10).fork(),\n      ).join();\n    }\n    if (message.divForeignIssuerReport !== undefined) {\n      GetDividendsForeignIssuerReportResponse.encode(message.divForeignIssuerReport, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetDividendsForeignIssuerResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetDividendsForeignIssuerResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.generateDivForeignIssuerReportResponse = GenerateDividendsForeignIssuerReportResponse.decode(\n            reader,\n            reader.uint32(),\n          );\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.divForeignIssuerReport = GetDividendsForeignIssuerReportResponse.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetDividendsForeignIssuerResponse {\n    return {\n      generateDivForeignIssuerReportResponse: isSet(object.generateDivForeignIssuerReportResponse)\n        ? GenerateDividendsForeignIssuerReportResponse.fromJSON(object.generateDivForeignIssuerReportResponse)\n        : undefined,\n      divForeignIssuerReport: isSet(object.divForeignIssuerReport)\n        ? GetDividendsForeignIssuerReportResponse.fromJSON(object.divForeignIssuerReport)\n        : undefined,\n    };\n  },\n\n  toJSON(message: GetDividendsForeignIssuerResponse): unknown {\n    const obj: any = {};\n    if (message.generateDivForeignIssuerReportResponse !== undefined) {\n      obj.generateDivForeignIssuerReportResponse = GenerateDividendsForeignIssuerReportResponse.toJSON(\n        message.generateDivForeignIssuerReportResponse,\n      );\n    }\n    if (message.divForeignIssuerReport !== undefined) {\n      obj.divForeignIssuerReport = GetDividendsForeignIssuerReportResponse.toJSON(message.divForeignIssuerReport);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetDividendsForeignIssuerResponse>): GetDividendsForeignIssuerResponse {\n    return GetDividendsForeignIssuerResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetDividendsForeignIssuerResponse>): GetDividendsForeignIssuerResponse {\n    const message = createBaseGetDividendsForeignIssuerResponse();\n    message.generateDivForeignIssuerReportResponse =\n      (object.generateDivForeignIssuerReportResponse !== undefined &&\n          object.generateDivForeignIssuerReportResponse !== null)\n        ? GenerateDividendsForeignIssuerReportResponse.fromPartial(object.generateDivForeignIssuerReportResponse)\n        : undefined;\n    message.divForeignIssuerReport =\n      (object.divForeignIssuerReport !== undefined && object.divForeignIssuerReport !== null)\n        ? GetDividendsForeignIssuerReportResponse.fromPartial(object.divForeignIssuerReport)\n        : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGenerateDividendsForeignIssuerReportRequest(): GenerateDividendsForeignIssuerReportRequest {\n  return { accountId: \"\", from: undefined, to: undefined };\n}\n\nexport const GenerateDividendsForeignIssuerReportRequest: OperationsUtils.MessageFns<GenerateDividendsForeignIssuerReportRequest> = {\n  encode(\n    message: GenerateDividendsForeignIssuerReportRequest,\n    writer: BinaryWriter = new BinaryWriter(),\n  ): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GenerateDividendsForeignIssuerReportRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGenerateDividendsForeignIssuerReportRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GenerateDividendsForeignIssuerReportRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n    };\n  },\n\n  toJSON(message: GenerateDividendsForeignIssuerReportRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GenerateDividendsForeignIssuerReportRequest>): GenerateDividendsForeignIssuerReportRequest {\n    return GenerateDividendsForeignIssuerReportRequest.fromPartial(base ?? {});\n  },\n  fromPartial(\n    object: DeepPartial<GenerateDividendsForeignIssuerReportRequest>,\n  ): GenerateDividendsForeignIssuerReportRequest {\n    const message = createBaseGenerateDividendsForeignIssuerReportRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetDividendsForeignIssuerReportRequest(): GetDividendsForeignIssuerReportRequest {\n  return { taskId: \"\", page: undefined };\n}\n\nexport const GetDividendsForeignIssuerReportRequest: OperationsUtils.MessageFns<GetDividendsForeignIssuerReportRequest> = {\n  encode(message: GetDividendsForeignIssuerReportRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.taskId !== \"\") {\n      writer.uint32(10).string(message.taskId);\n    }\n    if (message.page !== undefined) {\n      writer.uint32(16).int32(message.page);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetDividendsForeignIssuerReportRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetDividendsForeignIssuerReportRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.taskId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.page = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetDividendsForeignIssuerReportRequest {\n    return {\n      taskId: isSet(object.taskId) ? globalThis.String(object.taskId) : \"\",\n      page: isSet(object.page) ? globalThis.Number(object.page) : undefined,\n    };\n  },\n\n  toJSON(message: GetDividendsForeignIssuerReportRequest): unknown {\n    const obj: any = {};\n    if (message.taskId !== \"\") {\n      obj.taskId = message.taskId;\n    }\n    if (message.page !== undefined) {\n      obj.page = Math.round(message.page);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetDividendsForeignIssuerReportRequest>): GetDividendsForeignIssuerReportRequest {\n    return GetDividendsForeignIssuerReportRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetDividendsForeignIssuerReportRequest>): GetDividendsForeignIssuerReportRequest {\n    const message = createBaseGetDividendsForeignIssuerReportRequest();\n    message.taskId = object.taskId ?? \"\";\n    message.page = object.page ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGenerateDividendsForeignIssuerReportResponse(): GenerateDividendsForeignIssuerReportResponse {\n  return { taskId: \"\" };\n}\n\nexport const GenerateDividendsForeignIssuerReportResponse: OperationsUtils.MessageFns<GenerateDividendsForeignIssuerReportResponse> = {\n  encode(\n    message: GenerateDividendsForeignIssuerReportResponse,\n    writer: BinaryWriter = new BinaryWriter(),\n  ): BinaryWriter {\n    if (message.taskId !== \"\") {\n      writer.uint32(10).string(message.taskId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GenerateDividendsForeignIssuerReportResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGenerateDividendsForeignIssuerReportResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.taskId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GenerateDividendsForeignIssuerReportResponse {\n    return { taskId: isSet(object.taskId) ? globalThis.String(object.taskId) : \"\" };\n  },\n\n  toJSON(message: GenerateDividendsForeignIssuerReportResponse): unknown {\n    const obj: any = {};\n    if (message.taskId !== \"\") {\n      obj.taskId = message.taskId;\n    }\n    return obj;\n  },\n\n  create(\n    base?: DeepPartial<GenerateDividendsForeignIssuerReportResponse>,\n  ): GenerateDividendsForeignIssuerReportResponse {\n    return GenerateDividendsForeignIssuerReportResponse.fromPartial(base ?? {});\n  },\n  fromPartial(\n    object: DeepPartial<GenerateDividendsForeignIssuerReportResponse>,\n  ): GenerateDividendsForeignIssuerReportResponse {\n    const message = createBaseGenerateDividendsForeignIssuerReportResponse();\n    message.taskId = object.taskId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetDividendsForeignIssuerReportResponse(): GetDividendsForeignIssuerReportResponse {\n  return { dividendsForeignIssuerReport: [], itemsCount: 0, pagesCount: 0, page: 0 };\n}\n\nexport const GetDividendsForeignIssuerReportResponse: OperationsUtils.MessageFns<GetDividendsForeignIssuerReportResponse> = {\n  encode(message: GetDividendsForeignIssuerReportResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.dividendsForeignIssuerReport) {\n      DividendsForeignIssuerReport.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.itemsCount !== 0) {\n      writer.uint32(16).int32(message.itemsCount);\n    }\n    if (message.pagesCount !== 0) {\n      writer.uint32(24).int32(message.pagesCount);\n    }\n    if (message.page !== 0) {\n      writer.uint32(32).int32(message.page);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetDividendsForeignIssuerReportResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetDividendsForeignIssuerReportResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.dividendsForeignIssuerReport.push(DividendsForeignIssuerReport.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.itemsCount = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.pagesCount = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.page = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetDividendsForeignIssuerReportResponse {\n    return {\n      dividendsForeignIssuerReport: globalThis.Array.isArray(object?.dividendsForeignIssuerReport)\n        ? object.dividendsForeignIssuerReport.map((e: any) => DividendsForeignIssuerReport.fromJSON(e))\n        : [],\n      itemsCount: isSet(object.itemsCount) ? globalThis.Number(object.itemsCount) : 0,\n      pagesCount: isSet(object.pagesCount) ? globalThis.Number(object.pagesCount) : 0,\n      page: isSet(object.page) ? globalThis.Number(object.page) : 0,\n    };\n  },\n\n  toJSON(message: GetDividendsForeignIssuerReportResponse): unknown {\n    const obj: any = {};\n    if (message.dividendsForeignIssuerReport?.length) {\n      obj.dividendsForeignIssuerReport = message.dividendsForeignIssuerReport.map((e) =>\n        DividendsForeignIssuerReport.toJSON(e)\n      );\n    }\n    if (message.itemsCount !== 0) {\n      obj.itemsCount = Math.round(message.itemsCount);\n    }\n    if (message.pagesCount !== 0) {\n      obj.pagesCount = Math.round(message.pagesCount);\n    }\n    if (message.page !== 0) {\n      obj.page = Math.round(message.page);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetDividendsForeignIssuerReportResponse>): GetDividendsForeignIssuerReportResponse {\n    return GetDividendsForeignIssuerReportResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetDividendsForeignIssuerReportResponse>): GetDividendsForeignIssuerReportResponse {\n    const message = createBaseGetDividendsForeignIssuerReportResponse();\n    message.dividendsForeignIssuerReport =\n      object.dividendsForeignIssuerReport?.map((e) => DividendsForeignIssuerReport.fromPartial(e)) || [];\n    message.itemsCount = object.itemsCount ?? 0;\n    message.pagesCount = object.pagesCount ?? 0;\n    message.page = object.page ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseDividendsForeignIssuerReport(): DividendsForeignIssuerReport {\n  return {\n    recordDate: undefined,\n    paymentDate: undefined,\n    securityName: \"\",\n    isin: \"\",\n    issuerCountry: \"\",\n    quantity: 0,\n    dividend: undefined,\n    externalCommission: undefined,\n    dividendGross: undefined,\n    tax: undefined,\n    dividendAmount: undefined,\n    currency: \"\",\n  };\n}\n\nexport const DividendsForeignIssuerReport: OperationsUtils.MessageFns<DividendsForeignIssuerReport> = {\n  encode(message: DividendsForeignIssuerReport, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.recordDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.recordDate), writer.uint32(10).fork()).join();\n    }\n    if (message.paymentDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.paymentDate), writer.uint32(18).fork()).join();\n    }\n    if (message.securityName !== \"\") {\n      writer.uint32(26).string(message.securityName);\n    }\n    if (message.isin !== \"\") {\n      writer.uint32(34).string(message.isin);\n    }\n    if (message.issuerCountry !== \"\") {\n      writer.uint32(42).string(message.issuerCountry);\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(48).int64(message.quantity);\n    }\n    if (message.dividend !== undefined) {\n      Quotation.encode(message.dividend, writer.uint32(58).fork()).join();\n    }\n    if (message.externalCommission !== undefined) {\n      Quotation.encode(message.externalCommission, writer.uint32(66).fork()).join();\n    }\n    if (message.dividendGross !== undefined) {\n      Quotation.encode(message.dividendGross, writer.uint32(74).fork()).join();\n    }\n    if (message.tax !== undefined) {\n      Quotation.encode(message.tax, writer.uint32(82).fork()).join();\n    }\n    if (message.dividendAmount !== undefined) {\n      Quotation.encode(message.dividendAmount, writer.uint32(90).fork()).join();\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(98).string(message.currency);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DividendsForeignIssuerReport {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDividendsForeignIssuerReport();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.recordDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.paymentDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.securityName = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.isin = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.issuerCountry = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.dividend = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.externalCommission = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.dividendGross = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.tax = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.dividendAmount = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DividendsForeignIssuerReport {\n    return {\n      recordDate: isSet(object.recordDate) ? fromJsonTimestamp(object.recordDate) : undefined,\n      paymentDate: isSet(object.paymentDate) ? fromJsonTimestamp(object.paymentDate) : undefined,\n      securityName: isSet(object.securityName) ? globalThis.String(object.securityName) : \"\",\n      isin: isSet(object.isin) ? globalThis.String(object.isin) : \"\",\n      issuerCountry: isSet(object.issuerCountry) ? globalThis.String(object.issuerCountry) : \"\",\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      dividend: isSet(object.dividend) ? Quotation.fromJSON(object.dividend) : undefined,\n      externalCommission: isSet(object.externalCommission) ? Quotation.fromJSON(object.externalCommission) : undefined,\n      dividendGross: isSet(object.dividendGross) ? Quotation.fromJSON(object.dividendGross) : undefined,\n      tax: isSet(object.tax) ? Quotation.fromJSON(object.tax) : undefined,\n      dividendAmount: isSet(object.dividendAmount) ? Quotation.fromJSON(object.dividendAmount) : undefined,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n    };\n  },\n\n  toJSON(message: DividendsForeignIssuerReport): unknown {\n    const obj: any = {};\n    if (message.recordDate !== undefined) {\n      obj.recordDate = message.recordDate.toISOString();\n    }\n    if (message.paymentDate !== undefined) {\n      obj.paymentDate = message.paymentDate.toISOString();\n    }\n    if (message.securityName !== \"\") {\n      obj.securityName = message.securityName;\n    }\n    if (message.isin !== \"\") {\n      obj.isin = message.isin;\n    }\n    if (message.issuerCountry !== \"\") {\n      obj.issuerCountry = message.issuerCountry;\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.dividend !== undefined) {\n      obj.dividend = Quotation.toJSON(message.dividend);\n    }\n    if (message.externalCommission !== undefined) {\n      obj.externalCommission = Quotation.toJSON(message.externalCommission);\n    }\n    if (message.dividendGross !== undefined) {\n      obj.dividendGross = Quotation.toJSON(message.dividendGross);\n    }\n    if (message.tax !== undefined) {\n      obj.tax = Quotation.toJSON(message.tax);\n    }\n    if (message.dividendAmount !== undefined) {\n      obj.dividendAmount = Quotation.toJSON(message.dividendAmount);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DividendsForeignIssuerReport>): DividendsForeignIssuerReport {\n    return DividendsForeignIssuerReport.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DividendsForeignIssuerReport>): DividendsForeignIssuerReport {\n    const message = createBaseDividendsForeignIssuerReport();\n    message.recordDate = object.recordDate ?? undefined;\n    message.paymentDate = object.paymentDate ?? undefined;\n    message.securityName = object.securityName ?? \"\";\n    message.isin = object.isin ?? \"\";\n    message.issuerCountry = object.issuerCountry ?? \"\";\n    message.quantity = object.quantity ?? 0;\n    message.dividend = (object.dividend !== undefined && object.dividend !== null)\n      ? Quotation.fromPartial(object.dividend)\n      : undefined;\n    message.externalCommission = (object.externalCommission !== undefined && object.externalCommission !== null)\n      ? Quotation.fromPartial(object.externalCommission)\n      : undefined;\n    message.dividendGross = (object.dividendGross !== undefined && object.dividendGross !== null)\n      ? Quotation.fromPartial(object.dividendGross)\n      : undefined;\n    message.tax = (object.tax !== undefined && object.tax !== null) ? Quotation.fromPartial(object.tax) : undefined;\n    message.dividendAmount = (object.dividendAmount !== undefined && object.dividendAmount !== null)\n      ? Quotation.fromPartial(object.dividendAmount)\n      : undefined;\n    message.currency = object.currency ?? \"\";\n    return message;\n  },\n};\n\nfunction createBasePortfolioStreamRequest(): PortfolioStreamRequest {\n  return { accounts: [], pingSettings: undefined };\n}\n\nexport const PortfolioStreamRequest: OperationsUtils.MessageFns<PortfolioStreamRequest> = {\n  encode(message: PortfolioStreamRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.accounts) {\n      writer.uint32(10).string(v!);\n    }\n    if (message.pingSettings !== undefined) {\n      PingDelaySettings.encode(message.pingSettings, writer.uint32(122).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PortfolioStreamRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePortfolioStreamRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accounts.push(reader.string());\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.pingSettings = PingDelaySettings.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PortfolioStreamRequest {\n    return {\n      accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e: any) => globalThis.String(e)) : [],\n      pingSettings: isSet(object.pingSettings) ? PingDelaySettings.fromJSON(object.pingSettings) : undefined,\n    };\n  },\n\n  toJSON(message: PortfolioStreamRequest): unknown {\n    const obj: any = {};\n    if (message.accounts?.length) {\n      obj.accounts = message.accounts;\n    }\n    if (message.pingSettings !== undefined) {\n      obj.pingSettings = PingDelaySettings.toJSON(message.pingSettings);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PortfolioStreamRequest>): PortfolioStreamRequest {\n    return PortfolioStreamRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PortfolioStreamRequest>): PortfolioStreamRequest {\n    const message = createBasePortfolioStreamRequest();\n    message.accounts = object.accounts?.map((e) => e) || [];\n    message.pingSettings = (object.pingSettings !== undefined && object.pingSettings !== null)\n      ? PingDelaySettings.fromPartial(object.pingSettings)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePortfolioStreamResponse(): PortfolioStreamResponse {\n  return { subscriptions: undefined, portfolio: undefined, ping: undefined };\n}\n\nexport const PortfolioStreamResponse: OperationsUtils.MessageFns<PortfolioStreamResponse> = {\n  encode(message: PortfolioStreamResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscriptions !== undefined) {\n      PortfolioSubscriptionResult.encode(message.subscriptions, writer.uint32(10).fork()).join();\n    }\n    if (message.portfolio !== undefined) {\n      PortfolioResponse.encode(message.portfolio, writer.uint32(18).fork()).join();\n    }\n    if (message.ping !== undefined) {\n      Ping.encode(message.ping, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PortfolioStreamResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePortfolioStreamResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subscriptions = PortfolioSubscriptionResult.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.portfolio = PortfolioResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.ping = Ping.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PortfolioStreamResponse {\n    return {\n      subscriptions: isSet(object.subscriptions)\n        ? PortfolioSubscriptionResult.fromJSON(object.subscriptions)\n        : undefined,\n      portfolio: isSet(object.portfolio) ? PortfolioResponse.fromJSON(object.portfolio) : undefined,\n      ping: isSet(object.ping) ? Ping.fromJSON(object.ping) : undefined,\n    };\n  },\n\n  toJSON(message: PortfolioStreamResponse): unknown {\n    const obj: any = {};\n    if (message.subscriptions !== undefined) {\n      obj.subscriptions = PortfolioSubscriptionResult.toJSON(message.subscriptions);\n    }\n    if (message.portfolio !== undefined) {\n      obj.portfolio = PortfolioResponse.toJSON(message.portfolio);\n    }\n    if (message.ping !== undefined) {\n      obj.ping = Ping.toJSON(message.ping);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PortfolioStreamResponse>): PortfolioStreamResponse {\n    return PortfolioStreamResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PortfolioStreamResponse>): PortfolioStreamResponse {\n    const message = createBasePortfolioStreamResponse();\n    message.subscriptions = (object.subscriptions !== undefined && object.subscriptions !== null)\n      ? PortfolioSubscriptionResult.fromPartial(object.subscriptions)\n      : undefined;\n    message.portfolio = (object.portfolio !== undefined && object.portfolio !== null)\n      ? PortfolioResponse.fromPartial(object.portfolio)\n      : undefined;\n    message.ping = (object.ping !== undefined && object.ping !== null) ? Ping.fromPartial(object.ping) : undefined;\n    return message;\n  },\n};\n\nfunction createBasePortfolioSubscriptionResult(): PortfolioSubscriptionResult {\n  return { accounts: [], trackingId: \"\", streamId: \"\" };\n}\n\nexport const PortfolioSubscriptionResult: OperationsUtils.MessageFns<PortfolioSubscriptionResult> = {\n  encode(message: PortfolioSubscriptionResult, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.accounts) {\n      AccountSubscriptionStatus.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.trackingId !== \"\") {\n      writer.uint32(58).string(message.trackingId);\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(66).string(message.streamId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PortfolioSubscriptionResult {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePortfolioSubscriptionResult();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accounts.push(AccountSubscriptionStatus.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PortfolioSubscriptionResult {\n    return {\n      accounts: globalThis.Array.isArray(object?.accounts)\n        ? object.accounts.map((e: any) => AccountSubscriptionStatus.fromJSON(e))\n        : [],\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n    };\n  },\n\n  toJSON(message: PortfolioSubscriptionResult): unknown {\n    const obj: any = {};\n    if (message.accounts?.length) {\n      obj.accounts = message.accounts.map((e) => AccountSubscriptionStatus.toJSON(e));\n    }\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PortfolioSubscriptionResult>): PortfolioSubscriptionResult {\n    return PortfolioSubscriptionResult.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PortfolioSubscriptionResult>): PortfolioSubscriptionResult {\n    const message = createBasePortfolioSubscriptionResult();\n    message.accounts = object.accounts?.map((e) => AccountSubscriptionStatus.fromPartial(e)) || [];\n    message.trackingId = object.trackingId ?? \"\";\n    message.streamId = object.streamId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseAccountSubscriptionStatus(): AccountSubscriptionStatus {\n  return { accountId: \"\", subscriptionStatus: 0 };\n}\n\nexport const AccountSubscriptionStatus: OperationsUtils.MessageFns<AccountSubscriptionStatus> = {\n  encode(message: AccountSubscriptionStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.subscriptionStatus !== 0) {\n      writer.uint32(48).int32(message.subscriptionStatus);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AccountSubscriptionStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAccountSubscriptionStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.subscriptionStatus = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AccountSubscriptionStatus {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      subscriptionStatus: isSet(object.subscriptionStatus)\n        ? portfolioSubscriptionStatusFromJSON(object.subscriptionStatus)\n        : 0,\n    };\n  },\n\n  toJSON(message: AccountSubscriptionStatus): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.subscriptionStatus !== 0) {\n      obj.subscriptionStatus = portfolioSubscriptionStatusToJSON(message.subscriptionStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AccountSubscriptionStatus>): AccountSubscriptionStatus {\n    return AccountSubscriptionStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AccountSubscriptionStatus>): AccountSubscriptionStatus {\n    const message = createBaseAccountSubscriptionStatus();\n    message.accountId = object.accountId ?? \"\";\n    message.subscriptionStatus = object.subscriptionStatus ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetOperationsByCursorRequest(): GetOperationsByCursorRequest {\n  return {\n    accountId: \"\",\n    instrumentId: undefined,\n    from: undefined,\n    to: undefined,\n    cursor: undefined,\n    limit: undefined,\n    operationTypes: [],\n    state: undefined,\n    withoutCommissions: undefined,\n    withoutTrades: undefined,\n    withoutOvernights: undefined,\n  };\n}\n\nexport const GetOperationsByCursorRequest: OperationsUtils.MessageFns<GetOperationsByCursorRequest> = {\n  encode(message: GetOperationsByCursorRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.instrumentId !== undefined) {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(50).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(58).fork()).join();\n    }\n    if (message.cursor !== undefined) {\n      writer.uint32(90).string(message.cursor);\n    }\n    if (message.limit !== undefined) {\n      writer.uint32(96).int32(message.limit);\n    }\n    writer.uint32(106).fork();\n    for (const v of message.operationTypes) {\n      writer.int32(v);\n    }\n    writer.join();\n    if (message.state !== undefined) {\n      writer.uint32(112).int32(message.state);\n    }\n    if (message.withoutCommissions !== undefined) {\n      writer.uint32(120).bool(message.withoutCommissions);\n    }\n    if (message.withoutTrades !== undefined) {\n      writer.uint32(128).bool(message.withoutTrades);\n    }\n    if (message.withoutOvernights !== undefined) {\n      writer.uint32(136).bool(message.withoutOvernights);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOperationsByCursorRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOperationsByCursorRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.cursor = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.limit = reader.int32();\n          continue;\n        }\n        case 13: {\n          if (tag === 104) {\n            message.operationTypes.push(reader.int32() as any);\n\n            continue;\n          }\n\n          if (tag === 106) {\n            const end2 = reader.uint32() + reader.pos;\n            while (reader.pos < end2) {\n              message.operationTypes.push(reader.int32() as any);\n            }\n\n            continue;\n          }\n\n          break;\n        }\n        case 14: {\n          if (tag !== 112) {\n            break;\n          }\n\n          message.state = reader.int32() as any;\n          continue;\n        }\n        case 15: {\n          if (tag !== 120) {\n            break;\n          }\n\n          message.withoutCommissions = reader.bool();\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.withoutTrades = reader.bool();\n          continue;\n        }\n        case 17: {\n          if (tag !== 136) {\n            break;\n          }\n\n          message.withoutOvernights = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOperationsByCursorRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : undefined,\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      cursor: isSet(object.cursor) ? globalThis.String(object.cursor) : undefined,\n      limit: isSet(object.limit) ? globalThis.Number(object.limit) : undefined,\n      operationTypes: globalThis.Array.isArray(object?.operationTypes)\n        ? object.operationTypes.map((e: any) => operationTypeFromJSON(e))\n        : [],\n      state: isSet(object.state) ? operationStateFromJSON(object.state) : undefined,\n      withoutCommissions: isSet(object.withoutCommissions) ? globalThis.Boolean(object.withoutCommissions) : undefined,\n      withoutTrades: isSet(object.withoutTrades) ? globalThis.Boolean(object.withoutTrades) : undefined,\n      withoutOvernights: isSet(object.withoutOvernights) ? globalThis.Boolean(object.withoutOvernights) : undefined,\n    };\n  },\n\n  toJSON(message: GetOperationsByCursorRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.instrumentId !== undefined) {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.cursor !== undefined) {\n      obj.cursor = message.cursor;\n    }\n    if (message.limit !== undefined) {\n      obj.limit = Math.round(message.limit);\n    }\n    if (message.operationTypes?.length) {\n      obj.operationTypes = message.operationTypes.map((e) => operationTypeToJSON(e));\n    }\n    if (message.state !== undefined) {\n      obj.state = operationStateToJSON(message.state);\n    }\n    if (message.withoutCommissions !== undefined) {\n      obj.withoutCommissions = message.withoutCommissions;\n    }\n    if (message.withoutTrades !== undefined) {\n      obj.withoutTrades = message.withoutTrades;\n    }\n    if (message.withoutOvernights !== undefined) {\n      obj.withoutOvernights = message.withoutOvernights;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOperationsByCursorRequest>): GetOperationsByCursorRequest {\n    return GetOperationsByCursorRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOperationsByCursorRequest>): GetOperationsByCursorRequest {\n    const message = createBaseGetOperationsByCursorRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.instrumentId = object.instrumentId ?? undefined;\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.cursor = object.cursor ?? undefined;\n    message.limit = object.limit ?? undefined;\n    message.operationTypes = object.operationTypes?.map((e) => e) || [];\n    message.state = object.state ?? undefined;\n    message.withoutCommissions = object.withoutCommissions ?? undefined;\n    message.withoutTrades = object.withoutTrades ?? undefined;\n    message.withoutOvernights = object.withoutOvernights ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetOperationsByCursorResponse(): GetOperationsByCursorResponse {\n  return { hasNext: false, nextCursor: \"\", items: [] };\n}\n\nexport const GetOperationsByCursorResponse: OperationsUtils.MessageFns<GetOperationsByCursorResponse> = {\n  encode(message: GetOperationsByCursorResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.hasNext !== false) {\n      writer.uint32(8).bool(message.hasNext);\n    }\n    if (message.nextCursor !== \"\") {\n      writer.uint32(18).string(message.nextCursor);\n    }\n    for (const v of message.items) {\n      OperationItem.encode(v!, writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOperationsByCursorResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOperationsByCursorResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.hasNext = reader.bool();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.nextCursor = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.items.push(OperationItem.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOperationsByCursorResponse {\n    return {\n      hasNext: isSet(object.hasNext) ? globalThis.Boolean(object.hasNext) : false,\n      nextCursor: isSet(object.nextCursor) ? globalThis.String(object.nextCursor) : \"\",\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => OperationItem.fromJSON(e)) : [],\n    };\n  },\n\n  toJSON(message: GetOperationsByCursorResponse): unknown {\n    const obj: any = {};\n    if (message.hasNext !== false) {\n      obj.hasNext = message.hasNext;\n    }\n    if (message.nextCursor !== \"\") {\n      obj.nextCursor = message.nextCursor;\n    }\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => OperationItem.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOperationsByCursorResponse>): GetOperationsByCursorResponse {\n    return GetOperationsByCursorResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOperationsByCursorResponse>): GetOperationsByCursorResponse {\n    const message = createBaseGetOperationsByCursorResponse();\n    message.hasNext = object.hasNext ?? false;\n    message.nextCursor = object.nextCursor ?? \"\";\n    message.items = object.items?.map((e) => OperationItem.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOperationItem(): OperationItem {\n  return {\n    cursor: \"\",\n    brokerAccountId: \"\",\n    id: \"\",\n    parentOperationId: \"\",\n    name: \"\",\n    date: undefined,\n    type: 0,\n    description: \"\",\n    state: 0,\n    instrumentUid: \"\",\n    figi: \"\",\n    instrumentType: \"\",\n    instrumentKind: 0,\n    positionUid: \"\",\n    payment: undefined,\n    price: undefined,\n    commission: undefined,\n    yield: undefined,\n    yieldRelative: undefined,\n    accruedInt: undefined,\n    quantity: 0,\n    quantityRest: 0,\n    quantityDone: 0,\n    cancelDateTime: undefined,\n    cancelReason: \"\",\n    tradesInfo: undefined,\n    assetUid: \"\",\n    childOperations: [],\n  };\n}\n\nexport const OperationItem: OperationsUtils.MessageFns<OperationItem> = {\n  encode(message: OperationItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.cursor !== \"\") {\n      writer.uint32(10).string(message.cursor);\n    }\n    if (message.brokerAccountId !== \"\") {\n      writer.uint32(50).string(message.brokerAccountId);\n    }\n    if (message.id !== \"\") {\n      writer.uint32(130).string(message.id);\n    }\n    if (message.parentOperationId !== \"\") {\n      writer.uint32(138).string(message.parentOperationId);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(146).string(message.name);\n    }\n    if (message.date !== undefined) {\n      Timestamp.encode(toTimestamp(message.date), writer.uint32(170).fork()).join();\n    }\n    if (message.type !== 0) {\n      writer.uint32(176).int32(message.type);\n    }\n    if (message.description !== \"\") {\n      writer.uint32(186).string(message.description);\n    }\n    if (message.state !== 0) {\n      writer.uint32(192).int32(message.state);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(250).string(message.instrumentUid);\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(258).string(message.figi);\n    }\n    if (message.instrumentType !== \"\") {\n      writer.uint32(266).string(message.instrumentType);\n    }\n    if (message.instrumentKind !== 0) {\n      writer.uint32(272).int32(message.instrumentKind);\n    }\n    if (message.positionUid !== \"\") {\n      writer.uint32(282).string(message.positionUid);\n    }\n    if (message.payment !== undefined) {\n      MoneyValue.encode(message.payment, writer.uint32(330).fork()).join();\n    }\n    if (message.price !== undefined) {\n      MoneyValue.encode(message.price, writer.uint32(338).fork()).join();\n    }\n    if (message.commission !== undefined) {\n      MoneyValue.encode(message.commission, writer.uint32(346).fork()).join();\n    }\n    if (message.yield !== undefined) {\n      MoneyValue.encode(message.yield, writer.uint32(354).fork()).join();\n    }\n    if (message.yieldRelative !== undefined) {\n      Quotation.encode(message.yieldRelative, writer.uint32(362).fork()).join();\n    }\n    if (message.accruedInt !== undefined) {\n      MoneyValue.encode(message.accruedInt, writer.uint32(370).fork()).join();\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(408).int64(message.quantity);\n    }\n    if (message.quantityRest !== 0) {\n      writer.uint32(416).int64(message.quantityRest);\n    }\n    if (message.quantityDone !== 0) {\n      writer.uint32(424).int64(message.quantityDone);\n    }\n    if (message.cancelDateTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.cancelDateTime), writer.uint32(450).fork()).join();\n    }\n    if (message.cancelReason !== \"\") {\n      writer.uint32(458).string(message.cancelReason);\n    }\n    if (message.tradesInfo !== undefined) {\n      OperationItemTrades.encode(message.tradesInfo, writer.uint32(490).fork()).join();\n    }\n    if (message.assetUid !== \"\") {\n      writer.uint32(514).string(message.assetUid);\n    }\n    for (const v of message.childOperations) {\n      ChildOperationItem.encode(v!, writer.uint32(522).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OperationItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperationItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.cursor = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.brokerAccountId = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.parentOperationId = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.date = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 22: {\n          if (tag !== 176) {\n            break;\n          }\n\n          message.type = reader.int32() as any;\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 24: {\n          if (tag !== 192) {\n            break;\n          }\n\n          message.state = reader.int32() as any;\n          continue;\n        }\n        case 31: {\n          if (tag !== 250) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 32: {\n          if (tag !== 258) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 33: {\n          if (tag !== 266) {\n            break;\n          }\n\n          message.instrumentType = reader.string();\n          continue;\n        }\n        case 34: {\n          if (tag !== 272) {\n            break;\n          }\n\n          message.instrumentKind = reader.int32() as any;\n          continue;\n        }\n        case 35: {\n          if (tag !== 282) {\n            break;\n          }\n\n          message.positionUid = reader.string();\n          continue;\n        }\n        case 41: {\n          if (tag !== 330) {\n            break;\n          }\n\n          message.payment = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 42: {\n          if (tag !== 338) {\n            break;\n          }\n\n          message.price = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 43: {\n          if (tag !== 346) {\n            break;\n          }\n\n          message.commission = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 44: {\n          if (tag !== 354) {\n            break;\n          }\n\n          message.yield = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 45: {\n          if (tag !== 362) {\n            break;\n          }\n\n          message.yieldRelative = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 46: {\n          if (tag !== 370) {\n            break;\n          }\n\n          message.accruedInt = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 51: {\n          if (tag !== 408) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 52: {\n          if (tag !== 416) {\n            break;\n          }\n\n          message.quantityRest = longToNumber(reader.int64());\n          continue;\n        }\n        case 53: {\n          if (tag !== 424) {\n            break;\n          }\n\n          message.quantityDone = longToNumber(reader.int64());\n          continue;\n        }\n        case 56: {\n          if (tag !== 450) {\n            break;\n          }\n\n          message.cancelDateTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 57: {\n          if (tag !== 458) {\n            break;\n          }\n\n          message.cancelReason = reader.string();\n          continue;\n        }\n        case 61: {\n          if (tag !== 490) {\n            break;\n          }\n\n          message.tradesInfo = OperationItemTrades.decode(reader, reader.uint32());\n          continue;\n        }\n        case 64: {\n          if (tag !== 514) {\n            break;\n          }\n\n          message.assetUid = reader.string();\n          continue;\n        }\n        case 65: {\n          if (tag !== 522) {\n            break;\n          }\n\n          message.childOperations.push(ChildOperationItem.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OperationItem {\n    return {\n      cursor: isSet(object.cursor) ? globalThis.String(object.cursor) : \"\",\n      brokerAccountId: isSet(object.brokerAccountId) ? globalThis.String(object.brokerAccountId) : \"\",\n      id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n      parentOperationId: isSet(object.parentOperationId) ? globalThis.String(object.parentOperationId) : \"\",\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      date: isSet(object.date) ? fromJsonTimestamp(object.date) : undefined,\n      type: isSet(object.type) ? operationTypeFromJSON(object.type) : 0,\n      description: isSet(object.description) ? globalThis.String(object.description) : \"\",\n      state: isSet(object.state) ? operationStateFromJSON(object.state) : 0,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentType: isSet(object.instrumentType) ? globalThis.String(object.instrumentType) : \"\",\n      instrumentKind: isSet(object.instrumentKind) ? instrumentTypeFromJSON(object.instrumentKind) : 0,\n      positionUid: isSet(object.positionUid) ? globalThis.String(object.positionUid) : \"\",\n      payment: isSet(object.payment) ? MoneyValue.fromJSON(object.payment) : undefined,\n      price: isSet(object.price) ? MoneyValue.fromJSON(object.price) : undefined,\n      commission: isSet(object.commission) ? MoneyValue.fromJSON(object.commission) : undefined,\n      yield: isSet(object.yield) ? MoneyValue.fromJSON(object.yield) : undefined,\n      yieldRelative: isSet(object.yieldRelative) ? Quotation.fromJSON(object.yieldRelative) : undefined,\n      accruedInt: isSet(object.accruedInt) ? MoneyValue.fromJSON(object.accruedInt) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      quantityRest: isSet(object.quantityRest) ? globalThis.Number(object.quantityRest) : 0,\n      quantityDone: isSet(object.quantityDone) ? globalThis.Number(object.quantityDone) : 0,\n      cancelDateTime: isSet(object.cancelDateTime) ? fromJsonTimestamp(object.cancelDateTime) : undefined,\n      cancelReason: isSet(object.cancelReason) ? globalThis.String(object.cancelReason) : \"\",\n      tradesInfo: isSet(object.tradesInfo) ? OperationItemTrades.fromJSON(object.tradesInfo) : undefined,\n      assetUid: isSet(object.assetUid) ? globalThis.String(object.assetUid) : \"\",\n      childOperations: globalThis.Array.isArray(object?.childOperations)\n        ? object.childOperations.map((e: any) => ChildOperationItem.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: OperationItem): unknown {\n    const obj: any = {};\n    if (message.cursor !== \"\") {\n      obj.cursor = message.cursor;\n    }\n    if (message.brokerAccountId !== \"\") {\n      obj.brokerAccountId = message.brokerAccountId;\n    }\n    if (message.id !== \"\") {\n      obj.id = message.id;\n    }\n    if (message.parentOperationId !== \"\") {\n      obj.parentOperationId = message.parentOperationId;\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.date !== undefined) {\n      obj.date = message.date.toISOString();\n    }\n    if (message.type !== 0) {\n      obj.type = operationTypeToJSON(message.type);\n    }\n    if (message.description !== \"\") {\n      obj.description = message.description;\n    }\n    if (message.state !== 0) {\n      obj.state = operationStateToJSON(message.state);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentType !== \"\") {\n      obj.instrumentType = message.instrumentType;\n    }\n    if (message.instrumentKind !== 0) {\n      obj.instrumentKind = instrumentTypeToJSON(message.instrumentKind);\n    }\n    if (message.positionUid !== \"\") {\n      obj.positionUid = message.positionUid;\n    }\n    if (message.payment !== undefined) {\n      obj.payment = MoneyValue.toJSON(message.payment);\n    }\n    if (message.price !== undefined) {\n      obj.price = MoneyValue.toJSON(message.price);\n    }\n    if (message.commission !== undefined) {\n      obj.commission = MoneyValue.toJSON(message.commission);\n    }\n    if (message.yield !== undefined) {\n      obj.yield = MoneyValue.toJSON(message.yield);\n    }\n    if (message.yieldRelative !== undefined) {\n      obj.yieldRelative = Quotation.toJSON(message.yieldRelative);\n    }\n    if (message.accruedInt !== undefined) {\n      obj.accruedInt = MoneyValue.toJSON(message.accruedInt);\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.quantityRest !== 0) {\n      obj.quantityRest = Math.round(message.quantityRest);\n    }\n    if (message.quantityDone !== 0) {\n      obj.quantityDone = Math.round(message.quantityDone);\n    }\n    if (message.cancelDateTime !== undefined) {\n      obj.cancelDateTime = message.cancelDateTime.toISOString();\n    }\n    if (message.cancelReason !== \"\") {\n      obj.cancelReason = message.cancelReason;\n    }\n    if (message.tradesInfo !== undefined) {\n      obj.tradesInfo = OperationItemTrades.toJSON(message.tradesInfo);\n    }\n    if (message.assetUid !== \"\") {\n      obj.assetUid = message.assetUid;\n    }\n    if (message.childOperations?.length) {\n      obj.childOperations = message.childOperations.map((e) => ChildOperationItem.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OperationItem>): OperationItem {\n    return OperationItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OperationItem>): OperationItem {\n    const message = createBaseOperationItem();\n    message.cursor = object.cursor ?? \"\";\n    message.brokerAccountId = object.brokerAccountId ?? \"\";\n    message.id = object.id ?? \"\";\n    message.parentOperationId = object.parentOperationId ?? \"\";\n    message.name = object.name ?? \"\";\n    message.date = object.date ?? undefined;\n    message.type = object.type ?? 0;\n    message.description = object.description ?? \"\";\n    message.state = object.state ?? 0;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.figi = object.figi ?? \"\";\n    message.instrumentType = object.instrumentType ?? \"\";\n    message.instrumentKind = object.instrumentKind ?? 0;\n    message.positionUid = object.positionUid ?? \"\";\n    message.payment = (object.payment !== undefined && object.payment !== null)\n      ? MoneyValue.fromPartial(object.payment)\n      : undefined;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? MoneyValue.fromPartial(object.price)\n      : undefined;\n    message.commission = (object.commission !== undefined && object.commission !== null)\n      ? MoneyValue.fromPartial(object.commission)\n      : undefined;\n    message.yield = (object.yield !== undefined && object.yield !== null)\n      ? MoneyValue.fromPartial(object.yield)\n      : undefined;\n    message.yieldRelative = (object.yieldRelative !== undefined && object.yieldRelative !== null)\n      ? Quotation.fromPartial(object.yieldRelative)\n      : undefined;\n    message.accruedInt = (object.accruedInt !== undefined && object.accruedInt !== null)\n      ? MoneyValue.fromPartial(object.accruedInt)\n      : undefined;\n    message.quantity = object.quantity ?? 0;\n    message.quantityRest = object.quantityRest ?? 0;\n    message.quantityDone = object.quantityDone ?? 0;\n    message.cancelDateTime = object.cancelDateTime ?? undefined;\n    message.cancelReason = object.cancelReason ?? \"\";\n    message.tradesInfo = (object.tradesInfo !== undefined && object.tradesInfo !== null)\n      ? OperationItemTrades.fromPartial(object.tradesInfo)\n      : undefined;\n    message.assetUid = object.assetUid ?? \"\";\n    message.childOperations = object.childOperations?.map((e) => ChildOperationItem.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOperationItemTrades(): OperationItemTrades {\n  return { trades: [] };\n}\n\nexport const OperationItemTrades: OperationsUtils.MessageFns<OperationItemTrades> = {\n  encode(message: OperationItemTrades, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.trades) {\n      OperationItemTrade.encode(v!, writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OperationItemTrades {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperationItemTrades();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.trades.push(OperationItemTrade.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OperationItemTrades {\n    return {\n      trades: globalThis.Array.isArray(object?.trades)\n        ? object.trades.map((e: any) => OperationItemTrade.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: OperationItemTrades): unknown {\n    const obj: any = {};\n    if (message.trades?.length) {\n      obj.trades = message.trades.map((e) => OperationItemTrade.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OperationItemTrades>): OperationItemTrades {\n    return OperationItemTrades.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OperationItemTrades>): OperationItemTrades {\n    const message = createBaseOperationItemTrades();\n    message.trades = object.trades?.map((e) => OperationItemTrade.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOperationItemTrade(): OperationItemTrade {\n  return { num: \"\", date: undefined, quantity: 0, price: undefined, yield: undefined, yieldRelative: undefined };\n}\n\nexport const OperationItemTrade: OperationsUtils.MessageFns<OperationItemTrade> = {\n  encode(message: OperationItemTrade, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.num !== \"\") {\n      writer.uint32(10).string(message.num);\n    }\n    if (message.date !== undefined) {\n      Timestamp.encode(toTimestamp(message.date), writer.uint32(50).fork()).join();\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(88).int64(message.quantity);\n    }\n    if (message.price !== undefined) {\n      MoneyValue.encode(message.price, writer.uint32(130).fork()).join();\n    }\n    if (message.yield !== undefined) {\n      MoneyValue.encode(message.yield, writer.uint32(170).fork()).join();\n    }\n    if (message.yieldRelative !== undefined) {\n      Quotation.encode(message.yieldRelative, writer.uint32(178).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OperationItemTrade {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperationItemTrade();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.num = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.date = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.price = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.yield = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.yieldRelative = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OperationItemTrade {\n    return {\n      num: isSet(object.num) ? globalThis.String(object.num) : \"\",\n      date: isSet(object.date) ? fromJsonTimestamp(object.date) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      price: isSet(object.price) ? MoneyValue.fromJSON(object.price) : undefined,\n      yield: isSet(object.yield) ? MoneyValue.fromJSON(object.yield) : undefined,\n      yieldRelative: isSet(object.yieldRelative) ? Quotation.fromJSON(object.yieldRelative) : undefined,\n    };\n  },\n\n  toJSON(message: OperationItemTrade): unknown {\n    const obj: any = {};\n    if (message.num !== \"\") {\n      obj.num = message.num;\n    }\n    if (message.date !== undefined) {\n      obj.date = message.date.toISOString();\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.price !== undefined) {\n      obj.price = MoneyValue.toJSON(message.price);\n    }\n    if (message.yield !== undefined) {\n      obj.yield = MoneyValue.toJSON(message.yield);\n    }\n    if (message.yieldRelative !== undefined) {\n      obj.yieldRelative = Quotation.toJSON(message.yieldRelative);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OperationItemTrade>): OperationItemTrade {\n    return OperationItemTrade.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OperationItemTrade>): OperationItemTrade {\n    const message = createBaseOperationItemTrade();\n    message.num = object.num ?? \"\";\n    message.date = object.date ?? undefined;\n    message.quantity = object.quantity ?? 0;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? MoneyValue.fromPartial(object.price)\n      : undefined;\n    message.yield = (object.yield !== undefined && object.yield !== null)\n      ? MoneyValue.fromPartial(object.yield)\n      : undefined;\n    message.yieldRelative = (object.yieldRelative !== undefined && object.yieldRelative !== null)\n      ? Quotation.fromPartial(object.yieldRelative)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePositionsStreamRequest(): PositionsStreamRequest {\n  return { accounts: [], withInitialPositions: false, pingSettings: undefined };\n}\n\nexport const PositionsStreamRequest: OperationsUtils.MessageFns<PositionsStreamRequest> = {\n  encode(message: PositionsStreamRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.accounts) {\n      writer.uint32(10).string(v!);\n    }\n    if (message.withInitialPositions !== false) {\n      writer.uint32(24).bool(message.withInitialPositions);\n    }\n    if (message.pingSettings !== undefined) {\n      PingDelaySettings.encode(message.pingSettings, writer.uint32(122).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsStreamRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsStreamRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accounts.push(reader.string());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.withInitialPositions = reader.bool();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.pingSettings = PingDelaySettings.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsStreamRequest {\n    return {\n      accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e: any) => globalThis.String(e)) : [],\n      withInitialPositions: isSet(object.withInitialPositions)\n        ? globalThis.Boolean(object.withInitialPositions)\n        : false,\n      pingSettings: isSet(object.pingSettings) ? PingDelaySettings.fromJSON(object.pingSettings) : undefined,\n    };\n  },\n\n  toJSON(message: PositionsStreamRequest): unknown {\n    const obj: any = {};\n    if (message.accounts?.length) {\n      obj.accounts = message.accounts;\n    }\n    if (message.withInitialPositions !== false) {\n      obj.withInitialPositions = message.withInitialPositions;\n    }\n    if (message.pingSettings !== undefined) {\n      obj.pingSettings = PingDelaySettings.toJSON(message.pingSettings);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsStreamRequest>): PositionsStreamRequest {\n    return PositionsStreamRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsStreamRequest>): PositionsStreamRequest {\n    const message = createBasePositionsStreamRequest();\n    message.accounts = object.accounts?.map((e) => e) || [];\n    message.withInitialPositions = object.withInitialPositions ?? false;\n    message.pingSettings = (object.pingSettings !== undefined && object.pingSettings !== null)\n      ? PingDelaySettings.fromPartial(object.pingSettings)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePositionsStreamResponse(): PositionsStreamResponse {\n  return { subscriptions: undefined, position: undefined, ping: undefined, initialPositions: undefined };\n}\n\nexport const PositionsStreamResponse: OperationsUtils.MessageFns<PositionsStreamResponse> = {\n  encode(message: PositionsStreamResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscriptions !== undefined) {\n      PositionsSubscriptionResult.encode(message.subscriptions, writer.uint32(10).fork()).join();\n    }\n    if (message.position !== undefined) {\n      PositionData.encode(message.position, writer.uint32(18).fork()).join();\n    }\n    if (message.ping !== undefined) {\n      Ping.encode(message.ping, writer.uint32(26).fork()).join();\n    }\n    if (message.initialPositions !== undefined) {\n      PositionsResponse.encode(message.initialPositions, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsStreamResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsStreamResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subscriptions = PositionsSubscriptionResult.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.position = PositionData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.ping = Ping.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.initialPositions = PositionsResponse.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsStreamResponse {\n    return {\n      subscriptions: isSet(object.subscriptions)\n        ? PositionsSubscriptionResult.fromJSON(object.subscriptions)\n        : undefined,\n      position: isSet(object.position) ? PositionData.fromJSON(object.position) : undefined,\n      ping: isSet(object.ping) ? Ping.fromJSON(object.ping) : undefined,\n      initialPositions: isSet(object.initialPositions)\n        ? PositionsResponse.fromJSON(object.initialPositions)\n        : undefined,\n    };\n  },\n\n  toJSON(message: PositionsStreamResponse): unknown {\n    const obj: any = {};\n    if (message.subscriptions !== undefined) {\n      obj.subscriptions = PositionsSubscriptionResult.toJSON(message.subscriptions);\n    }\n    if (message.position !== undefined) {\n      obj.position = PositionData.toJSON(message.position);\n    }\n    if (message.ping !== undefined) {\n      obj.ping = Ping.toJSON(message.ping);\n    }\n    if (message.initialPositions !== undefined) {\n      obj.initialPositions = PositionsResponse.toJSON(message.initialPositions);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsStreamResponse>): PositionsStreamResponse {\n    return PositionsStreamResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsStreamResponse>): PositionsStreamResponse {\n    const message = createBasePositionsStreamResponse();\n    message.subscriptions = (object.subscriptions !== undefined && object.subscriptions !== null)\n      ? PositionsSubscriptionResult.fromPartial(object.subscriptions)\n      : undefined;\n    message.position = (object.position !== undefined && object.position !== null)\n      ? PositionData.fromPartial(object.position)\n      : undefined;\n    message.ping = (object.ping !== undefined && object.ping !== null) ? Ping.fromPartial(object.ping) : undefined;\n    message.initialPositions = (object.initialPositions !== undefined && object.initialPositions !== null)\n      ? PositionsResponse.fromPartial(object.initialPositions)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePositionsSubscriptionResult(): PositionsSubscriptionResult {\n  return { accounts: [], trackingId: \"\", streamId: \"\" };\n}\n\nexport const PositionsSubscriptionResult: OperationsUtils.MessageFns<PositionsSubscriptionResult> = {\n  encode(message: PositionsSubscriptionResult, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.accounts) {\n      PositionsSubscriptionStatus.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.trackingId !== \"\") {\n      writer.uint32(58).string(message.trackingId);\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(66).string(message.streamId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsSubscriptionResult {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsSubscriptionResult();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accounts.push(PositionsSubscriptionStatus.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsSubscriptionResult {\n    return {\n      accounts: globalThis.Array.isArray(object?.accounts)\n        ? object.accounts.map((e: any) => PositionsSubscriptionStatus.fromJSON(e))\n        : [],\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n    };\n  },\n\n  toJSON(message: PositionsSubscriptionResult): unknown {\n    const obj: any = {};\n    if (message.accounts?.length) {\n      obj.accounts = message.accounts.map((e) => PositionsSubscriptionStatus.toJSON(e));\n    }\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsSubscriptionResult>): PositionsSubscriptionResult {\n    return PositionsSubscriptionResult.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsSubscriptionResult>): PositionsSubscriptionResult {\n    const message = createBasePositionsSubscriptionResult();\n    message.accounts = object.accounts?.map((e) => PositionsSubscriptionStatus.fromPartial(e)) || [];\n    message.trackingId = object.trackingId ?? \"\";\n    message.streamId = object.streamId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBasePositionsSubscriptionStatus(): PositionsSubscriptionStatus {\n  return { accountId: \"\", subscriptionStatus: 0 };\n}\n\nexport const PositionsSubscriptionStatus: OperationsUtils.MessageFns<PositionsSubscriptionStatus> = {\n  encode(message: PositionsSubscriptionStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.subscriptionStatus !== 0) {\n      writer.uint32(48).int32(message.subscriptionStatus);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsSubscriptionStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsSubscriptionStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.subscriptionStatus = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsSubscriptionStatus {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      subscriptionStatus: isSet(object.subscriptionStatus)\n        ? positionsAccountSubscriptionStatusFromJSON(object.subscriptionStatus)\n        : 0,\n    };\n  },\n\n  toJSON(message: PositionsSubscriptionStatus): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.subscriptionStatus !== 0) {\n      obj.subscriptionStatus = positionsAccountSubscriptionStatusToJSON(message.subscriptionStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsSubscriptionStatus>): PositionsSubscriptionStatus {\n    return PositionsSubscriptionStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsSubscriptionStatus>): PositionsSubscriptionStatus {\n    const message = createBasePositionsSubscriptionStatus();\n    message.accountId = object.accountId ?? \"\";\n    message.subscriptionStatus = object.subscriptionStatus ?? 0;\n    return message;\n  },\n};\n\nfunction createBasePositionData(): PositionData {\n  return { accountId: \"\", money: [], securities: [], futures: [], options: [], date: undefined };\n}\n\nexport const PositionData: OperationsUtils.MessageFns<PositionData> = {\n  encode(message: PositionData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    for (const v of message.money) {\n      PositionsMoney.encode(v!, writer.uint32(18).fork()).join();\n    }\n    for (const v of message.securities) {\n      PositionsSecurities.encode(v!, writer.uint32(26).fork()).join();\n    }\n    for (const v of message.futures) {\n      PositionsFutures.encode(v!, writer.uint32(34).fork()).join();\n    }\n    for (const v of message.options) {\n      PositionsOptions.encode(v!, writer.uint32(42).fork()).join();\n    }\n    if (message.date !== undefined) {\n      Timestamp.encode(toTimestamp(message.date), writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.money.push(PositionsMoney.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.securities.push(PositionsSecurities.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.futures.push(PositionsFutures.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.options.push(PositionsOptions.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.date = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionData {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      money: globalThis.Array.isArray(object?.money) ? object.money.map((e: any) => PositionsMoney.fromJSON(e)) : [],\n      securities: globalThis.Array.isArray(object?.securities)\n        ? object.securities.map((e: any) => PositionsSecurities.fromJSON(e))\n        : [],\n      futures: globalThis.Array.isArray(object?.futures)\n        ? object.futures.map((e: any) => PositionsFutures.fromJSON(e))\n        : [],\n      options: globalThis.Array.isArray(object?.options)\n        ? object.options.map((e: any) => PositionsOptions.fromJSON(e))\n        : [],\n      date: isSet(object.date) ? fromJsonTimestamp(object.date) : undefined,\n    };\n  },\n\n  toJSON(message: PositionData): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.money?.length) {\n      obj.money = message.money.map((e) => PositionsMoney.toJSON(e));\n    }\n    if (message.securities?.length) {\n      obj.securities = message.securities.map((e) => PositionsSecurities.toJSON(e));\n    }\n    if (message.futures?.length) {\n      obj.futures = message.futures.map((e) => PositionsFutures.toJSON(e));\n    }\n    if (message.options?.length) {\n      obj.options = message.options.map((e) => PositionsOptions.toJSON(e));\n    }\n    if (message.date !== undefined) {\n      obj.date = message.date.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionData>): PositionData {\n    return PositionData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionData>): PositionData {\n    const message = createBasePositionData();\n    message.accountId = object.accountId ?? \"\";\n    message.money = object.money?.map((e) => PositionsMoney.fromPartial(e)) || [];\n    message.securities = object.securities?.map((e) => PositionsSecurities.fromPartial(e)) || [];\n    message.futures = object.futures?.map((e) => PositionsFutures.fromPartial(e)) || [];\n    message.options = object.options?.map((e) => PositionsOptions.fromPartial(e)) || [];\n    message.date = object.date ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePositionsMoney(): PositionsMoney {\n  return { availableValue: undefined, blockedValue: undefined };\n}\n\nexport const PositionsMoney: OperationsUtils.MessageFns<PositionsMoney> = {\n  encode(message: PositionsMoney, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.availableValue !== undefined) {\n      MoneyValue.encode(message.availableValue, writer.uint32(10).fork()).join();\n    }\n    if (message.blockedValue !== undefined) {\n      MoneyValue.encode(message.blockedValue, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PositionsMoney {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePositionsMoney();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.availableValue = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.blockedValue = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PositionsMoney {\n    return {\n      availableValue: isSet(object.availableValue) ? MoneyValue.fromJSON(object.availableValue) : undefined,\n      blockedValue: isSet(object.blockedValue) ? MoneyValue.fromJSON(object.blockedValue) : undefined,\n    };\n  },\n\n  toJSON(message: PositionsMoney): unknown {\n    const obj: any = {};\n    if (message.availableValue !== undefined) {\n      obj.availableValue = MoneyValue.toJSON(message.availableValue);\n    }\n    if (message.blockedValue !== undefined) {\n      obj.blockedValue = MoneyValue.toJSON(message.blockedValue);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PositionsMoney>): PositionsMoney {\n    return PositionsMoney.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PositionsMoney>): PositionsMoney {\n    const message = createBasePositionsMoney();\n    message.availableValue = (object.availableValue !== undefined && object.availableValue !== null)\n      ? MoneyValue.fromPartial(object.availableValue)\n      : undefined;\n    message.blockedValue = (object.blockedValue !== undefined && object.blockedValue !== null)\n      ? MoneyValue.fromPartial(object.blockedValue)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseChildOperationItem(): ChildOperationItem {\n  return { instrumentUid: \"\", payment: undefined };\n}\n\nexport const ChildOperationItem: OperationsUtils.MessageFns<ChildOperationItem> = {\n  encode(message: ChildOperationItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(10).string(message.instrumentUid);\n    }\n    if (message.payment !== undefined) {\n      MoneyValue.encode(message.payment, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ChildOperationItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseChildOperationItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.payment = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ChildOperationItem {\n    return {\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      payment: isSet(object.payment) ? MoneyValue.fromJSON(object.payment) : undefined,\n    };\n  },\n\n  toJSON(message: ChildOperationItem): unknown {\n    const obj: any = {};\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.payment !== undefined) {\n      obj.payment = MoneyValue.toJSON(message.payment);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ChildOperationItem>): ChildOperationItem {\n    return ChildOperationItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ChildOperationItem>): ChildOperationItem {\n    const message = createBaseChildOperationItem();\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.payment = (object.payment !== undefined && object.payment !== null)\n      ? MoneyValue.fromPartial(object.payment)\n      : undefined;\n    return message;\n  },\n};\n\n/**\n * С помощью методов сервиса можно получить:</br></br> **1**. Список операций по счёту.</br> **2**.\n * Портфель по счёту.</br> **3**. Позиции ценных бумаг на счёте.</br> **4**.\n * Доступный остаток для вывода средств.</br> **5**. Различные отчёты.\n */\nexport type OperationsServiceDefinition = typeof OperationsServiceDefinition;\nexport const OperationsServiceDefinition = {\n  name: \"OperationsService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.OperationsService\",\n  methods: {\n    /**\n     * Получить список операций по счёту. При работе с методом учитывайте\n     * [особенности взаимодействия](/investAPI/operations_problems).\n     */\n    getOperations: {\n      name: \"GetOperations\",\n      requestType: OperationsRequest,\n      requestStream: false,\n      responseType: OperationsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить портфель по счёту. */\n    getPortfolio: {\n      name: \"GetPortfolio\",\n      requestType: PortfolioRequest,\n      requestStream: false,\n      responseType: PortfolioResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список позиций по счёту. */\n    getPositions: {\n      name: \"GetPositions\",\n      requestType: PositionsRequest,\n      requestStream: false,\n      responseType: PositionsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить доступный остаток для вывода средств. */\n    getWithdrawLimits: {\n      name: \"GetWithdrawLimits\",\n      requestType: WithdrawLimitsRequest,\n      requestStream: false,\n      responseType: WithdrawLimitsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить брокерский отчёт. */\n    getBrokerReport: {\n      name: \"GetBrokerReport\",\n      requestType: BrokerReportRequest,\n      requestStream: false,\n      responseType: BrokerReportResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить отчёт «Справка о доходах за пределами РФ». */\n    getDividendsForeignIssuer: {\n      name: \"GetDividendsForeignIssuer\",\n      requestType: GetDividendsForeignIssuerRequest,\n      requestStream: false,\n      responseType: GetDividendsForeignIssuerResponse,\n      responseStream: false,\n      options: {},\n    },\n    /**\n     * Получить список операций по счёту с пагинацией. При работе с методом учитывайте\n     * [особенности взаимодействия](/investAPI/operations_problems).\n     */\n    getOperationsByCursor: {\n      name: \"GetOperationsByCursor\",\n      requestType: GetOperationsByCursorRequest,\n      requestStream: false,\n      responseType: GetOperationsByCursorResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface OperationsServiceImplementation<CallContextExt = {}> {\n  /**\n   * Получить список операций по счёту. При работе с методом учитывайте\n   * [особенности взаимодействия](/investAPI/operations_problems).\n   */\n  getOperations(\n    request: OperationsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationsResponse>>;\n  /** Получить портфель по счёту. */\n  getPortfolio(\n    request: PortfolioRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PortfolioResponse>>;\n  /** Получить список позиций по счёту. */\n  getPositions(\n    request: PositionsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PositionsResponse>>;\n  /** Получить доступный остаток для вывода средств. */\n  getWithdrawLimits(\n    request: WithdrawLimitsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<WithdrawLimitsResponse>>;\n  /** Получить брокерский отчёт. */\n  getBrokerReport(\n    request: BrokerReportRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<BrokerReportResponse>>;\n  /** Получить отчёт «Справка о доходах за пределами РФ». */\n  getDividendsForeignIssuer(\n    request: GetDividendsForeignIssuerRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetDividendsForeignIssuerResponse>>;\n  /**\n   * Получить список операций по счёту с пагинацией. При работе с методом учитывайте\n   * [особенности взаимодействия](/investAPI/operations_problems).\n   */\n  getOperationsByCursor(\n    request: GetOperationsByCursorRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetOperationsByCursorResponse>>;\n}\n\nexport interface OperationsServiceClient<CallOptionsExt = {}> {\n  /**\n   * Получить список операций по счёту. При работе с методом учитывайте\n   * [особенности взаимодействия](/investAPI/operations_problems).\n   */\n  getOperations(\n    request: DeepPartial<OperationsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationsResponse>;\n  /** Получить портфель по счёту. */\n  getPortfolio(\n    request: DeepPartial<PortfolioRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PortfolioResponse>;\n  /** Получить список позиций по счёту. */\n  getPositions(\n    request: DeepPartial<PositionsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PositionsResponse>;\n  /** Получить доступный остаток для вывода средств. */\n  getWithdrawLimits(\n    request: DeepPartial<WithdrawLimitsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<WithdrawLimitsResponse>;\n  /** Получить брокерский отчёт. */\n  getBrokerReport(\n    request: DeepPartial<BrokerReportRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<BrokerReportResponse>;\n  /** Получить отчёт «Справка о доходах за пределами РФ». */\n  getDividendsForeignIssuer(\n    request: DeepPartial<GetDividendsForeignIssuerRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetDividendsForeignIssuerResponse>;\n  /**\n   * Получить список операций по счёту с пагинацией. При работе с методом учитывайте\n   * [особенности взаимодействия](/investAPI/operations_problems).\n   */\n  getOperationsByCursor(\n    request: DeepPartial<GetOperationsByCursorRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetOperationsByCursorResponse>;\n}\n\nexport type OperationsStreamServiceDefinition = typeof OperationsStreamServiceDefinition;\nexport const OperationsStreamServiceDefinition = {\n  name: \"OperationsStreamService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.OperationsStreamService\",\n  methods: {\n    /** Server-side stream обновлений портфеля. */\n    portfolioStream: {\n      name: \"PortfolioStream\",\n      requestType: PortfolioStreamRequest,\n      requestStream: false,\n      responseType: PortfolioStreamResponse,\n      responseStream: true,\n      options: {},\n    },\n    /** Server-side stream обновлений информации по изменению позиций портфеля. */\n    positionsStream: {\n      name: \"PositionsStream\",\n      requestType: PositionsStreamRequest,\n      requestStream: false,\n      responseType: PositionsStreamResponse,\n      responseStream: true,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface OperationsStreamServiceImplementation<CallContextExt = {}> {\n  /** Server-side stream обновлений портфеля. */\n  portfolioStream(\n    request: PortfolioStreamRequest,\n    context: CallContext & CallContextExt,\n  ): ServerStreamingMethodResult<DeepPartial<PortfolioStreamResponse>>;\n  /** Server-side stream обновлений информации по изменению позиций портфеля. */\n  positionsStream(\n    request: PositionsStreamRequest,\n    context: CallContext & CallContextExt,\n  ): ServerStreamingMethodResult<DeepPartial<PositionsStreamResponse>>;\n}\n\nexport interface OperationsStreamServiceClient<CallOptionsExt = {}> {\n  /** Server-side stream обновлений портфеля. */\n  portfolioStream(\n    request: DeepPartial<PortfolioStreamRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): AsyncIterable<PortfolioStreamResponse>;\n  /** Server-side stream обновлений информации по изменению позиций портфеля. */\n  positionsStream(\n    request: DeepPartial<PositionsStreamRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): AsyncIterable<PositionsStreamResponse>;\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\ntype ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void> };\n\n// interface MessageFns<T> {\n//   encode(message: T, writer?: BinaryWriter): BinaryWriter;\n//   decode(input: BinaryReader | Uint8Array, length?: number): T;\n//   fromJSON(object: any): T;\n//   toJSON(message: T): unknown;\n//   create(base?: DeepPartial<T>): T;\n//   fromPartial(object: DeepPartial<T>): T;\n// }\n\nexport declare namespace OperationsUtils {\n  export interface MessageFns<T> {\n    encode(message: T, writer?: BinaryWriter): BinaryWriter;\n    decode(input: BinaryReader | Uint8Array, length?: number): T;\n    fromJSON(object: any): T;\n    toJSON(message: T): unknown;\n    create(base?: DeepPartial<T>): T;\n    fromPartial(object: DeepPartial<T>): T;\n  }\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: marketdata.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport {\n  InstrumentStatus,\n  instrumentStatusFromJSON,\n  instrumentStatusToJSON,\n  Ping,\n  PingDelaySettings,\n  PingRequest,\n  Quotation,\n  SecurityTradingStatus,\n  securityTradingStatusFromJSON,\n  securityTradingStatusToJSON,\n} from \"./common\";\nimport { Timestamp } from \"./google/protobuf/timestamp\";\n\n/** Тип операции со списком подписок. */\nexport enum SubscriptionAction {\n  /** SUBSCRIPTION_ACTION_UNSPECIFIED - Статус подписки не определён. */\n  SUBSCRIPTION_ACTION_UNSPECIFIED = 0,\n  /** SUBSCRIPTION_ACTION_SUBSCRIBE - Подписаться. */\n  SUBSCRIPTION_ACTION_SUBSCRIBE = 1,\n  /** SUBSCRIPTION_ACTION_UNSUBSCRIBE - Отписаться. */\n  SUBSCRIPTION_ACTION_UNSUBSCRIBE = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function subscriptionActionFromJSON(object: any): SubscriptionAction {\n  switch (object) {\n    case 0:\n    case \"SUBSCRIPTION_ACTION_UNSPECIFIED\":\n      return SubscriptionAction.SUBSCRIPTION_ACTION_UNSPECIFIED;\n    case 1:\n    case \"SUBSCRIPTION_ACTION_SUBSCRIBE\":\n      return SubscriptionAction.SUBSCRIPTION_ACTION_SUBSCRIBE;\n    case 2:\n    case \"SUBSCRIPTION_ACTION_UNSUBSCRIBE\":\n      return SubscriptionAction.SUBSCRIPTION_ACTION_UNSUBSCRIBE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return SubscriptionAction.UNRECOGNIZED;\n  }\n}\n\nexport function subscriptionActionToJSON(object: SubscriptionAction): string {\n  switch (object) {\n    case SubscriptionAction.SUBSCRIPTION_ACTION_UNSPECIFIED:\n      return \"SUBSCRIPTION_ACTION_UNSPECIFIED\";\n    case SubscriptionAction.SUBSCRIPTION_ACTION_SUBSCRIBE:\n      return \"SUBSCRIPTION_ACTION_SUBSCRIBE\";\n    case SubscriptionAction.SUBSCRIPTION_ACTION_UNSUBSCRIBE:\n      return \"SUBSCRIPTION_ACTION_UNSUBSCRIBE\";\n    case SubscriptionAction.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Интервал свечи. */\nexport enum SubscriptionInterval {\n  /** SUBSCRIPTION_INTERVAL_UNSPECIFIED - Интервал свечи не определён. */\n  SUBSCRIPTION_INTERVAL_UNSPECIFIED = 0,\n  /** SUBSCRIPTION_INTERVAL_ONE_MINUTE - Минутные свечи. */\n  SUBSCRIPTION_INTERVAL_ONE_MINUTE = 1,\n  /** SUBSCRIPTION_INTERVAL_FIVE_MINUTES - Пятиминутные свечи. */\n  SUBSCRIPTION_INTERVAL_FIVE_MINUTES = 2,\n  /** SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES - Пятнадцатиминутные свечи. */\n  SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES = 3,\n  /** SUBSCRIPTION_INTERVAL_ONE_HOUR - Часовые свечи. */\n  SUBSCRIPTION_INTERVAL_ONE_HOUR = 4,\n  /** SUBSCRIPTION_INTERVAL_ONE_DAY - Дневные свечи. */\n  SUBSCRIPTION_INTERVAL_ONE_DAY = 5,\n  /** SUBSCRIPTION_INTERVAL_2_MIN - Двухминутные свечи. */\n  SUBSCRIPTION_INTERVAL_2_MIN = 6,\n  /** SUBSCRIPTION_INTERVAL_3_MIN - Трёхминутные свечи. */\n  SUBSCRIPTION_INTERVAL_3_MIN = 7,\n  /** SUBSCRIPTION_INTERVAL_10_MIN - Десятиминутные свечи. */\n  SUBSCRIPTION_INTERVAL_10_MIN = 8,\n  /** SUBSCRIPTION_INTERVAL_30_MIN - Тридцатиминутные свечи. */\n  SUBSCRIPTION_INTERVAL_30_MIN = 9,\n  /** SUBSCRIPTION_INTERVAL_2_HOUR - Двухчасовые свечи. */\n  SUBSCRIPTION_INTERVAL_2_HOUR = 10,\n  /** SUBSCRIPTION_INTERVAL_4_HOUR - Четырёхчасовые свечи. */\n  SUBSCRIPTION_INTERVAL_4_HOUR = 11,\n  /** SUBSCRIPTION_INTERVAL_WEEK - Недельные свечи. */\n  SUBSCRIPTION_INTERVAL_WEEK = 12,\n  /** SUBSCRIPTION_INTERVAL_MONTH - Месячные свечи. */\n  SUBSCRIPTION_INTERVAL_MONTH = 13,\n  UNRECOGNIZED = -1,\n}\n\nexport function subscriptionIntervalFromJSON(object: any): SubscriptionInterval {\n  switch (object) {\n    case 0:\n    case \"SUBSCRIPTION_INTERVAL_UNSPECIFIED\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_UNSPECIFIED;\n    case 1:\n    case \"SUBSCRIPTION_INTERVAL_ONE_MINUTE\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_ONE_MINUTE;\n    case 2:\n    case \"SUBSCRIPTION_INTERVAL_FIVE_MINUTES\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_FIVE_MINUTES;\n    case 3:\n    case \"SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES;\n    case 4:\n    case \"SUBSCRIPTION_INTERVAL_ONE_HOUR\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_ONE_HOUR;\n    case 5:\n    case \"SUBSCRIPTION_INTERVAL_ONE_DAY\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_ONE_DAY;\n    case 6:\n    case \"SUBSCRIPTION_INTERVAL_2_MIN\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_2_MIN;\n    case 7:\n    case \"SUBSCRIPTION_INTERVAL_3_MIN\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_3_MIN;\n    case 8:\n    case \"SUBSCRIPTION_INTERVAL_10_MIN\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_10_MIN;\n    case 9:\n    case \"SUBSCRIPTION_INTERVAL_30_MIN\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_30_MIN;\n    case 10:\n    case \"SUBSCRIPTION_INTERVAL_2_HOUR\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_2_HOUR;\n    case 11:\n    case \"SUBSCRIPTION_INTERVAL_4_HOUR\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_4_HOUR;\n    case 12:\n    case \"SUBSCRIPTION_INTERVAL_WEEK\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_WEEK;\n    case 13:\n    case \"SUBSCRIPTION_INTERVAL_MONTH\":\n      return SubscriptionInterval.SUBSCRIPTION_INTERVAL_MONTH;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return SubscriptionInterval.UNRECOGNIZED;\n  }\n}\n\nexport function subscriptionIntervalToJSON(object: SubscriptionInterval): string {\n  switch (object) {\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_UNSPECIFIED:\n      return \"SUBSCRIPTION_INTERVAL_UNSPECIFIED\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_ONE_MINUTE:\n      return \"SUBSCRIPTION_INTERVAL_ONE_MINUTE\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_FIVE_MINUTES:\n      return \"SUBSCRIPTION_INTERVAL_FIVE_MINUTES\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES:\n      return \"SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_ONE_HOUR:\n      return \"SUBSCRIPTION_INTERVAL_ONE_HOUR\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_ONE_DAY:\n      return \"SUBSCRIPTION_INTERVAL_ONE_DAY\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_2_MIN:\n      return \"SUBSCRIPTION_INTERVAL_2_MIN\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_3_MIN:\n      return \"SUBSCRIPTION_INTERVAL_3_MIN\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_10_MIN:\n      return \"SUBSCRIPTION_INTERVAL_10_MIN\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_30_MIN:\n      return \"SUBSCRIPTION_INTERVAL_30_MIN\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_2_HOUR:\n      return \"SUBSCRIPTION_INTERVAL_2_HOUR\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_4_HOUR:\n      return \"SUBSCRIPTION_INTERVAL_4_HOUR\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_WEEK:\n      return \"SUBSCRIPTION_INTERVAL_WEEK\";\n    case SubscriptionInterval.SUBSCRIPTION_INTERVAL_MONTH:\n      return \"SUBSCRIPTION_INTERVAL_MONTH\";\n    case SubscriptionInterval.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Результат подписки. */\nexport enum SubscriptionStatus {\n  /** SUBSCRIPTION_STATUS_UNSPECIFIED - Статус подписки не определён. */\n  SUBSCRIPTION_STATUS_UNSPECIFIED = 0,\n  /** SUBSCRIPTION_STATUS_SUCCESS - Успешно. */\n  SUBSCRIPTION_STATUS_SUCCESS = 1,\n  /** SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND - Инструмент не найден. */\n  SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND = 2,\n  /** SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID - Некорректный статус подписки. [Список возможных значений](https://russianinvestments.github.io/investAPI/marketdata#subscriptionaction). */\n  SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID = 3,\n  /** SUBSCRIPTION_STATUS_DEPTH_IS_INVALID - Некорректная глубина стакана. Доступные значения — 1, 10, 20, 30, 40, 50. */\n  SUBSCRIPTION_STATUS_DEPTH_IS_INVALID = 4,\n  /** SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID - Некорректный интервал свечей. [Список возможных значений](https://russianinvestments.github.io/investAPI/marketdata#subscriptioninterval). */\n  SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID = 5,\n  /** SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED - Превышен лимит на общее количество подписок в рамках стрима. [Лимитная политика](https://russianinvestments.github.io/investAPI/limits/). */\n  SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED = 6,\n  /** SUBSCRIPTION_STATUS_INTERNAL_ERROR - Внутренняя ошибка сервиса. */\n  SUBSCRIPTION_STATUS_INTERNAL_ERROR = 7,\n  /** SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS - Превышен лимит на количество запросов на подписки в течение установленного отрезка времени. */\n  SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS = 8,\n  /** SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND - Активная подписка не найдена. Ошибка может возникнуть только при отписке от несуществующей подписки. */\n  SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND = 9,\n  /** SUBSCRIPTION_STATUS_SOURCE_IS_INVALID - Указан некорректный источник */\n  SUBSCRIPTION_STATUS_SOURCE_IS_INVALID = 10,\n  UNRECOGNIZED = -1,\n}\n\nexport function subscriptionStatusFromJSON(object: any): SubscriptionStatus {\n  switch (object) {\n    case 0:\n    case \"SUBSCRIPTION_STATUS_UNSPECIFIED\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_UNSPECIFIED;\n    case 1:\n    case \"SUBSCRIPTION_STATUS_SUCCESS\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_SUCCESS;\n    case 2:\n    case \"SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND;\n    case 3:\n    case \"SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID;\n    case 4:\n    case \"SUBSCRIPTION_STATUS_DEPTH_IS_INVALID\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_DEPTH_IS_INVALID;\n    case 5:\n    case \"SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID;\n    case 6:\n    case \"SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED;\n    case 7:\n    case \"SUBSCRIPTION_STATUS_INTERNAL_ERROR\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_INTERNAL_ERROR;\n    case 8:\n    case \"SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS;\n    case 9:\n    case \"SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND;\n    case 10:\n    case \"SUBSCRIPTION_STATUS_SOURCE_IS_INVALID\":\n      return SubscriptionStatus.SUBSCRIPTION_STATUS_SOURCE_IS_INVALID;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return SubscriptionStatus.UNRECOGNIZED;\n  }\n}\n\nexport function subscriptionStatusToJSON(object: SubscriptionStatus): string {\n  switch (object) {\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_UNSPECIFIED:\n      return \"SUBSCRIPTION_STATUS_UNSPECIFIED\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_SUCCESS:\n      return \"SUBSCRIPTION_STATUS_SUCCESS\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND:\n      return \"SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID:\n      return \"SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_DEPTH_IS_INVALID:\n      return \"SUBSCRIPTION_STATUS_DEPTH_IS_INVALID\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID:\n      return \"SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED:\n      return \"SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_INTERNAL_ERROR:\n      return \"SUBSCRIPTION_STATUS_INTERNAL_ERROR\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS:\n      return \"SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND:\n      return \"SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND\";\n    case SubscriptionStatus.SUBSCRIPTION_STATUS_SOURCE_IS_INVALID:\n      return \"SUBSCRIPTION_STATUS_SOURCE_IS_INVALID\";\n    case SubscriptionStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Типы источников сделок. */\nexport enum TradeSourceType {\n  /** TRADE_SOURCE_UNSPECIFIED - Тип источника сделки не определён. */\n  TRADE_SOURCE_UNSPECIFIED = 0,\n  /** TRADE_SOURCE_EXCHANGE - Биржевые сделки. */\n  TRADE_SOURCE_EXCHANGE = 1,\n  /** TRADE_SOURCE_DEALER - Сделки дилера. */\n  TRADE_SOURCE_DEALER = 2,\n  /** TRADE_SOURCE_ALL - Все сделки. */\n  TRADE_SOURCE_ALL = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function tradeSourceTypeFromJSON(object: any): TradeSourceType {\n  switch (object) {\n    case 0:\n    case \"TRADE_SOURCE_UNSPECIFIED\":\n      return TradeSourceType.TRADE_SOURCE_UNSPECIFIED;\n    case 1:\n    case \"TRADE_SOURCE_EXCHANGE\":\n      return TradeSourceType.TRADE_SOURCE_EXCHANGE;\n    case 2:\n    case \"TRADE_SOURCE_DEALER\":\n      return TradeSourceType.TRADE_SOURCE_DEALER;\n    case 3:\n    case \"TRADE_SOURCE_ALL\":\n      return TradeSourceType.TRADE_SOURCE_ALL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TradeSourceType.UNRECOGNIZED;\n  }\n}\n\nexport function tradeSourceTypeToJSON(object: TradeSourceType): string {\n  switch (object) {\n    case TradeSourceType.TRADE_SOURCE_UNSPECIFIED:\n      return \"TRADE_SOURCE_UNSPECIFIED\";\n    case TradeSourceType.TRADE_SOURCE_EXCHANGE:\n      return \"TRADE_SOURCE_EXCHANGE\";\n    case TradeSourceType.TRADE_SOURCE_DEALER:\n      return \"TRADE_SOURCE_DEALER\";\n    case TradeSourceType.TRADE_SOURCE_ALL:\n      return \"TRADE_SOURCE_ALL\";\n    case TradeSourceType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Направление сделки. */\nexport enum TradeDirection {\n  /** TRADE_DIRECTION_UNSPECIFIED - Направление сделки не определено. */\n  TRADE_DIRECTION_UNSPECIFIED = 0,\n  /** TRADE_DIRECTION_BUY - Покупка. */\n  TRADE_DIRECTION_BUY = 1,\n  /** TRADE_DIRECTION_SELL - Продажа. */\n  TRADE_DIRECTION_SELL = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function tradeDirectionFromJSON(object: any): TradeDirection {\n  switch (object) {\n    case 0:\n    case \"TRADE_DIRECTION_UNSPECIFIED\":\n      return TradeDirection.TRADE_DIRECTION_UNSPECIFIED;\n    case 1:\n    case \"TRADE_DIRECTION_BUY\":\n      return TradeDirection.TRADE_DIRECTION_BUY;\n    case 2:\n    case \"TRADE_DIRECTION_SELL\":\n      return TradeDirection.TRADE_DIRECTION_SELL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TradeDirection.UNRECOGNIZED;\n  }\n}\n\nexport function tradeDirectionToJSON(object: TradeDirection): string {\n  switch (object) {\n    case TradeDirection.TRADE_DIRECTION_UNSPECIFIED:\n      return \"TRADE_DIRECTION_UNSPECIFIED\";\n    case TradeDirection.TRADE_DIRECTION_BUY:\n      return \"TRADE_DIRECTION_BUY\";\n    case TradeDirection.TRADE_DIRECTION_SELL:\n      return \"TRADE_DIRECTION_SELL\";\n    case TradeDirection.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Интервал свечей. Максимальное значение интервала приведено ориентировочно, может отличаться в большую сторону в зависимости от параметров запроса. */\nexport enum CandleInterval {\n  /** CANDLE_INTERVAL_UNSPECIFIED - Интервал не определён. */\n  CANDLE_INTERVAL_UNSPECIFIED = 0,\n  /** CANDLE_INTERVAL_1_MIN - От 1 минуты до 1 дня (лимит 2400). */\n  CANDLE_INTERVAL_1_MIN = 1,\n  /** CANDLE_INTERVAL_5_MIN - От 5 минут до недели (лимит 2400). */\n  CANDLE_INTERVAL_5_MIN = 2,\n  /** CANDLE_INTERVAL_15_MIN - От 15 минут до 3 недель (лимит 2400). */\n  CANDLE_INTERVAL_15_MIN = 3,\n  /** CANDLE_INTERVAL_HOUR - От 1 часа до 3 месяцев (лимит 2400). */\n  CANDLE_INTERVAL_HOUR = 4,\n  /** CANDLE_INTERVAL_DAY - От 1 дня до 6 лет (лимит 2400). */\n  CANDLE_INTERVAL_DAY = 5,\n  /** CANDLE_INTERVAL_2_MIN - От 2 минут до 1 дня (лимит 1200). */\n  CANDLE_INTERVAL_2_MIN = 6,\n  /** CANDLE_INTERVAL_3_MIN - От 3 минут до 1 дня (лимит 750). */\n  CANDLE_INTERVAL_3_MIN = 7,\n  /** CANDLE_INTERVAL_10_MIN - От 10 минут до недели (лимит 1200). */\n  CANDLE_INTERVAL_10_MIN = 8,\n  /** CANDLE_INTERVAL_30_MIN - От 30 минут до 3 недель (лимит 1200). */\n  CANDLE_INTERVAL_30_MIN = 9,\n  /** CANDLE_INTERVAL_2_HOUR - От 2 часов до 3 месяцев (лимит 2400). */\n  CANDLE_INTERVAL_2_HOUR = 10,\n  /** CANDLE_INTERVAL_4_HOUR - От 4 часов до 3 месяцев (лимит 700). */\n  CANDLE_INTERVAL_4_HOUR = 11,\n  /** CANDLE_INTERVAL_WEEK - От 1 недели до 5 лет (лимит 300). */\n  CANDLE_INTERVAL_WEEK = 12,\n  /** CANDLE_INTERVAL_MONTH - От 1 месяца до 10 лет (лимит 120). */\n  CANDLE_INTERVAL_MONTH = 13,\n  UNRECOGNIZED = -1,\n}\n\nexport function candleIntervalFromJSON(object: any): CandleInterval {\n  switch (object) {\n    case 0:\n    case \"CANDLE_INTERVAL_UNSPECIFIED\":\n      return CandleInterval.CANDLE_INTERVAL_UNSPECIFIED;\n    case 1:\n    case \"CANDLE_INTERVAL_1_MIN\":\n      return CandleInterval.CANDLE_INTERVAL_1_MIN;\n    case 2:\n    case \"CANDLE_INTERVAL_5_MIN\":\n      return CandleInterval.CANDLE_INTERVAL_5_MIN;\n    case 3:\n    case \"CANDLE_INTERVAL_15_MIN\":\n      return CandleInterval.CANDLE_INTERVAL_15_MIN;\n    case 4:\n    case \"CANDLE_INTERVAL_HOUR\":\n      return CandleInterval.CANDLE_INTERVAL_HOUR;\n    case 5:\n    case \"CANDLE_INTERVAL_DAY\":\n      return CandleInterval.CANDLE_INTERVAL_DAY;\n    case 6:\n    case \"CANDLE_INTERVAL_2_MIN\":\n      return CandleInterval.CANDLE_INTERVAL_2_MIN;\n    case 7:\n    case \"CANDLE_INTERVAL_3_MIN\":\n      return CandleInterval.CANDLE_INTERVAL_3_MIN;\n    case 8:\n    case \"CANDLE_INTERVAL_10_MIN\":\n      return CandleInterval.CANDLE_INTERVAL_10_MIN;\n    case 9:\n    case \"CANDLE_INTERVAL_30_MIN\":\n      return CandleInterval.CANDLE_INTERVAL_30_MIN;\n    case 10:\n    case \"CANDLE_INTERVAL_2_HOUR\":\n      return CandleInterval.CANDLE_INTERVAL_2_HOUR;\n    case 11:\n    case \"CANDLE_INTERVAL_4_HOUR\":\n      return CandleInterval.CANDLE_INTERVAL_4_HOUR;\n    case 12:\n    case \"CANDLE_INTERVAL_WEEK\":\n      return CandleInterval.CANDLE_INTERVAL_WEEK;\n    case 13:\n    case \"CANDLE_INTERVAL_MONTH\":\n      return CandleInterval.CANDLE_INTERVAL_MONTH;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CandleInterval.UNRECOGNIZED;\n  }\n}\n\nexport function candleIntervalToJSON(object: CandleInterval): string {\n  switch (object) {\n    case CandleInterval.CANDLE_INTERVAL_UNSPECIFIED:\n      return \"CANDLE_INTERVAL_UNSPECIFIED\";\n    case CandleInterval.CANDLE_INTERVAL_1_MIN:\n      return \"CANDLE_INTERVAL_1_MIN\";\n    case CandleInterval.CANDLE_INTERVAL_5_MIN:\n      return \"CANDLE_INTERVAL_5_MIN\";\n    case CandleInterval.CANDLE_INTERVAL_15_MIN:\n      return \"CANDLE_INTERVAL_15_MIN\";\n    case CandleInterval.CANDLE_INTERVAL_HOUR:\n      return \"CANDLE_INTERVAL_HOUR\";\n    case CandleInterval.CANDLE_INTERVAL_DAY:\n      return \"CANDLE_INTERVAL_DAY\";\n    case CandleInterval.CANDLE_INTERVAL_2_MIN:\n      return \"CANDLE_INTERVAL_2_MIN\";\n    case CandleInterval.CANDLE_INTERVAL_3_MIN:\n      return \"CANDLE_INTERVAL_3_MIN\";\n    case CandleInterval.CANDLE_INTERVAL_10_MIN:\n      return \"CANDLE_INTERVAL_10_MIN\";\n    case CandleInterval.CANDLE_INTERVAL_30_MIN:\n      return \"CANDLE_INTERVAL_30_MIN\";\n    case CandleInterval.CANDLE_INTERVAL_2_HOUR:\n      return \"CANDLE_INTERVAL_2_HOUR\";\n    case CandleInterval.CANDLE_INTERVAL_4_HOUR:\n      return \"CANDLE_INTERVAL_4_HOUR\";\n    case CandleInterval.CANDLE_INTERVAL_WEEK:\n      return \"CANDLE_INTERVAL_WEEK\";\n    case CandleInterval.CANDLE_INTERVAL_MONTH:\n      return \"CANDLE_INTERVAL_MONTH\";\n    case CandleInterval.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport enum CandleSource {\n  /** CANDLE_SOURCE_UNSPECIFIED - Источник свечей не определён. */\n  CANDLE_SOURCE_UNSPECIFIED = 0,\n  /** CANDLE_SOURCE_EXCHANGE - Биржевые свечи. */\n  CANDLE_SOURCE_EXCHANGE = 1,\n  /** CANDLE_SOURCE_DEALER_WEEKEND - Свечи  дилера в результате торговли по выходным. */\n  CANDLE_SOURCE_DEALER_WEEKEND = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function candleSourceFromJSON(object: any): CandleSource {\n  switch (object) {\n    case 0:\n    case \"CANDLE_SOURCE_UNSPECIFIED\":\n      return CandleSource.CANDLE_SOURCE_UNSPECIFIED;\n    case 1:\n    case \"CANDLE_SOURCE_EXCHANGE\":\n      return CandleSource.CANDLE_SOURCE_EXCHANGE;\n    case 2:\n    case \"CANDLE_SOURCE_DEALER_WEEKEND\":\n      return CandleSource.CANDLE_SOURCE_DEALER_WEEKEND;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CandleSource.UNRECOGNIZED;\n  }\n}\n\nexport function candleSourceToJSON(object: CandleSource): string {\n  switch (object) {\n    case CandleSource.CANDLE_SOURCE_UNSPECIFIED:\n      return \"CANDLE_SOURCE_UNSPECIFIED\";\n    case CandleSource.CANDLE_SOURCE_EXCHANGE:\n      return \"CANDLE_SOURCE_EXCHANGE\";\n    case CandleSource.CANDLE_SOURCE_DEALER_WEEKEND:\n      return \"CANDLE_SOURCE_DEALER_WEEKEND\";\n    case CandleSource.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport enum OrderBookType {\n  /** ORDERBOOK_TYPE_UNSPECIFIED - Не определён. */\n  ORDERBOOK_TYPE_UNSPECIFIED = 0,\n  /** ORDERBOOK_TYPE_EXCHANGE - Биржевой стакан. */\n  ORDERBOOK_TYPE_EXCHANGE = 1,\n  /** ORDERBOOK_TYPE_DEALER - Стакан дилера. */\n  ORDERBOOK_TYPE_DEALER = 2,\n  /** ORDERBOOK_TYPE_ALL - Стакан биржевой и дилера. */\n  ORDERBOOK_TYPE_ALL = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function orderBookTypeFromJSON(object: any): OrderBookType {\n  switch (object) {\n    case 0:\n    case \"ORDERBOOK_TYPE_UNSPECIFIED\":\n      return OrderBookType.ORDERBOOK_TYPE_UNSPECIFIED;\n    case 1:\n    case \"ORDERBOOK_TYPE_EXCHANGE\":\n      return OrderBookType.ORDERBOOK_TYPE_EXCHANGE;\n    case 2:\n    case \"ORDERBOOK_TYPE_DEALER\":\n      return OrderBookType.ORDERBOOK_TYPE_DEALER;\n    case 3:\n    case \"ORDERBOOK_TYPE_ALL\":\n      return OrderBookType.ORDERBOOK_TYPE_ALL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OrderBookType.UNRECOGNIZED;\n  }\n}\n\nexport function orderBookTypeToJSON(object: OrderBookType): string {\n  switch (object) {\n    case OrderBookType.ORDERBOOK_TYPE_UNSPECIFIED:\n      return \"ORDERBOOK_TYPE_UNSPECIFIED\";\n    case OrderBookType.ORDERBOOK_TYPE_EXCHANGE:\n      return \"ORDERBOOK_TYPE_EXCHANGE\";\n    case OrderBookType.ORDERBOOK_TYPE_DEALER:\n      return \"ORDERBOOK_TYPE_DEALER\";\n    case OrderBookType.ORDERBOOK_TYPE_ALL:\n      return \"ORDERBOOK_TYPE_ALL\";\n    case OrderBookType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип последней цены */\nexport enum LastPriceType {\n  /** LAST_PRICE_UNSPECIFIED - Не определен. */\n  LAST_PRICE_UNSPECIFIED = 0,\n  /** LAST_PRICE_EXCHANGE - Цена биржи. */\n  LAST_PRICE_EXCHANGE = 1,\n  /** LAST_PRICE_DEALER - Цена дилера */\n  LAST_PRICE_DEALER = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function lastPriceTypeFromJSON(object: any): LastPriceType {\n  switch (object) {\n    case 0:\n    case \"LAST_PRICE_UNSPECIFIED\":\n      return LastPriceType.LAST_PRICE_UNSPECIFIED;\n    case 1:\n    case \"LAST_PRICE_EXCHANGE\":\n      return LastPriceType.LAST_PRICE_EXCHANGE;\n    case 2:\n    case \"LAST_PRICE_DEALER\":\n      return LastPriceType.LAST_PRICE_DEALER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LastPriceType.UNRECOGNIZED;\n  }\n}\n\nexport function lastPriceTypeToJSON(object: LastPriceType): string {\n  switch (object) {\n    case LastPriceType.LAST_PRICE_UNSPECIFIED:\n      return \"LAST_PRICE_UNSPECIFIED\";\n    case LastPriceType.LAST_PRICE_EXCHANGE:\n      return \"LAST_PRICE_EXCHANGE\";\n    case LastPriceType.LAST_PRICE_DEALER:\n      return \"LAST_PRICE_DEALER\";\n    case LastPriceType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Запрос подписки или отписки на определённые биржевые данные. */\nexport interface MarketDataRequest {\n  /** Запрос подписки на свечи. */\n  subscribeCandlesRequest?:\n    | SubscribeCandlesRequest\n    | undefined;\n  /** Запрос подписки на стаканы. */\n  subscribeOrderBookRequest?:\n    | SubscribeOrderBookRequest\n    | undefined;\n  /** Запрос подписки на ленту обезличенных сделок. */\n  subscribeTradesRequest?:\n    | SubscribeTradesRequest\n    | undefined;\n  /** Запрос подписки на торговые статусы инструментов. */\n  subscribeInfoRequest?:\n    | SubscribeInfoRequest\n    | undefined;\n  /** Запрос подписки на цены последних сделок. */\n  subscribeLastPriceRequest?:\n    | SubscribeLastPriceRequest\n    | undefined;\n  /** Запрос своих подписок. */\n  getMySubscriptions?:\n    | GetMySubscriptions\n    | undefined;\n  /** Запрос проверки активности соединения. */\n  ping?:\n    | PingRequest\n    | undefined;\n  /** Запрос настройки пинга. */\n  pingSettings?: PingDelaySettings | undefined;\n}\n\nexport interface MarketDataServerSideStreamRequest {\n  /** Запрос подписки на свечи. */\n  subscribeCandlesRequest:\n    | SubscribeCandlesRequest\n    | undefined;\n  /** Запрос подписки на стаканы. */\n  subscribeOrderBookRequest:\n    | SubscribeOrderBookRequest\n    | undefined;\n  /** Запрос подписки на ленту обезличенных сделок. */\n  subscribeTradesRequest:\n    | SubscribeTradesRequest\n    | undefined;\n  /** Запрос подписки на торговые статусы инструментов. */\n  subscribeInfoRequest:\n    | SubscribeInfoRequest\n    | undefined;\n  /** Запрос подписки на цены последних сделок. */\n  subscribeLastPriceRequest:\n    | SubscribeLastPriceRequest\n    | undefined;\n  /** Запрос настройки пинга. */\n  pingSettings: PingDelaySettings | undefined;\n}\n\n/** Пакет биржевой информации по подписке. */\nexport interface MarketDataResponse {\n  /** Результат подписки на свечи. */\n  subscribeCandlesResponse?:\n    | SubscribeCandlesResponse\n    | undefined;\n  /** Результат подписки на стаканы. */\n  subscribeOrderBookResponse?:\n    | SubscribeOrderBookResponse\n    | undefined;\n  /** Результат подписки на поток обезличенных сделок. */\n  subscribeTradesResponse?:\n    | SubscribeTradesResponse\n    | undefined;\n  /** Результат подписки на торговые статусы инструментов. */\n  subscribeInfoResponse?:\n    | SubscribeInfoResponse\n    | undefined;\n  /** Свеча. */\n  candle?:\n    | Candle\n    | undefined;\n  /** Сделки. */\n  trade?:\n    | Trade\n    | undefined;\n  /** Стакан. */\n  orderbook?:\n    | OrderBook\n    | undefined;\n  /** Торговый статус. */\n  tradingStatus?:\n    | TradingStatus\n    | undefined;\n  /** Проверка активности стрима. */\n  ping?:\n    | Ping\n    | undefined;\n  /** Результат подписки на цены последние сделок по инструментам. */\n  subscribeLastPriceResponse?:\n    | SubscribeLastPriceResponse\n    | undefined;\n  /** Цена последней сделки. */\n  lastPrice?: LastPrice | undefined;\n}\n\n/** subscribeCandles | Изменения статуса подписки на свечи. */\nexport interface SubscribeCandlesRequest {\n  /** Изменение статуса подписки. */\n  subscriptionAction: SubscriptionAction;\n  /** Массив инструментов для подписки на свечи. */\n  instruments: CandleInstrument[];\n  /** Флаг ожидания закрытия временного интервала для отправки свечи. */\n  waitingClose: boolean;\n  /** Источник свечей. */\n  candleSourceType?: GetCandlesRequest_CandleSource | undefined;\n}\n\n/** Запрос изменения статус подписки на свечи. */\nexport interface CandleInstrument {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Интервал свечей. Двухчасовые и четырёхчасовые свечи в стриме отсчитываются с 0:00 по UTC. */\n  interval: SubscriptionInterval;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Результат изменения статус подписки на свечи. */\nexport interface SubscribeCandlesResponse {\n  /** Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */\n  trackingId: string;\n  /** Массив статусов подписки на свечи. */\n  candlesSubscriptions: CandleSubscription[];\n}\n\n/** Статус подписки на свечи. */\nexport interface CandleSubscription {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Интервал свечей. */\n  interval: SubscriptionInterval;\n  /** Статус подписки. */\n  subscriptionStatus: SubscriptionStatus;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Флаг ожидания закрытия временного интервала для отправки свечи. */\n  waitingClose: boolean;\n  /** Идентификатор открытого соединения. */\n  streamId: string;\n  /** Идентификатор подписки в формате `UUID`. */\n  subscriptionId: string;\n  /** Источник свечей. */\n  candleSourceType?: GetCandlesRequest_CandleSource | undefined;\n}\n\n/** Запрос на изменение статуса подписки на стаканы. */\nexport interface SubscribeOrderBookRequest {\n  /** Изменение статуса подписки. */\n  subscriptionAction: SubscriptionAction;\n  /** Массив инструментов для подписки на стаканы. */\n  instruments: OrderBookInstrument[];\n}\n\n/** Запрос подписки на стаканы. */\nexport interface OrderBookInstrument {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Глубина стакана. */\n  depth: number;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId: string;\n  /** Тип стакана. По умолчанию ORDERBOOK_TYPE_ALL - стакан биржевой и дилера. */\n  orderBookType: OrderBookType;\n}\n\n/** Результат изменения статуса подписки на стаканы. */\nexport interface SubscribeOrderBookResponse {\n  /** Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */\n  trackingId: string;\n  /** Массив статусов подписки на стаканы. */\n  orderBookSubscriptions: OrderBookSubscription[];\n}\n\n/** Статус подписки. */\nexport interface OrderBookSubscription {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Глубина стакана. */\n  depth: number;\n  /** Статус подписки. */\n  subscriptionStatus: SubscriptionStatus;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Идентификатор открытого соединения. */\n  streamId: string;\n  /** Идентификатор подписки в формате `UUID`. */\n  subscriptionId: string;\n  /** Тип стакана. */\n  orderBookType: OrderBookType;\n}\n\n/** Изменение статуса подписки на поток обезличенных сделок. */\nexport interface SubscribeTradesRequest {\n  /** Изменение статуса подписки. */\n  subscriptionAction: SubscriptionAction;\n  /** Массив инструментов для подписки на поток обезличенных сделок. */\n  instruments: TradeInstrument[];\n  /** Тип источника сделок. По умолчанию TRADE_SOURCE_ALL - все сделки. */\n  tradeSource: TradeSourceType;\n}\n\n/** Запрос подписки на поток обезличенных сделок. */\nexport interface TradeInstrument {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте instrument_id`.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Результат изменения статуса подписки на поток обезличенных сделок. */\nexport interface SubscribeTradesResponse {\n  /** Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */\n  trackingId: string;\n  /** Массив статусов подписки на поток сделок. */\n  tradeSubscriptions: TradeSubscription[];\n  /** Тип источника сделок. */\n  tradeSource: TradeSourceType;\n}\n\n/** Статус подписки. */\nexport interface TradeSubscription {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Статус подписки. */\n  subscriptionStatus: SubscriptionStatus;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Идентификатор открытого соединения. */\n  streamId: string;\n  /** Идентификатор подписки в формате UUID. */\n  subscriptionId: string;\n}\n\n/** Изменение статуса подписки на торговый статус инструмента. */\nexport interface SubscribeInfoRequest {\n  /** Изменение статуса подписки. */\n  subscriptionAction: SubscriptionAction;\n  /** Массив инструментов для подписки на торговый статус. */\n  instruments: InfoInstrument[];\n}\n\n/** Запрос подписки на торговый статус. */\nexport interface InfoInstrument {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте instrument_id`.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Результат изменения статуса подписки на торговый статус. */\nexport interface SubscribeInfoResponse {\n  /** Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */\n  trackingId: string;\n  /** Массив статусов подписки на торговый статус. */\n  infoSubscriptions: InfoSubscription[];\n}\n\n/** Статус подписки. */\nexport interface InfoSubscription {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Статус подписки. */\n  subscriptionStatus: SubscriptionStatus;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Идентификатор открытого соединения. */\n  streamId: string;\n  /** Идентификатор подписки в формате UUID. */\n  subscriptionId: string;\n}\n\n/** Изменение статуса подписки на цену последней сделки по инструменту. */\nexport interface SubscribeLastPriceRequest {\n  /** Изменение статуса подписки. */\n  subscriptionAction: SubscriptionAction;\n  /** Массив инструментов для подписки на цену последней сделки. */\n  instruments: LastPriceInstrument[];\n}\n\n/** Запрос подписки на последнюю цену. */\nexport interface LastPriceInstrument {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте instrument_id`.\n   *\n   * @deprecated\n   */\n  figi: string;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Результат изменения статуса подписки на цену последней сделки. */\nexport interface SubscribeLastPriceResponse {\n  /** Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id). */\n  trackingId: string;\n  /** Массив статусов подписки на цену последней сделки. */\n  lastPriceSubscriptions: LastPriceSubscription[];\n}\n\n/** Статус подписки на цену последней сделки. */\nexport interface LastPriceSubscription {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Статус подписки. */\n  subscriptionStatus: SubscriptionStatus;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Идентификатор открытого соединения. */\n  streamId: string;\n  /** Идентификатор подписки в формате `UUID`. */\n  subscriptionId: string;\n}\n\n/** Пакет свечей в рамках стрима. */\nexport interface Candle {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Интервал свечи. */\n  interval: SubscriptionInterval;\n  /** Цена открытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  open:\n    | Quotation\n    | undefined;\n  /** Максимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  high:\n    | Quotation\n    | undefined;\n  /** Минимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  low:\n    | Quotation\n    | undefined;\n  /** Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  close:\n    | Quotation\n    | undefined;\n  /** Объём сделок в лотах. */\n  volume: number;\n  /** Время начала интервала свечи по UTC. */\n  time:\n    | Date\n    | undefined;\n  /** Время последней сделки, вошедшей в свечу по UTC. */\n  lastTradeTs:\n    | Date\n    | undefined;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Источник свечей */\n  candleSourceType: CandleSource;\n}\n\n/** Пакет стаканов в рамках стрима. */\nexport interface OrderBook {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Глубина стакана. */\n  depth: number;\n  /** Флаг консистентности стакана. **false** — не все заявки попали в стакан из-за сетевых задержек или нарушения порядка доставки. */\n  isConsistent: boolean;\n  /** Массив предложений. */\n  bids: Order[];\n  /** Массив спроса. */\n  asks: Order[];\n  /** Время формирования стакана в часовом поясе UTC по времени биржи. */\n  time:\n    | Date\n    | undefined;\n  /** Верхний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  limitUp:\n    | Quotation\n    | undefined;\n  /** Нижний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  limitDown:\n    | Quotation\n    | undefined;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Тип стакана. */\n  orderBookType: OrderBookType;\n}\n\n/** Массив предложений/спроса. */\nexport interface Order {\n  /** Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  price:\n    | Quotation\n    | undefined;\n  /** Количество в лотах. */\n  quantity: number;\n}\n\n/** Информация о сделке. */\nexport interface Trade {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Направление сделки. */\n  direction: TradeDirection;\n  /** Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  price:\n    | Quotation\n    | undefined;\n  /** Количество лотов. */\n  quantity: number;\n  /** Время сделки в часовом поясе UTC по времени биржи. */\n  time:\n    | Date\n    | undefined;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Тип источника сделки. */\n  tradeSource: TradeSourceType;\n}\n\n/** Пакет изменения торгового статуса. */\nexport interface TradingStatus {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Статус торговли инструментом. */\n  tradingStatus: SecurityTradingStatus;\n  /** Время изменения торгового статуса по UTC. */\n  time:\n    | Date\n    | undefined;\n  /** Признак доступности выставления лимитной заявки по инструменту. */\n  limitOrderAvailableFlag: boolean;\n  /** Признак доступности выставления рыночной заявки по инструменту. */\n  marketOrderAvailableFlag: boolean;\n  /** UID инструмента. */\n  instrumentUid: string;\n}\n\n/** Запрос исторических свечей. */\nexport interface GetCandlesRequest {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.\n   *\n   * @deprecated\n   */\n  figi?:\n    | string\n    | undefined;\n  /** Начало запрашиваемого периода по UTC. */\n  from:\n    | Date\n    | undefined;\n  /** Окончание запрашиваемого периода по UTC. */\n  to:\n    | Date\n    | undefined;\n  /** Интервал запрошенных свечей. */\n  interval: CandleInterval;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId?:\n    | string\n    | undefined;\n  /** Тип источника свечи. */\n  candleSourceType?:\n    | GetCandlesRequest_CandleSource\n    | undefined;\n  /** Максимальное количество свечей в ответе. */\n  limit?: number | undefined;\n}\n\nexport enum GetCandlesRequest_CandleSource {\n  /** CANDLE_SOURCE_UNSPECIFIED - Все свечи. */\n  CANDLE_SOURCE_UNSPECIFIED = 0,\n  /** CANDLE_SOURCE_EXCHANGE - Биржевые свечи. */\n  CANDLE_SOURCE_EXCHANGE = 1,\n  /** CANDLE_SOURCE_INCLUDE_WEEKEND - Все свечи с учетом торговли по выходным. */\n  CANDLE_SOURCE_INCLUDE_WEEKEND = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function getCandlesRequest_CandleSourceFromJSON(object: any): GetCandlesRequest_CandleSource {\n  switch (object) {\n    case 0:\n    case \"CANDLE_SOURCE_UNSPECIFIED\":\n      return GetCandlesRequest_CandleSource.CANDLE_SOURCE_UNSPECIFIED;\n    case 1:\n    case \"CANDLE_SOURCE_EXCHANGE\":\n      return GetCandlesRequest_CandleSource.CANDLE_SOURCE_EXCHANGE;\n    case 3:\n    case \"CANDLE_SOURCE_INCLUDE_WEEKEND\":\n      return GetCandlesRequest_CandleSource.CANDLE_SOURCE_INCLUDE_WEEKEND;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GetCandlesRequest_CandleSource.UNRECOGNIZED;\n  }\n}\n\nexport function getCandlesRequest_CandleSourceToJSON(object: GetCandlesRequest_CandleSource): string {\n  switch (object) {\n    case GetCandlesRequest_CandleSource.CANDLE_SOURCE_UNSPECIFIED:\n      return \"CANDLE_SOURCE_UNSPECIFIED\";\n    case GetCandlesRequest_CandleSource.CANDLE_SOURCE_EXCHANGE:\n      return \"CANDLE_SOURCE_EXCHANGE\";\n    case GetCandlesRequest_CandleSource.CANDLE_SOURCE_INCLUDE_WEEKEND:\n      return \"CANDLE_SOURCE_INCLUDE_WEEKEND\";\n    case GetCandlesRequest_CandleSource.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Список свечей. */\nexport interface GetCandlesResponse {\n  /** Массив свечей. */\n  candles: HistoricCandle[];\n}\n\n/** Информация о свече. */\nexport interface HistoricCandle {\n  /** Цена открытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  open:\n    | Quotation\n    | undefined;\n  /** Максимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  high:\n    | Quotation\n    | undefined;\n  /** Минимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  low:\n    | Quotation\n    | undefined;\n  /** Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  close:\n    | Quotation\n    | undefined;\n  /** Объём торгов в лотах. */\n  volume: number;\n  /** Время свечи в часовом поясе UTC. */\n  time:\n    | Date\n    | undefined;\n  /** Признак завершённости свечи. **false** — свеча за текущие интервал ещё сформирована не полностью. */\n  isComplete: boolean;\n  /** Тип источника свечи */\n  candleSourceType: CandleSource;\n}\n\n/** Запрос получения цен последних сделок. */\nexport interface GetLastPricesRequest {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.\n   *\n   * @deprecated\n   */\n  figi: string[];\n  /** Массив идентификаторов инструмента. Принимает значения `figi` или `instrument_uid`. */\n  instrumentId: string[];\n  /** Тип запрашиваемой последней цены. */\n  lastPriceType: LastPriceType;\n  /** Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus). */\n  instrumentStatus?: InstrumentStatus | undefined;\n}\n\n/** Список цен последних сделок. */\nexport interface GetLastPricesResponse {\n  /** Массив цен последних сделок. */\n  lastPrices: LastPrice[];\n}\n\n/** Информация о цене последней сделки. */\nexport interface LastPrice {\n  /** FIGI инструмента. */\n  figi: string;\n  /** Цена последней сделки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  price:\n    | Quotation\n    | undefined;\n  /** Время получения последней цены в часовом поясе UTC по времени биржи. */\n  time:\n    | Date\n    | undefined;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Тип последней цены. */\n  lastPriceType: LastPriceType;\n}\n\n/** Запрос стакана. */\nexport interface GetOrderBookRequest {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.\n   *\n   * @deprecated\n   */\n  figi?:\n    | string\n    | undefined;\n  /** Глубина стакана. */\n  depth: number;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId?: string | undefined;\n}\n\n/** Информация о стакане. */\nexport interface GetOrderBookResponse {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Глубина стакана. */\n  depth: number;\n  /** Множество пар значений на покупку. */\n  bids: Order[];\n  /** Множество пар значений на продажу. */\n  asks: Order[];\n  /** Цена последней сделки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  lastPrice:\n    | Quotation\n    | undefined;\n  /** Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  closePrice:\n    | Quotation\n    | undefined;\n  /** Верхний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  limitUp:\n    | Quotation\n    | undefined;\n  /** Нижний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15). */\n  limitDown:\n    | Quotation\n    | undefined;\n  /** Время получения цены последней сделки. */\n  lastPriceTs:\n    | Date\n    | undefined;\n  /** Время получения цены закрытия. */\n  closePriceTs:\n    | Date\n    | undefined;\n  /** Время формирования стакана на бирже. */\n  orderbookTs:\n    | Date\n    | undefined;\n  /** UID инструмента. */\n  instrumentUid: string;\n}\n\n/** Запрос получения торгового статуса. */\nexport interface GetTradingStatusRequest {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.\n   *\n   * @deprecated\n   */\n  figi?:\n    | string\n    | undefined;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId?: string | undefined;\n}\n\n/** Запрос получения торгового статуса. */\nexport interface GetTradingStatusesRequest {\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId: string[];\n}\n\n/** Информация о торговом статусе. */\nexport interface GetTradingStatusesResponse {\n  /** Массив информации о торговых статусах. */\n  tradingStatuses: GetTradingStatusResponse[];\n}\n\n/** Информация о торговом статусе. */\nexport interface GetTradingStatusResponse {\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Статус торговли инструментом. */\n  tradingStatus: SecurityTradingStatus;\n  /** Признак доступности выставления лимитной заявки по инструменту. */\n  limitOrderAvailableFlag: boolean;\n  /** Признак доступности выставления рыночной заявки по инструменту. */\n  marketOrderAvailableFlag: boolean;\n  /** Признак доступности торгов через API. */\n  apiTradeAvailableFlag: boolean;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Признак доступности завяки по лучшей цене. */\n  bestpriceOrderAvailableFlag: boolean;\n  /** Признак доступности только заявки по лучшей цене. */\n  onlyBestPrice: boolean;\n}\n\n/** Запрос обезличенных сделок за последний час. */\nexport interface GetLastTradesRequest {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.\n   *\n   * @deprecated\n   */\n  figi?:\n    | string\n    | undefined;\n  /** Начало запрашиваемого периода по UTC. */\n  from:\n    | Date\n    | undefined;\n  /** Окончание запрашиваемого периода по UTC. */\n  to:\n    | Date\n    | undefined;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId?:\n    | string\n    | undefined;\n  /** Тип источника сделок. По умолчанию TRADE_SOURCE_ALL - все сделки. */\n  tradeSource: TradeSourceType;\n}\n\n/** Обезличенных сделок за последний час. */\nexport interface GetLastTradesResponse {\n  /** Массив сделок. */\n  trades: Trade[];\n}\n\n/** Запрос активных подписок. Возвращает по одному сообщению на каждый тип активных подписок — `SubscribeLastPriceResponse`, `SubscribeInfoResponse`, `SubscribeTradesResponse`, `SubscribeOrderBookResponse`, `SubscribeCandlesResponse`. */\nexport interface GetMySubscriptions {\n}\n\n/** Запрос цен закрытия торговой сессии по инструментам. */\nexport interface GetClosePricesRequest {\n  /** Массив по инструментам. */\n  instruments: InstrumentClosePriceRequest[];\n  /** Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus). */\n  instrumentStatus?: InstrumentStatus | undefined;\n}\n\n/** Запрос цен закрытия торговой сессии по инструменту. */\nexport interface InstrumentClosePriceRequest {\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId: string;\n}\n\n/** Цены закрытия торговой сессии по инструментам. */\nexport interface GetClosePricesResponse {\n  /** Массив по инструментам. */\n  closePrices: InstrumentClosePriceResponse[];\n}\n\n/** Цена закрытия торговой сессии по инструменту. */\nexport interface InstrumentClosePriceResponse {\n  /** FIGI инструмента. */\n  figi: string;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Цена закрытия торговой сессии. */\n  price:\n    | Quotation\n    | undefined;\n  /** Цена последней сделки с вечерней сессии. Цена публикуется биржей по торговым дням и в нерабочие дни не обновляется. */\n  eveningSessionPrice:\n    | Quotation\n    | undefined;\n  /** Дата совершения торгов. */\n  time: Date | undefined;\n}\n\nexport interface GetTechAnalysisRequest {\n  /** Тип технического индикатора. */\n  indicatorType: GetTechAnalysisRequest_IndicatorType;\n  /** UID инструмента. */\n  instrumentUid: string;\n  /** Начало запрашиваемого периода по UTC. */\n  from:\n    | Date\n    | undefined;\n  /** Окончание запрашиваемого периода по UTC. */\n  to:\n    | Date\n    | undefined;\n  /** Интервал, за который рассчитывается индикатор. */\n  interval: GetTechAnalysisRequest_IndicatorInterval;\n  /** Тип цены, который используется при расчёте индикатора. */\n  typeOfPrice: GetTechAnalysisRequest_TypeOfPrice;\n  /** Торговый период, за который рассчитывается индикатор. */\n  length: number;\n  /** Параметры отклонения. */\n  deviation:\n    | GetTechAnalysisRequest_Deviation\n    | undefined;\n  /** Параметры сглаживания. */\n  smoothing: GetTechAnalysisRequest_Smoothing | undefined;\n}\n\n/** Интервал свечи. */\nexport enum GetTechAnalysisRequest_IndicatorInterval {\n  /** INDICATOR_INTERVAL_UNSPECIFIED - Интервал не определён. */\n  INDICATOR_INTERVAL_UNSPECIFIED = 0,\n  /** INDICATOR_INTERVAL_ONE_MINUTE - 1 минута. */\n  INDICATOR_INTERVAL_ONE_MINUTE = 1,\n  /** INDICATOR_INTERVAL_FIVE_MINUTES - 5 минут. */\n  INDICATOR_INTERVAL_FIVE_MINUTES = 2,\n  /** INDICATOR_INTERVAL_FIFTEEN_MINUTES - 15 минут. */\n  INDICATOR_INTERVAL_FIFTEEN_MINUTES = 3,\n  /** INDICATOR_INTERVAL_ONE_HOUR - 1 час. */\n  INDICATOR_INTERVAL_ONE_HOUR = 4,\n  /** INDICATOR_INTERVAL_ONE_DAY - 1 день. */\n  INDICATOR_INTERVAL_ONE_DAY = 5,\n  /** INDICATOR_INTERVAL_2_MIN - 2 минуты. */\n  INDICATOR_INTERVAL_2_MIN = 6,\n  /** INDICATOR_INTERVAL_3_MIN - 3 минуты. */\n  INDICATOR_INTERVAL_3_MIN = 7,\n  /** INDICATOR_INTERVAL_10_MIN - 10 минут. */\n  INDICATOR_INTERVAL_10_MIN = 8,\n  /** INDICATOR_INTERVAL_30_MIN - 30 минут. */\n  INDICATOR_INTERVAL_30_MIN = 9,\n  /** INDICATOR_INTERVAL_2_HOUR - 2 часа. */\n  INDICATOR_INTERVAL_2_HOUR = 10,\n  /** INDICATOR_INTERVAL_4_HOUR - 4 часа. */\n  INDICATOR_INTERVAL_4_HOUR = 11,\n  /** INDICATOR_INTERVAL_WEEK - Неделя. */\n  INDICATOR_INTERVAL_WEEK = 12,\n  /** INDICATOR_INTERVAL_MONTH - Месяц. */\n  INDICATOR_INTERVAL_MONTH = 13,\n  UNRECOGNIZED = -1,\n}\n\nexport function getTechAnalysisRequest_IndicatorIntervalFromJSON(\n  object: any,\n): GetTechAnalysisRequest_IndicatorInterval {\n  switch (object) {\n    case 0:\n    case \"INDICATOR_INTERVAL_UNSPECIFIED\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_UNSPECIFIED;\n    case 1:\n    case \"INDICATOR_INTERVAL_ONE_MINUTE\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_ONE_MINUTE;\n    case 2:\n    case \"INDICATOR_INTERVAL_FIVE_MINUTES\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_FIVE_MINUTES;\n    case 3:\n    case \"INDICATOR_INTERVAL_FIFTEEN_MINUTES\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_FIFTEEN_MINUTES;\n    case 4:\n    case \"INDICATOR_INTERVAL_ONE_HOUR\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_ONE_HOUR;\n    case 5:\n    case \"INDICATOR_INTERVAL_ONE_DAY\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_ONE_DAY;\n    case 6:\n    case \"INDICATOR_INTERVAL_2_MIN\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_2_MIN;\n    case 7:\n    case \"INDICATOR_INTERVAL_3_MIN\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_3_MIN;\n    case 8:\n    case \"INDICATOR_INTERVAL_10_MIN\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_10_MIN;\n    case 9:\n    case \"INDICATOR_INTERVAL_30_MIN\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_30_MIN;\n    case 10:\n    case \"INDICATOR_INTERVAL_2_HOUR\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_2_HOUR;\n    case 11:\n    case \"INDICATOR_INTERVAL_4_HOUR\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_4_HOUR;\n    case 12:\n    case \"INDICATOR_INTERVAL_WEEK\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_WEEK;\n    case 13:\n    case \"INDICATOR_INTERVAL_MONTH\":\n      return GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_MONTH;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GetTechAnalysisRequest_IndicatorInterval.UNRECOGNIZED;\n  }\n}\n\nexport function getTechAnalysisRequest_IndicatorIntervalToJSON(\n  object: GetTechAnalysisRequest_IndicatorInterval,\n): string {\n  switch (object) {\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_UNSPECIFIED:\n      return \"INDICATOR_INTERVAL_UNSPECIFIED\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_ONE_MINUTE:\n      return \"INDICATOR_INTERVAL_ONE_MINUTE\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_FIVE_MINUTES:\n      return \"INDICATOR_INTERVAL_FIVE_MINUTES\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_FIFTEEN_MINUTES:\n      return \"INDICATOR_INTERVAL_FIFTEEN_MINUTES\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_ONE_HOUR:\n      return \"INDICATOR_INTERVAL_ONE_HOUR\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_ONE_DAY:\n      return \"INDICATOR_INTERVAL_ONE_DAY\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_2_MIN:\n      return \"INDICATOR_INTERVAL_2_MIN\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_3_MIN:\n      return \"INDICATOR_INTERVAL_3_MIN\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_10_MIN:\n      return \"INDICATOR_INTERVAL_10_MIN\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_30_MIN:\n      return \"INDICATOR_INTERVAL_30_MIN\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_2_HOUR:\n      return \"INDICATOR_INTERVAL_2_HOUR\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_4_HOUR:\n      return \"INDICATOR_INTERVAL_4_HOUR\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_WEEK:\n      return \"INDICATOR_INTERVAL_WEEK\";\n    case GetTechAnalysisRequest_IndicatorInterval.INDICATOR_INTERVAL_MONTH:\n      return \"INDICATOR_INTERVAL_MONTH\";\n    case GetTechAnalysisRequest_IndicatorInterval.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport enum GetTechAnalysisRequest_TypeOfPrice {\n  /** TYPE_OF_PRICE_UNSPECIFIED - Не указано. */\n  TYPE_OF_PRICE_UNSPECIFIED = 0,\n  /** TYPE_OF_PRICE_CLOSE - Цена закрытия. */\n  TYPE_OF_PRICE_CLOSE = 1,\n  /** TYPE_OF_PRICE_OPEN - Цена открытия. */\n  TYPE_OF_PRICE_OPEN = 2,\n  /** TYPE_OF_PRICE_HIGH - Максимальное значение за выбранный интервал. */\n  TYPE_OF_PRICE_HIGH = 3,\n  /** TYPE_OF_PRICE_LOW - Минимальное значение за выбранный интервал. */\n  TYPE_OF_PRICE_LOW = 4,\n  /** TYPE_OF_PRICE_AVG - Среднее значение по показателям [ (close + open + high + low) / 4 ]. */\n  TYPE_OF_PRICE_AVG = 5,\n  UNRECOGNIZED = -1,\n}\n\nexport function getTechAnalysisRequest_TypeOfPriceFromJSON(object: any): GetTechAnalysisRequest_TypeOfPrice {\n  switch (object) {\n    case 0:\n    case \"TYPE_OF_PRICE_UNSPECIFIED\":\n      return GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_UNSPECIFIED;\n    case 1:\n    case \"TYPE_OF_PRICE_CLOSE\":\n      return GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_CLOSE;\n    case 2:\n    case \"TYPE_OF_PRICE_OPEN\":\n      return GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_OPEN;\n    case 3:\n    case \"TYPE_OF_PRICE_HIGH\":\n      return GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_HIGH;\n    case 4:\n    case \"TYPE_OF_PRICE_LOW\":\n      return GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_LOW;\n    case 5:\n    case \"TYPE_OF_PRICE_AVG\":\n      return GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_AVG;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GetTechAnalysisRequest_TypeOfPrice.UNRECOGNIZED;\n  }\n}\n\nexport function getTechAnalysisRequest_TypeOfPriceToJSON(object: GetTechAnalysisRequest_TypeOfPrice): string {\n  switch (object) {\n    case GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_UNSPECIFIED:\n      return \"TYPE_OF_PRICE_UNSPECIFIED\";\n    case GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_CLOSE:\n      return \"TYPE_OF_PRICE_CLOSE\";\n    case GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_OPEN:\n      return \"TYPE_OF_PRICE_OPEN\";\n    case GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_HIGH:\n      return \"TYPE_OF_PRICE_HIGH\";\n    case GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_LOW:\n      return \"TYPE_OF_PRICE_LOW\";\n    case GetTechAnalysisRequest_TypeOfPrice.TYPE_OF_PRICE_AVG:\n      return \"TYPE_OF_PRICE_AVG\";\n    case GetTechAnalysisRequest_TypeOfPrice.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport enum GetTechAnalysisRequest_IndicatorType {\n  /** INDICATOR_TYPE_UNSPECIFIED - Не определён. */\n  INDICATOR_TYPE_UNSPECIFIED = 0,\n  /** INDICATOR_TYPE_BB - Bollinger Bands — линия Боллинжера. */\n  INDICATOR_TYPE_BB = 1,\n  /** INDICATOR_TYPE_EMA - Exponential Moving Average — EMA, экспоненциальная скользящая средняя. */\n  INDICATOR_TYPE_EMA = 2,\n  /** INDICATOR_TYPE_RSI - Relative Strength Index — индекс относительной силы. */\n  INDICATOR_TYPE_RSI = 3,\n  /** INDICATOR_TYPE_MACD - Moving Average Convergence/Divergence — схождение/расхождение скользящих средних. */\n  INDICATOR_TYPE_MACD = 4,\n  /** INDICATOR_TYPE_SMA - Simple Moving Average — простое скользящее среднее. */\n  INDICATOR_TYPE_SMA = 5,\n  UNRECOGNIZED = -1,\n}\n\nexport function getTechAnalysisRequest_IndicatorTypeFromJSON(object: any): GetTechAnalysisRequest_IndicatorType {\n  switch (object) {\n    case 0:\n    case \"INDICATOR_TYPE_UNSPECIFIED\":\n      return GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_UNSPECIFIED;\n    case 1:\n    case \"INDICATOR_TYPE_BB\":\n      return GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_BB;\n    case 2:\n    case \"INDICATOR_TYPE_EMA\":\n      return GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_EMA;\n    case 3:\n    case \"INDICATOR_TYPE_RSI\":\n      return GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_RSI;\n    case 4:\n    case \"INDICATOR_TYPE_MACD\":\n      return GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_MACD;\n    case 5:\n    case \"INDICATOR_TYPE_SMA\":\n      return GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_SMA;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GetTechAnalysisRequest_IndicatorType.UNRECOGNIZED;\n  }\n}\n\nexport function getTechAnalysisRequest_IndicatorTypeToJSON(object: GetTechAnalysisRequest_IndicatorType): string {\n  switch (object) {\n    case GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_UNSPECIFIED:\n      return \"INDICATOR_TYPE_UNSPECIFIED\";\n    case GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_BB:\n      return \"INDICATOR_TYPE_BB\";\n    case GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_EMA:\n      return \"INDICATOR_TYPE_EMA\";\n    case GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_RSI:\n      return \"INDICATOR_TYPE_RSI\";\n    case GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_MACD:\n      return \"INDICATOR_TYPE_MACD\";\n    case GetTechAnalysisRequest_IndicatorType.INDICATOR_TYPE_SMA:\n      return \"INDICATOR_TYPE_SMA\";\n    case GetTechAnalysisRequest_IndicatorType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport interface GetTechAnalysisRequest_Smoothing {\n  /** Короткий период сглаживания для первой экспоненциальной скользящей средней (EMA). */\n  fastLength: number;\n  /** Длинный период сглаживания для второй экспоненциальной скользящей средней (EMA). */\n  slowLength: number;\n  /** Период сглаживания для третьей экспоненциальной скользящей средней (EMA) */\n  signalSmoothing: number;\n}\n\nexport interface GetTechAnalysisRequest_Deviation {\n  /** Количество стандартных отклонений, на которые отступают верхняя и нижняя границы. */\n  deviationMultiplier: Quotation | undefined;\n}\n\nexport interface GetTechAnalysisResponse {\n  /** Массив значений результатов технического анализа. */\n  technicalIndicators: GetTechAnalysisResponse_TechAnalysisItem[];\n}\n\nexport interface GetTechAnalysisResponse_TechAnalysisItem {\n  /** Временная метка по UTC, для которой были рассчитаны значения индикатора. */\n  timestamp:\n    | Date\n    | undefined;\n  /** Значение простого скользящего среднего (средней линии). */\n  middleBand?:\n    | Quotation\n    | undefined;\n  /** Значение верхней линии Боллинджера. */\n  upperBand?:\n    | Quotation\n    | undefined;\n  /** Значение нижней линии Боллинджера. */\n  lowerBand?:\n    | Quotation\n    | undefined;\n  /** Значение сигнальной линии. */\n  signal?:\n    | Quotation\n    | undefined;\n  /** Значение линии MACD. */\n  macd?: Quotation | undefined;\n}\n\nfunction createBaseMarketDataRequest(): MarketDataRequest {\n  return {\n    subscribeCandlesRequest: undefined,\n    subscribeOrderBookRequest: undefined,\n    subscribeTradesRequest: undefined,\n    subscribeInfoRequest: undefined,\n    subscribeLastPriceRequest: undefined,\n    getMySubscriptions: undefined,\n    ping: undefined,\n    pingSettings: undefined,\n  };\n}\n\nexport const MarketDataRequest: MessageFns<MarketDataRequest> = {\n  encode(message: MarketDataRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscribeCandlesRequest !== undefined) {\n      SubscribeCandlesRequest.encode(message.subscribeCandlesRequest, writer.uint32(10).fork()).join();\n    }\n    if (message.subscribeOrderBookRequest !== undefined) {\n      SubscribeOrderBookRequest.encode(message.subscribeOrderBookRequest, writer.uint32(18).fork()).join();\n    }\n    if (message.subscribeTradesRequest !== undefined) {\n      SubscribeTradesRequest.encode(message.subscribeTradesRequest, writer.uint32(26).fork()).join();\n    }\n    if (message.subscribeInfoRequest !== undefined) {\n      SubscribeInfoRequest.encode(message.subscribeInfoRequest, writer.uint32(34).fork()).join();\n    }\n    if (message.subscribeLastPriceRequest !== undefined) {\n      SubscribeLastPriceRequest.encode(message.subscribeLastPriceRequest, writer.uint32(42).fork()).join();\n    }\n    if (message.getMySubscriptions !== undefined) {\n      GetMySubscriptions.encode(message.getMySubscriptions, writer.uint32(50).fork()).join();\n    }\n    if (message.ping !== undefined) {\n      PingRequest.encode(message.ping, writer.uint32(58).fork()).join();\n    }\n    if (message.pingSettings !== undefined) {\n      PingDelaySettings.encode(message.pingSettings, writer.uint32(122).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MarketDataRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMarketDataRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subscribeCandlesRequest = SubscribeCandlesRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subscribeOrderBookRequest = SubscribeOrderBookRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subscribeTradesRequest = SubscribeTradesRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subscribeInfoRequest = SubscribeInfoRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subscribeLastPriceRequest = SubscribeLastPriceRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.getMySubscriptions = GetMySubscriptions.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.ping = PingRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.pingSettings = PingDelaySettings.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MarketDataRequest {\n    return {\n      subscribeCandlesRequest: isSet(object.subscribeCandlesRequest)\n        ? SubscribeCandlesRequest.fromJSON(object.subscribeCandlesRequest)\n        : undefined,\n      subscribeOrderBookRequest: isSet(object.subscribeOrderBookRequest)\n        ? SubscribeOrderBookRequest.fromJSON(object.subscribeOrderBookRequest)\n        : undefined,\n      subscribeTradesRequest: isSet(object.subscribeTradesRequest)\n        ? SubscribeTradesRequest.fromJSON(object.subscribeTradesRequest)\n        : undefined,\n      subscribeInfoRequest: isSet(object.subscribeInfoRequest)\n        ? SubscribeInfoRequest.fromJSON(object.subscribeInfoRequest)\n        : undefined,\n      subscribeLastPriceRequest: isSet(object.subscribeLastPriceRequest)\n        ? SubscribeLastPriceRequest.fromJSON(object.subscribeLastPriceRequest)\n        : undefined,\n      getMySubscriptions: isSet(object.getMySubscriptions)\n        ? GetMySubscriptions.fromJSON(object.getMySubscriptions)\n        : undefined,\n      ping: isSet(object.ping) ? PingRequest.fromJSON(object.ping) : undefined,\n      pingSettings: isSet(object.pingSettings) ? PingDelaySettings.fromJSON(object.pingSettings) : undefined,\n    };\n  },\n\n  toJSON(message: MarketDataRequest): unknown {\n    const obj: any = {};\n    if (message.subscribeCandlesRequest !== undefined) {\n      obj.subscribeCandlesRequest = SubscribeCandlesRequest.toJSON(message.subscribeCandlesRequest);\n    }\n    if (message.subscribeOrderBookRequest !== undefined) {\n      obj.subscribeOrderBookRequest = SubscribeOrderBookRequest.toJSON(message.subscribeOrderBookRequest);\n    }\n    if (message.subscribeTradesRequest !== undefined) {\n      obj.subscribeTradesRequest = SubscribeTradesRequest.toJSON(message.subscribeTradesRequest);\n    }\n    if (message.subscribeInfoRequest !== undefined) {\n      obj.subscribeInfoRequest = SubscribeInfoRequest.toJSON(message.subscribeInfoRequest);\n    }\n    if (message.subscribeLastPriceRequest !== undefined) {\n      obj.subscribeLastPriceRequest = SubscribeLastPriceRequest.toJSON(message.subscribeLastPriceRequest);\n    }\n    if (message.getMySubscriptions !== undefined) {\n      obj.getMySubscriptions = GetMySubscriptions.toJSON(message.getMySubscriptions);\n    }\n    if (message.ping !== undefined) {\n      obj.ping = PingRequest.toJSON(message.ping);\n    }\n    if (message.pingSettings !== undefined) {\n      obj.pingSettings = PingDelaySettings.toJSON(message.pingSettings);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MarketDataRequest>): MarketDataRequest {\n    return MarketDataRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MarketDataRequest>): MarketDataRequest {\n    const message = createBaseMarketDataRequest();\n    message.subscribeCandlesRequest =\n      (object.subscribeCandlesRequest !== undefined && object.subscribeCandlesRequest !== null)\n        ? SubscribeCandlesRequest.fromPartial(object.subscribeCandlesRequest)\n        : undefined;\n    message.subscribeOrderBookRequest =\n      (object.subscribeOrderBookRequest !== undefined && object.subscribeOrderBookRequest !== null)\n        ? SubscribeOrderBookRequest.fromPartial(object.subscribeOrderBookRequest)\n        : undefined;\n    message.subscribeTradesRequest =\n      (object.subscribeTradesRequest !== undefined && object.subscribeTradesRequest !== null)\n        ? SubscribeTradesRequest.fromPartial(object.subscribeTradesRequest)\n        : undefined;\n    message.subscribeInfoRequest = (object.subscribeInfoRequest !== undefined && object.subscribeInfoRequest !== null)\n      ? SubscribeInfoRequest.fromPartial(object.subscribeInfoRequest)\n      : undefined;\n    message.subscribeLastPriceRequest =\n      (object.subscribeLastPriceRequest !== undefined && object.subscribeLastPriceRequest !== null)\n        ? SubscribeLastPriceRequest.fromPartial(object.subscribeLastPriceRequest)\n        : undefined;\n    message.getMySubscriptions = (object.getMySubscriptions !== undefined && object.getMySubscriptions !== null)\n      ? GetMySubscriptions.fromPartial(object.getMySubscriptions)\n      : undefined;\n    message.ping = (object.ping !== undefined && object.ping !== null)\n      ? PingRequest.fromPartial(object.ping)\n      : undefined;\n    message.pingSettings = (object.pingSettings !== undefined && object.pingSettings !== null)\n      ? PingDelaySettings.fromPartial(object.pingSettings)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMarketDataServerSideStreamRequest(): MarketDataServerSideStreamRequest {\n  return {\n    subscribeCandlesRequest: undefined,\n    subscribeOrderBookRequest: undefined,\n    subscribeTradesRequest: undefined,\n    subscribeInfoRequest: undefined,\n    subscribeLastPriceRequest: undefined,\n    pingSettings: undefined,\n  };\n}\n\nexport const MarketDataServerSideStreamRequest: MessageFns<MarketDataServerSideStreamRequest> = {\n  encode(message: MarketDataServerSideStreamRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscribeCandlesRequest !== undefined) {\n      SubscribeCandlesRequest.encode(message.subscribeCandlesRequest, writer.uint32(10).fork()).join();\n    }\n    if (message.subscribeOrderBookRequest !== undefined) {\n      SubscribeOrderBookRequest.encode(message.subscribeOrderBookRequest, writer.uint32(18).fork()).join();\n    }\n    if (message.subscribeTradesRequest !== undefined) {\n      SubscribeTradesRequest.encode(message.subscribeTradesRequest, writer.uint32(26).fork()).join();\n    }\n    if (message.subscribeInfoRequest !== undefined) {\n      SubscribeInfoRequest.encode(message.subscribeInfoRequest, writer.uint32(34).fork()).join();\n    }\n    if (message.subscribeLastPriceRequest !== undefined) {\n      SubscribeLastPriceRequest.encode(message.subscribeLastPriceRequest, writer.uint32(42).fork()).join();\n    }\n    if (message.pingSettings !== undefined) {\n      PingDelaySettings.encode(message.pingSettings, writer.uint32(122).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MarketDataServerSideStreamRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMarketDataServerSideStreamRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subscribeCandlesRequest = SubscribeCandlesRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subscribeOrderBookRequest = SubscribeOrderBookRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subscribeTradesRequest = SubscribeTradesRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subscribeInfoRequest = SubscribeInfoRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subscribeLastPriceRequest = SubscribeLastPriceRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.pingSettings = PingDelaySettings.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MarketDataServerSideStreamRequest {\n    return {\n      subscribeCandlesRequest: isSet(object.subscribeCandlesRequest)\n        ? SubscribeCandlesRequest.fromJSON(object.subscribeCandlesRequest)\n        : undefined,\n      subscribeOrderBookRequest: isSet(object.subscribeOrderBookRequest)\n        ? SubscribeOrderBookRequest.fromJSON(object.subscribeOrderBookRequest)\n        : undefined,\n      subscribeTradesRequest: isSet(object.subscribeTradesRequest)\n        ? SubscribeTradesRequest.fromJSON(object.subscribeTradesRequest)\n        : undefined,\n      subscribeInfoRequest: isSet(object.subscribeInfoRequest)\n        ? SubscribeInfoRequest.fromJSON(object.subscribeInfoRequest)\n        : undefined,\n      subscribeLastPriceRequest: isSet(object.subscribeLastPriceRequest)\n        ? SubscribeLastPriceRequest.fromJSON(object.subscribeLastPriceRequest)\n        : undefined,\n      pingSettings: isSet(object.pingSettings) ? PingDelaySettings.fromJSON(object.pingSettings) : undefined,\n    };\n  },\n\n  toJSON(message: MarketDataServerSideStreamRequest): unknown {\n    const obj: any = {};\n    if (message.subscribeCandlesRequest !== undefined) {\n      obj.subscribeCandlesRequest = SubscribeCandlesRequest.toJSON(message.subscribeCandlesRequest);\n    }\n    if (message.subscribeOrderBookRequest !== undefined) {\n      obj.subscribeOrderBookRequest = SubscribeOrderBookRequest.toJSON(message.subscribeOrderBookRequest);\n    }\n    if (message.subscribeTradesRequest !== undefined) {\n      obj.subscribeTradesRequest = SubscribeTradesRequest.toJSON(message.subscribeTradesRequest);\n    }\n    if (message.subscribeInfoRequest !== undefined) {\n      obj.subscribeInfoRequest = SubscribeInfoRequest.toJSON(message.subscribeInfoRequest);\n    }\n    if (message.subscribeLastPriceRequest !== undefined) {\n      obj.subscribeLastPriceRequest = SubscribeLastPriceRequest.toJSON(message.subscribeLastPriceRequest);\n    }\n    if (message.pingSettings !== undefined) {\n      obj.pingSettings = PingDelaySettings.toJSON(message.pingSettings);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MarketDataServerSideStreamRequest>): MarketDataServerSideStreamRequest {\n    return MarketDataServerSideStreamRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MarketDataServerSideStreamRequest>): MarketDataServerSideStreamRequest {\n    const message = createBaseMarketDataServerSideStreamRequest();\n    message.subscribeCandlesRequest =\n      (object.subscribeCandlesRequest !== undefined && object.subscribeCandlesRequest !== null)\n        ? SubscribeCandlesRequest.fromPartial(object.subscribeCandlesRequest)\n        : undefined;\n    message.subscribeOrderBookRequest =\n      (object.subscribeOrderBookRequest !== undefined && object.subscribeOrderBookRequest !== null)\n        ? SubscribeOrderBookRequest.fromPartial(object.subscribeOrderBookRequest)\n        : undefined;\n    message.subscribeTradesRequest =\n      (object.subscribeTradesRequest !== undefined && object.subscribeTradesRequest !== null)\n        ? SubscribeTradesRequest.fromPartial(object.subscribeTradesRequest)\n        : undefined;\n    message.subscribeInfoRequest = (object.subscribeInfoRequest !== undefined && object.subscribeInfoRequest !== null)\n      ? SubscribeInfoRequest.fromPartial(object.subscribeInfoRequest)\n      : undefined;\n    message.subscribeLastPriceRequest =\n      (object.subscribeLastPriceRequest !== undefined && object.subscribeLastPriceRequest !== null)\n        ? SubscribeLastPriceRequest.fromPartial(object.subscribeLastPriceRequest)\n        : undefined;\n    message.pingSettings = (object.pingSettings !== undefined && object.pingSettings !== null)\n      ? PingDelaySettings.fromPartial(object.pingSettings)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMarketDataResponse(): MarketDataResponse {\n  return {\n    subscribeCandlesResponse: undefined,\n    subscribeOrderBookResponse: undefined,\n    subscribeTradesResponse: undefined,\n    subscribeInfoResponse: undefined,\n    candle: undefined,\n    trade: undefined,\n    orderbook: undefined,\n    tradingStatus: undefined,\n    ping: undefined,\n    subscribeLastPriceResponse: undefined,\n    lastPrice: undefined,\n  };\n}\n\nexport const MarketDataResponse: MessageFns<MarketDataResponse> = {\n  encode(message: MarketDataResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscribeCandlesResponse !== undefined) {\n      SubscribeCandlesResponse.encode(message.subscribeCandlesResponse, writer.uint32(10).fork()).join();\n    }\n    if (message.subscribeOrderBookResponse !== undefined) {\n      SubscribeOrderBookResponse.encode(message.subscribeOrderBookResponse, writer.uint32(18).fork()).join();\n    }\n    if (message.subscribeTradesResponse !== undefined) {\n      SubscribeTradesResponse.encode(message.subscribeTradesResponse, writer.uint32(26).fork()).join();\n    }\n    if (message.subscribeInfoResponse !== undefined) {\n      SubscribeInfoResponse.encode(message.subscribeInfoResponse, writer.uint32(34).fork()).join();\n    }\n    if (message.candle !== undefined) {\n      Candle.encode(message.candle, writer.uint32(42).fork()).join();\n    }\n    if (message.trade !== undefined) {\n      Trade.encode(message.trade, writer.uint32(50).fork()).join();\n    }\n    if (message.orderbook !== undefined) {\n      OrderBook.encode(message.orderbook, writer.uint32(58).fork()).join();\n    }\n    if (message.tradingStatus !== undefined) {\n      TradingStatus.encode(message.tradingStatus, writer.uint32(66).fork()).join();\n    }\n    if (message.ping !== undefined) {\n      Ping.encode(message.ping, writer.uint32(74).fork()).join();\n    }\n    if (message.subscribeLastPriceResponse !== undefined) {\n      SubscribeLastPriceResponse.encode(message.subscribeLastPriceResponse, writer.uint32(82).fork()).join();\n    }\n    if (message.lastPrice !== undefined) {\n      LastPrice.encode(message.lastPrice, writer.uint32(90).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MarketDataResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMarketDataResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subscribeCandlesResponse = SubscribeCandlesResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subscribeOrderBookResponse = SubscribeOrderBookResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subscribeTradesResponse = SubscribeTradesResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subscribeInfoResponse = SubscribeInfoResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.candle = Candle.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.trade = Trade.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.orderbook = OrderBook.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.tradingStatus = TradingStatus.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.ping = Ping.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.subscribeLastPriceResponse = SubscribeLastPriceResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.lastPrice = LastPrice.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MarketDataResponse {\n    return {\n      subscribeCandlesResponse: isSet(object.subscribeCandlesResponse)\n        ? SubscribeCandlesResponse.fromJSON(object.subscribeCandlesResponse)\n        : undefined,\n      subscribeOrderBookResponse: isSet(object.subscribeOrderBookResponse)\n        ? SubscribeOrderBookResponse.fromJSON(object.subscribeOrderBookResponse)\n        : undefined,\n      subscribeTradesResponse: isSet(object.subscribeTradesResponse)\n        ? SubscribeTradesResponse.fromJSON(object.subscribeTradesResponse)\n        : undefined,\n      subscribeInfoResponse: isSet(object.subscribeInfoResponse)\n        ? SubscribeInfoResponse.fromJSON(object.subscribeInfoResponse)\n        : undefined,\n      candle: isSet(object.candle) ? Candle.fromJSON(object.candle) : undefined,\n      trade: isSet(object.trade) ? Trade.fromJSON(object.trade) : undefined,\n      orderbook: isSet(object.orderbook) ? OrderBook.fromJSON(object.orderbook) : undefined,\n      tradingStatus: isSet(object.tradingStatus) ? TradingStatus.fromJSON(object.tradingStatus) : undefined,\n      ping: isSet(object.ping) ? Ping.fromJSON(object.ping) : undefined,\n      subscribeLastPriceResponse: isSet(object.subscribeLastPriceResponse)\n        ? SubscribeLastPriceResponse.fromJSON(object.subscribeLastPriceResponse)\n        : undefined,\n      lastPrice: isSet(object.lastPrice) ? LastPrice.fromJSON(object.lastPrice) : undefined,\n    };\n  },\n\n  toJSON(message: MarketDataResponse): unknown {\n    const obj: any = {};\n    if (message.subscribeCandlesResponse !== undefined) {\n      obj.subscribeCandlesResponse = SubscribeCandlesResponse.toJSON(message.subscribeCandlesResponse);\n    }\n    if (message.subscribeOrderBookResponse !== undefined) {\n      obj.subscribeOrderBookResponse = SubscribeOrderBookResponse.toJSON(message.subscribeOrderBookResponse);\n    }\n    if (message.subscribeTradesResponse !== undefined) {\n      obj.subscribeTradesResponse = SubscribeTradesResponse.toJSON(message.subscribeTradesResponse);\n    }\n    if (message.subscribeInfoResponse !== undefined) {\n      obj.subscribeInfoResponse = SubscribeInfoResponse.toJSON(message.subscribeInfoResponse);\n    }\n    if (message.candle !== undefined) {\n      obj.candle = Candle.toJSON(message.candle);\n    }\n    if (message.trade !== undefined) {\n      obj.trade = Trade.toJSON(message.trade);\n    }\n    if (message.orderbook !== undefined) {\n      obj.orderbook = OrderBook.toJSON(message.orderbook);\n    }\n    if (message.tradingStatus !== undefined) {\n      obj.tradingStatus = TradingStatus.toJSON(message.tradingStatus);\n    }\n    if (message.ping !== undefined) {\n      obj.ping = Ping.toJSON(message.ping);\n    }\n    if (message.subscribeLastPriceResponse !== undefined) {\n      obj.subscribeLastPriceResponse = SubscribeLastPriceResponse.toJSON(message.subscribeLastPriceResponse);\n    }\n    if (message.lastPrice !== undefined) {\n      obj.lastPrice = LastPrice.toJSON(message.lastPrice);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MarketDataResponse>): MarketDataResponse {\n    return MarketDataResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MarketDataResponse>): MarketDataResponse {\n    const message = createBaseMarketDataResponse();\n    message.subscribeCandlesResponse =\n      (object.subscribeCandlesResponse !== undefined && object.subscribeCandlesResponse !== null)\n        ? SubscribeCandlesResponse.fromPartial(object.subscribeCandlesResponse)\n        : undefined;\n    message.subscribeOrderBookResponse =\n      (object.subscribeOrderBookResponse !== undefined && object.subscribeOrderBookResponse !== null)\n        ? SubscribeOrderBookResponse.fromPartial(object.subscribeOrderBookResponse)\n        : undefined;\n    message.subscribeTradesResponse =\n      (object.subscribeTradesResponse !== undefined && object.subscribeTradesResponse !== null)\n        ? SubscribeTradesResponse.fromPartial(object.subscribeTradesResponse)\n        : undefined;\n    message.subscribeInfoResponse =\n      (object.subscribeInfoResponse !== undefined && object.subscribeInfoResponse !== null)\n        ? SubscribeInfoResponse.fromPartial(object.subscribeInfoResponse)\n        : undefined;\n    message.candle = (object.candle !== undefined && object.candle !== null)\n      ? Candle.fromPartial(object.candle)\n      : undefined;\n    message.trade = (object.trade !== undefined && object.trade !== null) ? Trade.fromPartial(object.trade) : undefined;\n    message.orderbook = (object.orderbook !== undefined && object.orderbook !== null)\n      ? OrderBook.fromPartial(object.orderbook)\n      : undefined;\n    message.tradingStatus = (object.tradingStatus !== undefined && object.tradingStatus !== null)\n      ? TradingStatus.fromPartial(object.tradingStatus)\n      : undefined;\n    message.ping = (object.ping !== undefined && object.ping !== null) ? Ping.fromPartial(object.ping) : undefined;\n    message.subscribeLastPriceResponse =\n      (object.subscribeLastPriceResponse !== undefined && object.subscribeLastPriceResponse !== null)\n        ? SubscribeLastPriceResponse.fromPartial(object.subscribeLastPriceResponse)\n        : undefined;\n    message.lastPrice = (object.lastPrice !== undefined && object.lastPrice !== null)\n      ? LastPrice.fromPartial(object.lastPrice)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSubscribeCandlesRequest(): SubscribeCandlesRequest {\n  return { subscriptionAction: 0, instruments: [], waitingClose: false, candleSourceType: undefined };\n}\n\nexport const SubscribeCandlesRequest: MessageFns<SubscribeCandlesRequest> = {\n  encode(message: SubscribeCandlesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscriptionAction !== 0) {\n      writer.uint32(8).int32(message.subscriptionAction);\n    }\n    for (const v of message.instruments) {\n      CandleInstrument.encode(v!, writer.uint32(18).fork()).join();\n    }\n    if (message.waitingClose !== false) {\n      writer.uint32(24).bool(message.waitingClose);\n    }\n    if (message.candleSourceType !== undefined) {\n      writer.uint32(72).int32(message.candleSourceType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeCandlesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeCandlesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.subscriptionAction = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instruments.push(CandleInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.waitingClose = reader.bool();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.candleSourceType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeCandlesRequest {\n    return {\n      subscriptionAction: isSet(object.subscriptionAction) ? subscriptionActionFromJSON(object.subscriptionAction) : 0,\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => CandleInstrument.fromJSON(e))\n        : [],\n      waitingClose: isSet(object.waitingClose) ? globalThis.Boolean(object.waitingClose) : false,\n      candleSourceType: isSet(object.candleSourceType)\n        ? getCandlesRequest_CandleSourceFromJSON(object.candleSourceType)\n        : undefined,\n    };\n  },\n\n  toJSON(message: SubscribeCandlesRequest): unknown {\n    const obj: any = {};\n    if (message.subscriptionAction !== 0) {\n      obj.subscriptionAction = subscriptionActionToJSON(message.subscriptionAction);\n    }\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => CandleInstrument.toJSON(e));\n    }\n    if (message.waitingClose !== false) {\n      obj.waitingClose = message.waitingClose;\n    }\n    if (message.candleSourceType !== undefined) {\n      obj.candleSourceType = getCandlesRequest_CandleSourceToJSON(message.candleSourceType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeCandlesRequest>): SubscribeCandlesRequest {\n    return SubscribeCandlesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeCandlesRequest>): SubscribeCandlesRequest {\n    const message = createBaseSubscribeCandlesRequest();\n    message.subscriptionAction = object.subscriptionAction ?? 0;\n    message.instruments = object.instruments?.map((e) => CandleInstrument.fromPartial(e)) || [];\n    message.waitingClose = object.waitingClose ?? false;\n    message.candleSourceType = object.candleSourceType ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseCandleInstrument(): CandleInstrument {\n  return { figi: \"\", interval: 0, instrumentId: \"\" };\n}\n\nexport const CandleInstrument: MessageFns<CandleInstrument> = {\n  encode(message: CandleInstrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.interval !== 0) {\n      writer.uint32(16).int32(message.interval);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(26).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CandleInstrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCandleInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.interval = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CandleInstrument {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      interval: isSet(object.interval) ? subscriptionIntervalFromJSON(object.interval) : 0,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: CandleInstrument): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.interval !== 0) {\n      obj.interval = subscriptionIntervalToJSON(message.interval);\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CandleInstrument>): CandleInstrument {\n    return CandleInstrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CandleInstrument>): CandleInstrument {\n    const message = createBaseCandleInstrument();\n    message.figi = object.figi ?? \"\";\n    message.interval = object.interval ?? 0;\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseSubscribeCandlesResponse(): SubscribeCandlesResponse {\n  return { trackingId: \"\", candlesSubscriptions: [] };\n}\n\nexport const SubscribeCandlesResponse: MessageFns<SubscribeCandlesResponse> = {\n  encode(message: SubscribeCandlesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.trackingId !== \"\") {\n      writer.uint32(10).string(message.trackingId);\n    }\n    for (const v of message.candlesSubscriptions) {\n      CandleSubscription.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeCandlesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeCandlesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.candlesSubscriptions.push(CandleSubscription.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeCandlesResponse {\n    return {\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      candlesSubscriptions: globalThis.Array.isArray(object?.candlesSubscriptions)\n        ? object.candlesSubscriptions.map((e: any) => CandleSubscription.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: SubscribeCandlesResponse): unknown {\n    const obj: any = {};\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.candlesSubscriptions?.length) {\n      obj.candlesSubscriptions = message.candlesSubscriptions.map((e) => CandleSubscription.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeCandlesResponse>): SubscribeCandlesResponse {\n    return SubscribeCandlesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeCandlesResponse>): SubscribeCandlesResponse {\n    const message = createBaseSubscribeCandlesResponse();\n    message.trackingId = object.trackingId ?? \"\";\n    message.candlesSubscriptions = object.candlesSubscriptions?.map((e) => CandleSubscription.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseCandleSubscription(): CandleSubscription {\n  return {\n    figi: \"\",\n    interval: 0,\n    subscriptionStatus: 0,\n    instrumentUid: \"\",\n    waitingClose: false,\n    streamId: \"\",\n    subscriptionId: \"\",\n    candleSourceType: undefined,\n  };\n}\n\nexport const CandleSubscription: MessageFns<CandleSubscription> = {\n  encode(message: CandleSubscription, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.interval !== 0) {\n      writer.uint32(16).int32(message.interval);\n    }\n    if (message.subscriptionStatus !== 0) {\n      writer.uint32(24).int32(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(34).string(message.instrumentUid);\n    }\n    if (message.waitingClose !== false) {\n      writer.uint32(40).bool(message.waitingClose);\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(50).string(message.streamId);\n    }\n    if (message.subscriptionId !== \"\") {\n      writer.uint32(58).string(message.subscriptionId);\n    }\n    if (message.candleSourceType !== undefined) {\n      writer.uint32(72).int32(message.candleSourceType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CandleSubscription {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCandleSubscription();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.interval = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.subscriptionStatus = reader.int32() as any;\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.waitingClose = reader.bool();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.subscriptionId = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.candleSourceType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CandleSubscription {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      interval: isSet(object.interval) ? subscriptionIntervalFromJSON(object.interval) : 0,\n      subscriptionStatus: isSet(object.subscriptionStatus) ? subscriptionStatusFromJSON(object.subscriptionStatus) : 0,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      waitingClose: isSet(object.waitingClose) ? globalThis.Boolean(object.waitingClose) : false,\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n      subscriptionId: isSet(object.subscriptionId) ? globalThis.String(object.subscriptionId) : \"\",\n      candleSourceType: isSet(object.candleSourceType)\n        ? getCandlesRequest_CandleSourceFromJSON(object.candleSourceType)\n        : undefined,\n    };\n  },\n\n  toJSON(message: CandleSubscription): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.interval !== 0) {\n      obj.interval = subscriptionIntervalToJSON(message.interval);\n    }\n    if (message.subscriptionStatus !== 0) {\n      obj.subscriptionStatus = subscriptionStatusToJSON(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.waitingClose !== false) {\n      obj.waitingClose = message.waitingClose;\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    if (message.subscriptionId !== \"\") {\n      obj.subscriptionId = message.subscriptionId;\n    }\n    if (message.candleSourceType !== undefined) {\n      obj.candleSourceType = getCandlesRequest_CandleSourceToJSON(message.candleSourceType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CandleSubscription>): CandleSubscription {\n    return CandleSubscription.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CandleSubscription>): CandleSubscription {\n    const message = createBaseCandleSubscription();\n    message.figi = object.figi ?? \"\";\n    message.interval = object.interval ?? 0;\n    message.subscriptionStatus = object.subscriptionStatus ?? 0;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.waitingClose = object.waitingClose ?? false;\n    message.streamId = object.streamId ?? \"\";\n    message.subscriptionId = object.subscriptionId ?? \"\";\n    message.candleSourceType = object.candleSourceType ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseSubscribeOrderBookRequest(): SubscribeOrderBookRequest {\n  return { subscriptionAction: 0, instruments: [] };\n}\n\nexport const SubscribeOrderBookRequest: MessageFns<SubscribeOrderBookRequest> = {\n  encode(message: SubscribeOrderBookRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscriptionAction !== 0) {\n      writer.uint32(8).int32(message.subscriptionAction);\n    }\n    for (const v of message.instruments) {\n      OrderBookInstrument.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeOrderBookRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeOrderBookRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.subscriptionAction = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instruments.push(OrderBookInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeOrderBookRequest {\n    return {\n      subscriptionAction: isSet(object.subscriptionAction) ? subscriptionActionFromJSON(object.subscriptionAction) : 0,\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => OrderBookInstrument.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: SubscribeOrderBookRequest): unknown {\n    const obj: any = {};\n    if (message.subscriptionAction !== 0) {\n      obj.subscriptionAction = subscriptionActionToJSON(message.subscriptionAction);\n    }\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => OrderBookInstrument.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeOrderBookRequest>): SubscribeOrderBookRequest {\n    return SubscribeOrderBookRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeOrderBookRequest>): SubscribeOrderBookRequest {\n    const message = createBaseSubscribeOrderBookRequest();\n    message.subscriptionAction = object.subscriptionAction ?? 0;\n    message.instruments = object.instruments?.map((e) => OrderBookInstrument.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseOrderBookInstrument(): OrderBookInstrument {\n  return { figi: \"\", depth: 0, instrumentId: \"\", orderBookType: 0 };\n}\n\nexport const OrderBookInstrument: MessageFns<OrderBookInstrument> = {\n  encode(message: OrderBookInstrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.depth !== 0) {\n      writer.uint32(16).int32(message.depth);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(26).string(message.instrumentId);\n    }\n    if (message.orderBookType !== 0) {\n      writer.uint32(32).int32(message.orderBookType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderBookInstrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderBookInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.depth = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.orderBookType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderBookInstrument {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      depth: isSet(object.depth) ? globalThis.Number(object.depth) : 0,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      orderBookType: isSet(object.orderBookType) ? orderBookTypeFromJSON(object.orderBookType) : 0,\n    };\n  },\n\n  toJSON(message: OrderBookInstrument): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.depth !== 0) {\n      obj.depth = Math.round(message.depth);\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.orderBookType !== 0) {\n      obj.orderBookType = orderBookTypeToJSON(message.orderBookType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderBookInstrument>): OrderBookInstrument {\n    return OrderBookInstrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderBookInstrument>): OrderBookInstrument {\n    const message = createBaseOrderBookInstrument();\n    message.figi = object.figi ?? \"\";\n    message.depth = object.depth ?? 0;\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.orderBookType = object.orderBookType ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseSubscribeOrderBookResponse(): SubscribeOrderBookResponse {\n  return { trackingId: \"\", orderBookSubscriptions: [] };\n}\n\nexport const SubscribeOrderBookResponse: MessageFns<SubscribeOrderBookResponse> = {\n  encode(message: SubscribeOrderBookResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.trackingId !== \"\") {\n      writer.uint32(10).string(message.trackingId);\n    }\n    for (const v of message.orderBookSubscriptions) {\n      OrderBookSubscription.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeOrderBookResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeOrderBookResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.orderBookSubscriptions.push(OrderBookSubscription.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeOrderBookResponse {\n    return {\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      orderBookSubscriptions: globalThis.Array.isArray(object?.orderBookSubscriptions)\n        ? object.orderBookSubscriptions.map((e: any) => OrderBookSubscription.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: SubscribeOrderBookResponse): unknown {\n    const obj: any = {};\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.orderBookSubscriptions?.length) {\n      obj.orderBookSubscriptions = message.orderBookSubscriptions.map((e) => OrderBookSubscription.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeOrderBookResponse>): SubscribeOrderBookResponse {\n    return SubscribeOrderBookResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeOrderBookResponse>): SubscribeOrderBookResponse {\n    const message = createBaseSubscribeOrderBookResponse();\n    message.trackingId = object.trackingId ?? \"\";\n    message.orderBookSubscriptions = object.orderBookSubscriptions?.map((e) => OrderBookSubscription.fromPartial(e)) ||\n      [];\n    return message;\n  },\n};\n\nfunction createBaseOrderBookSubscription(): OrderBookSubscription {\n  return {\n    figi: \"\",\n    depth: 0,\n    subscriptionStatus: 0,\n    instrumentUid: \"\",\n    streamId: \"\",\n    subscriptionId: \"\",\n    orderBookType: 0,\n  };\n}\n\nexport const OrderBookSubscription: MessageFns<OrderBookSubscription> = {\n  encode(message: OrderBookSubscription, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.depth !== 0) {\n      writer.uint32(16).int32(message.depth);\n    }\n    if (message.subscriptionStatus !== 0) {\n      writer.uint32(24).int32(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(34).string(message.instrumentUid);\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(42).string(message.streamId);\n    }\n    if (message.subscriptionId !== \"\") {\n      writer.uint32(50).string(message.subscriptionId);\n    }\n    if (message.orderBookType !== 0) {\n      writer.uint32(56).int32(message.orderBookType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderBookSubscription {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderBookSubscription();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.depth = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.subscriptionStatus = reader.int32() as any;\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.subscriptionId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.orderBookType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderBookSubscription {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      depth: isSet(object.depth) ? globalThis.Number(object.depth) : 0,\n      subscriptionStatus: isSet(object.subscriptionStatus) ? subscriptionStatusFromJSON(object.subscriptionStatus) : 0,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n      subscriptionId: isSet(object.subscriptionId) ? globalThis.String(object.subscriptionId) : \"\",\n      orderBookType: isSet(object.orderBookType) ? orderBookTypeFromJSON(object.orderBookType) : 0,\n    };\n  },\n\n  toJSON(message: OrderBookSubscription): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.depth !== 0) {\n      obj.depth = Math.round(message.depth);\n    }\n    if (message.subscriptionStatus !== 0) {\n      obj.subscriptionStatus = subscriptionStatusToJSON(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    if (message.subscriptionId !== \"\") {\n      obj.subscriptionId = message.subscriptionId;\n    }\n    if (message.orderBookType !== 0) {\n      obj.orderBookType = orderBookTypeToJSON(message.orderBookType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderBookSubscription>): OrderBookSubscription {\n    return OrderBookSubscription.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderBookSubscription>): OrderBookSubscription {\n    const message = createBaseOrderBookSubscription();\n    message.figi = object.figi ?? \"\";\n    message.depth = object.depth ?? 0;\n    message.subscriptionStatus = object.subscriptionStatus ?? 0;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.streamId = object.streamId ?? \"\";\n    message.subscriptionId = object.subscriptionId ?? \"\";\n    message.orderBookType = object.orderBookType ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseSubscribeTradesRequest(): SubscribeTradesRequest {\n  return { subscriptionAction: 0, instruments: [], tradeSource: 0 };\n}\n\nexport const SubscribeTradesRequest: MessageFns<SubscribeTradesRequest> = {\n  encode(message: SubscribeTradesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscriptionAction !== 0) {\n      writer.uint32(8).int32(message.subscriptionAction);\n    }\n    for (const v of message.instruments) {\n      TradeInstrument.encode(v!, writer.uint32(18).fork()).join();\n    }\n    if (message.tradeSource !== 0) {\n      writer.uint32(24).int32(message.tradeSource);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeTradesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeTradesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.subscriptionAction = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instruments.push(TradeInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.tradeSource = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeTradesRequest {\n    return {\n      subscriptionAction: isSet(object.subscriptionAction) ? subscriptionActionFromJSON(object.subscriptionAction) : 0,\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => TradeInstrument.fromJSON(e))\n        : [],\n      tradeSource: isSet(object.tradeSource) ? tradeSourceTypeFromJSON(object.tradeSource) : 0,\n    };\n  },\n\n  toJSON(message: SubscribeTradesRequest): unknown {\n    const obj: any = {};\n    if (message.subscriptionAction !== 0) {\n      obj.subscriptionAction = subscriptionActionToJSON(message.subscriptionAction);\n    }\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => TradeInstrument.toJSON(e));\n    }\n    if (message.tradeSource !== 0) {\n      obj.tradeSource = tradeSourceTypeToJSON(message.tradeSource);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeTradesRequest>): SubscribeTradesRequest {\n    return SubscribeTradesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeTradesRequest>): SubscribeTradesRequest {\n    const message = createBaseSubscribeTradesRequest();\n    message.subscriptionAction = object.subscriptionAction ?? 0;\n    message.instruments = object.instruments?.map((e) => TradeInstrument.fromPartial(e)) || [];\n    message.tradeSource = object.tradeSource ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseTradeInstrument(): TradeInstrument {\n  return { figi: \"\", instrumentId: \"\" };\n}\n\nexport const TradeInstrument: MessageFns<TradeInstrument> = {\n  encode(message: TradeInstrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradeInstrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradeInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradeInstrument {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: TradeInstrument): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradeInstrument>): TradeInstrument {\n    return TradeInstrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradeInstrument>): TradeInstrument {\n    const message = createBaseTradeInstrument();\n    message.figi = object.figi ?? \"\";\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseSubscribeTradesResponse(): SubscribeTradesResponse {\n  return { trackingId: \"\", tradeSubscriptions: [], tradeSource: 0 };\n}\n\nexport const SubscribeTradesResponse: MessageFns<SubscribeTradesResponse> = {\n  encode(message: SubscribeTradesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.trackingId !== \"\") {\n      writer.uint32(10).string(message.trackingId);\n    }\n    for (const v of message.tradeSubscriptions) {\n      TradeSubscription.encode(v!, writer.uint32(18).fork()).join();\n    }\n    if (message.tradeSource !== 0) {\n      writer.uint32(24).int32(message.tradeSource);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeTradesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeTradesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.tradeSubscriptions.push(TradeSubscription.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.tradeSource = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeTradesResponse {\n    return {\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      tradeSubscriptions: globalThis.Array.isArray(object?.tradeSubscriptions)\n        ? object.tradeSubscriptions.map((e: any) => TradeSubscription.fromJSON(e))\n        : [],\n      tradeSource: isSet(object.tradeSource) ? tradeSourceTypeFromJSON(object.tradeSource) : 0,\n    };\n  },\n\n  toJSON(message: SubscribeTradesResponse): unknown {\n    const obj: any = {};\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.tradeSubscriptions?.length) {\n      obj.tradeSubscriptions = message.tradeSubscriptions.map((e) => TradeSubscription.toJSON(e));\n    }\n    if (message.tradeSource !== 0) {\n      obj.tradeSource = tradeSourceTypeToJSON(message.tradeSource);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeTradesResponse>): SubscribeTradesResponse {\n    return SubscribeTradesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeTradesResponse>): SubscribeTradesResponse {\n    const message = createBaseSubscribeTradesResponse();\n    message.trackingId = object.trackingId ?? \"\";\n    message.tradeSubscriptions = object.tradeSubscriptions?.map((e) => TradeSubscription.fromPartial(e)) || [];\n    message.tradeSource = object.tradeSource ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseTradeSubscription(): TradeSubscription {\n  return { figi: \"\", subscriptionStatus: 0, instrumentUid: \"\", streamId: \"\", subscriptionId: \"\" };\n}\n\nexport const TradeSubscription: MessageFns<TradeSubscription> = {\n  encode(message: TradeSubscription, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.subscriptionStatus !== 0) {\n      writer.uint32(16).int32(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(26).string(message.instrumentUid);\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(34).string(message.streamId);\n    }\n    if (message.subscriptionId !== \"\") {\n      writer.uint32(42).string(message.subscriptionId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradeSubscription {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradeSubscription();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.subscriptionStatus = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subscriptionId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradeSubscription {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      subscriptionStatus: isSet(object.subscriptionStatus) ? subscriptionStatusFromJSON(object.subscriptionStatus) : 0,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n      subscriptionId: isSet(object.subscriptionId) ? globalThis.String(object.subscriptionId) : \"\",\n    };\n  },\n\n  toJSON(message: TradeSubscription): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.subscriptionStatus !== 0) {\n      obj.subscriptionStatus = subscriptionStatusToJSON(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    if (message.subscriptionId !== \"\") {\n      obj.subscriptionId = message.subscriptionId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradeSubscription>): TradeSubscription {\n    return TradeSubscription.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradeSubscription>): TradeSubscription {\n    const message = createBaseTradeSubscription();\n    message.figi = object.figi ?? \"\";\n    message.subscriptionStatus = object.subscriptionStatus ?? 0;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.streamId = object.streamId ?? \"\";\n    message.subscriptionId = object.subscriptionId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseSubscribeInfoRequest(): SubscribeInfoRequest {\n  return { subscriptionAction: 0, instruments: [] };\n}\n\nexport const SubscribeInfoRequest: MessageFns<SubscribeInfoRequest> = {\n  encode(message: SubscribeInfoRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscriptionAction !== 0) {\n      writer.uint32(8).int32(message.subscriptionAction);\n    }\n    for (const v of message.instruments) {\n      InfoInstrument.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeInfoRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeInfoRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.subscriptionAction = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instruments.push(InfoInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeInfoRequest {\n    return {\n      subscriptionAction: isSet(object.subscriptionAction) ? subscriptionActionFromJSON(object.subscriptionAction) : 0,\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => InfoInstrument.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: SubscribeInfoRequest): unknown {\n    const obj: any = {};\n    if (message.subscriptionAction !== 0) {\n      obj.subscriptionAction = subscriptionActionToJSON(message.subscriptionAction);\n    }\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => InfoInstrument.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeInfoRequest>): SubscribeInfoRequest {\n    return SubscribeInfoRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeInfoRequest>): SubscribeInfoRequest {\n    const message = createBaseSubscribeInfoRequest();\n    message.subscriptionAction = object.subscriptionAction ?? 0;\n    message.instruments = object.instruments?.map((e) => InfoInstrument.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseInfoInstrument(): InfoInstrument {\n  return { figi: \"\", instrumentId: \"\" };\n}\n\nexport const InfoInstrument: MessageFns<InfoInstrument> = {\n  encode(message: InfoInstrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InfoInstrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInfoInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InfoInstrument {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: InfoInstrument): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InfoInstrument>): InfoInstrument {\n    return InfoInstrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InfoInstrument>): InfoInstrument {\n    const message = createBaseInfoInstrument();\n    message.figi = object.figi ?? \"\";\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseSubscribeInfoResponse(): SubscribeInfoResponse {\n  return { trackingId: \"\", infoSubscriptions: [] };\n}\n\nexport const SubscribeInfoResponse: MessageFns<SubscribeInfoResponse> = {\n  encode(message: SubscribeInfoResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.trackingId !== \"\") {\n      writer.uint32(10).string(message.trackingId);\n    }\n    for (const v of message.infoSubscriptions) {\n      InfoSubscription.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeInfoResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeInfoResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.infoSubscriptions.push(InfoSubscription.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeInfoResponse {\n    return {\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      infoSubscriptions: globalThis.Array.isArray(object?.infoSubscriptions)\n        ? object.infoSubscriptions.map((e: any) => InfoSubscription.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: SubscribeInfoResponse): unknown {\n    const obj: any = {};\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.infoSubscriptions?.length) {\n      obj.infoSubscriptions = message.infoSubscriptions.map((e) => InfoSubscription.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeInfoResponse>): SubscribeInfoResponse {\n    return SubscribeInfoResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeInfoResponse>): SubscribeInfoResponse {\n    const message = createBaseSubscribeInfoResponse();\n    message.trackingId = object.trackingId ?? \"\";\n    message.infoSubscriptions = object.infoSubscriptions?.map((e) => InfoSubscription.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseInfoSubscription(): InfoSubscription {\n  return { figi: \"\", subscriptionStatus: 0, instrumentUid: \"\", streamId: \"\", subscriptionId: \"\" };\n}\n\nexport const InfoSubscription: MessageFns<InfoSubscription> = {\n  encode(message: InfoSubscription, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.subscriptionStatus !== 0) {\n      writer.uint32(16).int32(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(26).string(message.instrumentUid);\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(34).string(message.streamId);\n    }\n    if (message.subscriptionId !== \"\") {\n      writer.uint32(42).string(message.subscriptionId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InfoSubscription {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInfoSubscription();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.subscriptionStatus = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subscriptionId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InfoSubscription {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      subscriptionStatus: isSet(object.subscriptionStatus) ? subscriptionStatusFromJSON(object.subscriptionStatus) : 0,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n      subscriptionId: isSet(object.subscriptionId) ? globalThis.String(object.subscriptionId) : \"\",\n    };\n  },\n\n  toJSON(message: InfoSubscription): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.subscriptionStatus !== 0) {\n      obj.subscriptionStatus = subscriptionStatusToJSON(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    if (message.subscriptionId !== \"\") {\n      obj.subscriptionId = message.subscriptionId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InfoSubscription>): InfoSubscription {\n    return InfoSubscription.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InfoSubscription>): InfoSubscription {\n    const message = createBaseInfoSubscription();\n    message.figi = object.figi ?? \"\";\n    message.subscriptionStatus = object.subscriptionStatus ?? 0;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.streamId = object.streamId ?? \"\";\n    message.subscriptionId = object.subscriptionId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseSubscribeLastPriceRequest(): SubscribeLastPriceRequest {\n  return { subscriptionAction: 0, instruments: [] };\n}\n\nexport const SubscribeLastPriceRequest: MessageFns<SubscribeLastPriceRequest> = {\n  encode(message: SubscribeLastPriceRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subscriptionAction !== 0) {\n      writer.uint32(8).int32(message.subscriptionAction);\n    }\n    for (const v of message.instruments) {\n      LastPriceInstrument.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeLastPriceRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeLastPriceRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.subscriptionAction = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instruments.push(LastPriceInstrument.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeLastPriceRequest {\n    return {\n      subscriptionAction: isSet(object.subscriptionAction) ? subscriptionActionFromJSON(object.subscriptionAction) : 0,\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => LastPriceInstrument.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: SubscribeLastPriceRequest): unknown {\n    const obj: any = {};\n    if (message.subscriptionAction !== 0) {\n      obj.subscriptionAction = subscriptionActionToJSON(message.subscriptionAction);\n    }\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => LastPriceInstrument.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeLastPriceRequest>): SubscribeLastPriceRequest {\n    return SubscribeLastPriceRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeLastPriceRequest>): SubscribeLastPriceRequest {\n    const message = createBaseSubscribeLastPriceRequest();\n    message.subscriptionAction = object.subscriptionAction ?? 0;\n    message.instruments = object.instruments?.map((e) => LastPriceInstrument.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseLastPriceInstrument(): LastPriceInstrument {\n  return { figi: \"\", instrumentId: \"\" };\n}\n\nexport const LastPriceInstrument: MessageFns<LastPriceInstrument> = {\n  encode(message: LastPriceInstrument, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LastPriceInstrument {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLastPriceInstrument();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LastPriceInstrument {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n    };\n  },\n\n  toJSON(message: LastPriceInstrument): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LastPriceInstrument>): LastPriceInstrument {\n    return LastPriceInstrument.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LastPriceInstrument>): LastPriceInstrument {\n    const message = createBaseLastPriceInstrument();\n    message.figi = object.figi ?? \"\";\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseSubscribeLastPriceResponse(): SubscribeLastPriceResponse {\n  return { trackingId: \"\", lastPriceSubscriptions: [] };\n}\n\nexport const SubscribeLastPriceResponse: MessageFns<SubscribeLastPriceResponse> = {\n  encode(message: SubscribeLastPriceResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.trackingId !== \"\") {\n      writer.uint32(10).string(message.trackingId);\n    }\n    for (const v of message.lastPriceSubscriptions) {\n      LastPriceSubscription.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SubscribeLastPriceResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubscribeLastPriceResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.trackingId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.lastPriceSubscriptions.push(LastPriceSubscription.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SubscribeLastPriceResponse {\n    return {\n      trackingId: isSet(object.trackingId) ? globalThis.String(object.trackingId) : \"\",\n      lastPriceSubscriptions: globalThis.Array.isArray(object?.lastPriceSubscriptions)\n        ? object.lastPriceSubscriptions.map((e: any) => LastPriceSubscription.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: SubscribeLastPriceResponse): unknown {\n    const obj: any = {};\n    if (message.trackingId !== \"\") {\n      obj.trackingId = message.trackingId;\n    }\n    if (message.lastPriceSubscriptions?.length) {\n      obj.lastPriceSubscriptions = message.lastPriceSubscriptions.map((e) => LastPriceSubscription.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SubscribeLastPriceResponse>): SubscribeLastPriceResponse {\n    return SubscribeLastPriceResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SubscribeLastPriceResponse>): SubscribeLastPriceResponse {\n    const message = createBaseSubscribeLastPriceResponse();\n    message.trackingId = object.trackingId ?? \"\";\n    message.lastPriceSubscriptions = object.lastPriceSubscriptions?.map((e) => LastPriceSubscription.fromPartial(e)) ||\n      [];\n    return message;\n  },\n};\n\nfunction createBaseLastPriceSubscription(): LastPriceSubscription {\n  return { figi: \"\", subscriptionStatus: 0, instrumentUid: \"\", streamId: \"\", subscriptionId: \"\" };\n}\n\nexport const LastPriceSubscription: MessageFns<LastPriceSubscription> = {\n  encode(message: LastPriceSubscription, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.subscriptionStatus !== 0) {\n      writer.uint32(16).int32(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(26).string(message.instrumentUid);\n    }\n    if (message.streamId !== \"\") {\n      writer.uint32(34).string(message.streamId);\n    }\n    if (message.subscriptionId !== \"\") {\n      writer.uint32(42).string(message.subscriptionId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LastPriceSubscription {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLastPriceSubscription();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.subscriptionStatus = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.streamId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subscriptionId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LastPriceSubscription {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      subscriptionStatus: isSet(object.subscriptionStatus) ? subscriptionStatusFromJSON(object.subscriptionStatus) : 0,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      streamId: isSet(object.streamId) ? globalThis.String(object.streamId) : \"\",\n      subscriptionId: isSet(object.subscriptionId) ? globalThis.String(object.subscriptionId) : \"\",\n    };\n  },\n\n  toJSON(message: LastPriceSubscription): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.subscriptionStatus !== 0) {\n      obj.subscriptionStatus = subscriptionStatusToJSON(message.subscriptionStatus);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.streamId !== \"\") {\n      obj.streamId = message.streamId;\n    }\n    if (message.subscriptionId !== \"\") {\n      obj.subscriptionId = message.subscriptionId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LastPriceSubscription>): LastPriceSubscription {\n    return LastPriceSubscription.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LastPriceSubscription>): LastPriceSubscription {\n    const message = createBaseLastPriceSubscription();\n    message.figi = object.figi ?? \"\";\n    message.subscriptionStatus = object.subscriptionStatus ?? 0;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.streamId = object.streamId ?? \"\";\n    message.subscriptionId = object.subscriptionId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseCandle(): Candle {\n  return {\n    figi: \"\",\n    interval: 0,\n    open: undefined,\n    high: undefined,\n    low: undefined,\n    close: undefined,\n    volume: 0,\n    time: undefined,\n    lastTradeTs: undefined,\n    instrumentUid: \"\",\n    candleSourceType: 0,\n  };\n}\n\nexport const Candle: MessageFns<Candle> = {\n  encode(message: Candle, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.interval !== 0) {\n      writer.uint32(16).int32(message.interval);\n    }\n    if (message.open !== undefined) {\n      Quotation.encode(message.open, writer.uint32(26).fork()).join();\n    }\n    if (message.high !== undefined) {\n      Quotation.encode(message.high, writer.uint32(34).fork()).join();\n    }\n    if (message.low !== undefined) {\n      Quotation.encode(message.low, writer.uint32(42).fork()).join();\n    }\n    if (message.close !== undefined) {\n      Quotation.encode(message.close, writer.uint32(50).fork()).join();\n    }\n    if (message.volume !== 0) {\n      writer.uint32(56).int64(message.volume);\n    }\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(66).fork()).join();\n    }\n    if (message.lastTradeTs !== undefined) {\n      Timestamp.encode(toTimestamp(message.lastTradeTs), writer.uint32(74).fork()).join();\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(82).string(message.instrumentUid);\n    }\n    if (message.candleSourceType !== 0) {\n      writer.uint32(152).int32(message.candleSourceType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Candle {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCandle();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.interval = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.open = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.high = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.low = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.close = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.volume = longToNumber(reader.int64());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.lastTradeTs = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 152) {\n            break;\n          }\n\n          message.candleSourceType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Candle {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      interval: isSet(object.interval) ? subscriptionIntervalFromJSON(object.interval) : 0,\n      open: isSet(object.open) ? Quotation.fromJSON(object.open) : undefined,\n      high: isSet(object.high) ? Quotation.fromJSON(object.high) : undefined,\n      low: isSet(object.low) ? Quotation.fromJSON(object.low) : undefined,\n      close: isSet(object.close) ? Quotation.fromJSON(object.close) : undefined,\n      volume: isSet(object.volume) ? globalThis.Number(object.volume) : 0,\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n      lastTradeTs: isSet(object.lastTradeTs) ? fromJsonTimestamp(object.lastTradeTs) : undefined,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      candleSourceType: isSet(object.candleSourceType) ? candleSourceFromJSON(object.candleSourceType) : 0,\n    };\n  },\n\n  toJSON(message: Candle): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.interval !== 0) {\n      obj.interval = subscriptionIntervalToJSON(message.interval);\n    }\n    if (message.open !== undefined) {\n      obj.open = Quotation.toJSON(message.open);\n    }\n    if (message.high !== undefined) {\n      obj.high = Quotation.toJSON(message.high);\n    }\n    if (message.low !== undefined) {\n      obj.low = Quotation.toJSON(message.low);\n    }\n    if (message.close !== undefined) {\n      obj.close = Quotation.toJSON(message.close);\n    }\n    if (message.volume !== 0) {\n      obj.volume = Math.round(message.volume);\n    }\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    if (message.lastTradeTs !== undefined) {\n      obj.lastTradeTs = message.lastTradeTs.toISOString();\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.candleSourceType !== 0) {\n      obj.candleSourceType = candleSourceToJSON(message.candleSourceType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Candle>): Candle {\n    return Candle.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Candle>): Candle {\n    const message = createBaseCandle();\n    message.figi = object.figi ?? \"\";\n    message.interval = object.interval ?? 0;\n    message.open = (object.open !== undefined && object.open !== null) ? Quotation.fromPartial(object.open) : undefined;\n    message.high = (object.high !== undefined && object.high !== null) ? Quotation.fromPartial(object.high) : undefined;\n    message.low = (object.low !== undefined && object.low !== null) ? Quotation.fromPartial(object.low) : undefined;\n    message.close = (object.close !== undefined && object.close !== null)\n      ? Quotation.fromPartial(object.close)\n      : undefined;\n    message.volume = object.volume ?? 0;\n    message.time = object.time ?? undefined;\n    message.lastTradeTs = object.lastTradeTs ?? undefined;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.candleSourceType = object.candleSourceType ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseOrderBook(): OrderBook {\n  return {\n    figi: \"\",\n    depth: 0,\n    isConsistent: false,\n    bids: [],\n    asks: [],\n    time: undefined,\n    limitUp: undefined,\n    limitDown: undefined,\n    instrumentUid: \"\",\n    orderBookType: 0,\n  };\n}\n\nexport const OrderBook: MessageFns<OrderBook> = {\n  encode(message: OrderBook, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.depth !== 0) {\n      writer.uint32(16).int32(message.depth);\n    }\n    if (message.isConsistent !== false) {\n      writer.uint32(24).bool(message.isConsistent);\n    }\n    for (const v of message.bids) {\n      Order.encode(v!, writer.uint32(34).fork()).join();\n    }\n    for (const v of message.asks) {\n      Order.encode(v!, writer.uint32(42).fork()).join();\n    }\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(50).fork()).join();\n    }\n    if (message.limitUp !== undefined) {\n      Quotation.encode(message.limitUp, writer.uint32(58).fork()).join();\n    }\n    if (message.limitDown !== undefined) {\n      Quotation.encode(message.limitDown, writer.uint32(66).fork()).join();\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(74).string(message.instrumentUid);\n    }\n    if (message.orderBookType !== 0) {\n      writer.uint32(80).int32(message.orderBookType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderBook {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderBook();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.depth = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.isConsistent = reader.bool();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.bids.push(Order.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.asks.push(Order.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.limitUp = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.limitDown = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.orderBookType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderBook {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      depth: isSet(object.depth) ? globalThis.Number(object.depth) : 0,\n      isConsistent: isSet(object.isConsistent) ? globalThis.Boolean(object.isConsistent) : false,\n      bids: globalThis.Array.isArray(object?.bids) ? object.bids.map((e: any) => Order.fromJSON(e)) : [],\n      asks: globalThis.Array.isArray(object?.asks) ? object.asks.map((e: any) => Order.fromJSON(e)) : [],\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n      limitUp: isSet(object.limitUp) ? Quotation.fromJSON(object.limitUp) : undefined,\n      limitDown: isSet(object.limitDown) ? Quotation.fromJSON(object.limitDown) : undefined,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      orderBookType: isSet(object.orderBookType) ? orderBookTypeFromJSON(object.orderBookType) : 0,\n    };\n  },\n\n  toJSON(message: OrderBook): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.depth !== 0) {\n      obj.depth = Math.round(message.depth);\n    }\n    if (message.isConsistent !== false) {\n      obj.isConsistent = message.isConsistent;\n    }\n    if (message.bids?.length) {\n      obj.bids = message.bids.map((e) => Order.toJSON(e));\n    }\n    if (message.asks?.length) {\n      obj.asks = message.asks.map((e) => Order.toJSON(e));\n    }\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    if (message.limitUp !== undefined) {\n      obj.limitUp = Quotation.toJSON(message.limitUp);\n    }\n    if (message.limitDown !== undefined) {\n      obj.limitDown = Quotation.toJSON(message.limitDown);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.orderBookType !== 0) {\n      obj.orderBookType = orderBookTypeToJSON(message.orderBookType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderBook>): OrderBook {\n    return OrderBook.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderBook>): OrderBook {\n    const message = createBaseOrderBook();\n    message.figi = object.figi ?? \"\";\n    message.depth = object.depth ?? 0;\n    message.isConsistent = object.isConsistent ?? false;\n    message.bids = object.bids?.map((e) => Order.fromPartial(e)) || [];\n    message.asks = object.asks?.map((e) => Order.fromPartial(e)) || [];\n    message.time = object.time ?? undefined;\n    message.limitUp = (object.limitUp !== undefined && object.limitUp !== null)\n      ? Quotation.fromPartial(object.limitUp)\n      : undefined;\n    message.limitDown = (object.limitDown !== undefined && object.limitDown !== null)\n      ? Quotation.fromPartial(object.limitDown)\n      : undefined;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.orderBookType = object.orderBookType ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseOrder(): Order {\n  return { price: undefined, quantity: 0 };\n}\n\nexport const Order: MessageFns<Order> = {\n  encode(message: Order, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(10).fork()).join();\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(16).int64(message.quantity);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Order {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrder();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Order {\n    return {\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n    };\n  },\n\n  toJSON(message: Order): unknown {\n    const obj: any = {};\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Order>): Order {\n    return Order.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Order>): Order {\n    const message = createBaseOrder();\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.quantity = object.quantity ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseTrade(): Trade {\n  return { figi: \"\", direction: 0, price: undefined, quantity: 0, time: undefined, instrumentUid: \"\", tradeSource: 0 };\n}\n\nexport const Trade: MessageFns<Trade> = {\n  encode(message: Trade, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.direction !== 0) {\n      writer.uint32(16).int32(message.direction);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(26).fork()).join();\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(32).int64(message.quantity);\n    }\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(42).fork()).join();\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(50).string(message.instrumentUid);\n    }\n    if (message.tradeSource !== 0) {\n      writer.uint32(56).int32(message.tradeSource);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Trade {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTrade();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.tradeSource = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Trade {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      direction: isSet(object.direction) ? tradeDirectionFromJSON(object.direction) : 0,\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      tradeSource: isSet(object.tradeSource) ? tradeSourceTypeFromJSON(object.tradeSource) : 0,\n    };\n  },\n\n  toJSON(message: Trade): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.direction !== 0) {\n      obj.direction = tradeDirectionToJSON(message.direction);\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.tradeSource !== 0) {\n      obj.tradeSource = tradeSourceTypeToJSON(message.tradeSource);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Trade>): Trade {\n    return Trade.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Trade>): Trade {\n    const message = createBaseTrade();\n    message.figi = object.figi ?? \"\";\n    message.direction = object.direction ?? 0;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.quantity = object.quantity ?? 0;\n    message.time = object.time ?? undefined;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.tradeSource = object.tradeSource ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseTradingStatus(): TradingStatus {\n  return {\n    figi: \"\",\n    tradingStatus: 0,\n    time: undefined,\n    limitOrderAvailableFlag: false,\n    marketOrderAvailableFlag: false,\n    instrumentUid: \"\",\n  };\n}\n\nexport const TradingStatus: MessageFns<TradingStatus> = {\n  encode(message: TradingStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(16).int32(message.tradingStatus);\n    }\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(26).fork()).join();\n    }\n    if (message.limitOrderAvailableFlag !== false) {\n      writer.uint32(32).bool(message.limitOrderAvailableFlag);\n    }\n    if (message.marketOrderAvailableFlag !== false) {\n      writer.uint32(40).bool(message.marketOrderAvailableFlag);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(50).string(message.instrumentUid);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TradingStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTradingStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.limitOrderAvailableFlag = reader.bool();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.marketOrderAvailableFlag = reader.bool();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TradingStatus {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n      limitOrderAvailableFlag: isSet(object.limitOrderAvailableFlag)\n        ? globalThis.Boolean(object.limitOrderAvailableFlag)\n        : false,\n      marketOrderAvailableFlag: isSet(object.marketOrderAvailableFlag)\n        ? globalThis.Boolean(object.marketOrderAvailableFlag)\n        : false,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n    };\n  },\n\n  toJSON(message: TradingStatus): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    if (message.limitOrderAvailableFlag !== false) {\n      obj.limitOrderAvailableFlag = message.limitOrderAvailableFlag;\n    }\n    if (message.marketOrderAvailableFlag !== false) {\n      obj.marketOrderAvailableFlag = message.marketOrderAvailableFlag;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TradingStatus>): TradingStatus {\n    return TradingStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TradingStatus>): TradingStatus {\n    const message = createBaseTradingStatus();\n    message.figi = object.figi ?? \"\";\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.time = object.time ?? undefined;\n    message.limitOrderAvailableFlag = object.limitOrderAvailableFlag ?? false;\n    message.marketOrderAvailableFlag = object.marketOrderAvailableFlag ?? false;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetCandlesRequest(): GetCandlesRequest {\n  return {\n    figi: undefined,\n    from: undefined,\n    to: undefined,\n    interval: 0,\n    instrumentId: undefined,\n    candleSourceType: undefined,\n    limit: undefined,\n  };\n}\n\nexport const GetCandlesRequest: MessageFns<GetCandlesRequest> = {\n  encode(message: GetCandlesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== undefined) {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    if (message.interval !== 0) {\n      writer.uint32(32).int32(message.interval);\n    }\n    if (message.instrumentId !== undefined) {\n      writer.uint32(42).string(message.instrumentId);\n    }\n    if (message.candleSourceType !== undefined) {\n      writer.uint32(56).int32(message.candleSourceType);\n    }\n    if (message.limit !== undefined) {\n      writer.uint32(80).int32(message.limit);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetCandlesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetCandlesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.interval = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.candleSourceType = reader.int32() as any;\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.limit = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetCandlesRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined,\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      interval: isSet(object.interval) ? candleIntervalFromJSON(object.interval) : 0,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : undefined,\n      candleSourceType: isSet(object.candleSourceType)\n        ? getCandlesRequest_CandleSourceFromJSON(object.candleSourceType)\n        : undefined,\n      limit: isSet(object.limit) ? globalThis.Number(object.limit) : undefined,\n    };\n  },\n\n  toJSON(message: GetCandlesRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== undefined) {\n      obj.figi = message.figi;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.interval !== 0) {\n      obj.interval = candleIntervalToJSON(message.interval);\n    }\n    if (message.instrumentId !== undefined) {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.candleSourceType !== undefined) {\n      obj.candleSourceType = getCandlesRequest_CandleSourceToJSON(message.candleSourceType);\n    }\n    if (message.limit !== undefined) {\n      obj.limit = Math.round(message.limit);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetCandlesRequest>): GetCandlesRequest {\n    return GetCandlesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetCandlesRequest>): GetCandlesRequest {\n    const message = createBaseGetCandlesRequest();\n    message.figi = object.figi ?? undefined;\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.interval = object.interval ?? 0;\n    message.instrumentId = object.instrumentId ?? undefined;\n    message.candleSourceType = object.candleSourceType ?? undefined;\n    message.limit = object.limit ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetCandlesResponse(): GetCandlesResponse {\n  return { candles: [] };\n}\n\nexport const GetCandlesResponse: MessageFns<GetCandlesResponse> = {\n  encode(message: GetCandlesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.candles) {\n      HistoricCandle.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetCandlesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetCandlesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.candles.push(HistoricCandle.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetCandlesResponse {\n    return {\n      candles: globalThis.Array.isArray(object?.candles)\n        ? object.candles.map((e: any) => HistoricCandle.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetCandlesResponse): unknown {\n    const obj: any = {};\n    if (message.candles?.length) {\n      obj.candles = message.candles.map((e) => HistoricCandle.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetCandlesResponse>): GetCandlesResponse {\n    return GetCandlesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetCandlesResponse>): GetCandlesResponse {\n    const message = createBaseGetCandlesResponse();\n    message.candles = object.candles?.map((e) => HistoricCandle.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseHistoricCandle(): HistoricCandle {\n  return {\n    open: undefined,\n    high: undefined,\n    low: undefined,\n    close: undefined,\n    volume: 0,\n    time: undefined,\n    isComplete: false,\n    candleSourceType: 0,\n  };\n}\n\nexport const HistoricCandle: MessageFns<HistoricCandle> = {\n  encode(message: HistoricCandle, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.open !== undefined) {\n      Quotation.encode(message.open, writer.uint32(10).fork()).join();\n    }\n    if (message.high !== undefined) {\n      Quotation.encode(message.high, writer.uint32(18).fork()).join();\n    }\n    if (message.low !== undefined) {\n      Quotation.encode(message.low, writer.uint32(26).fork()).join();\n    }\n    if (message.close !== undefined) {\n      Quotation.encode(message.close, writer.uint32(34).fork()).join();\n    }\n    if (message.volume !== 0) {\n      writer.uint32(40).int64(message.volume);\n    }\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(50).fork()).join();\n    }\n    if (message.isComplete !== false) {\n      writer.uint32(56).bool(message.isComplete);\n    }\n    if (message.candleSourceType !== 0) {\n      writer.uint32(72).int32(message.candleSourceType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): HistoricCandle {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseHistoricCandle();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.open = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.high = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.low = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.close = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.volume = longToNumber(reader.int64());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.isComplete = reader.bool();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.candleSourceType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): HistoricCandle {\n    return {\n      open: isSet(object.open) ? Quotation.fromJSON(object.open) : undefined,\n      high: isSet(object.high) ? Quotation.fromJSON(object.high) : undefined,\n      low: isSet(object.low) ? Quotation.fromJSON(object.low) : undefined,\n      close: isSet(object.close) ? Quotation.fromJSON(object.close) : undefined,\n      volume: isSet(object.volume) ? globalThis.Number(object.volume) : 0,\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n      isComplete: isSet(object.isComplete) ? globalThis.Boolean(object.isComplete) : false,\n      candleSourceType: isSet(object.candleSourceType) ? candleSourceFromJSON(object.candleSourceType) : 0,\n    };\n  },\n\n  toJSON(message: HistoricCandle): unknown {\n    const obj: any = {};\n    if (message.open !== undefined) {\n      obj.open = Quotation.toJSON(message.open);\n    }\n    if (message.high !== undefined) {\n      obj.high = Quotation.toJSON(message.high);\n    }\n    if (message.low !== undefined) {\n      obj.low = Quotation.toJSON(message.low);\n    }\n    if (message.close !== undefined) {\n      obj.close = Quotation.toJSON(message.close);\n    }\n    if (message.volume !== 0) {\n      obj.volume = Math.round(message.volume);\n    }\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    if (message.isComplete !== false) {\n      obj.isComplete = message.isComplete;\n    }\n    if (message.candleSourceType !== 0) {\n      obj.candleSourceType = candleSourceToJSON(message.candleSourceType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<HistoricCandle>): HistoricCandle {\n    return HistoricCandle.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<HistoricCandle>): HistoricCandle {\n    const message = createBaseHistoricCandle();\n    message.open = (object.open !== undefined && object.open !== null) ? Quotation.fromPartial(object.open) : undefined;\n    message.high = (object.high !== undefined && object.high !== null) ? Quotation.fromPartial(object.high) : undefined;\n    message.low = (object.low !== undefined && object.low !== null) ? Quotation.fromPartial(object.low) : undefined;\n    message.close = (object.close !== undefined && object.close !== null)\n      ? Quotation.fromPartial(object.close)\n      : undefined;\n    message.volume = object.volume ?? 0;\n    message.time = object.time ?? undefined;\n    message.isComplete = object.isComplete ?? false;\n    message.candleSourceType = object.candleSourceType ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetLastPricesRequest(): GetLastPricesRequest {\n  return { figi: [], instrumentId: [], lastPriceType: 0, instrumentStatus: undefined };\n}\n\nexport const GetLastPricesRequest: MessageFns<GetLastPricesRequest> = {\n  encode(message: GetLastPricesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.figi) {\n      writer.uint32(10).string(v!);\n    }\n    for (const v of message.instrumentId) {\n      writer.uint32(18).string(v!);\n    }\n    if (message.lastPriceType !== 0) {\n      writer.uint32(24).int32(message.lastPriceType);\n    }\n    if (message.instrumentStatus !== undefined) {\n      writer.uint32(72).int32(message.instrumentStatus);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetLastPricesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetLastPricesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi.push(reader.string());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId.push(reader.string());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.lastPriceType = reader.int32() as any;\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.instrumentStatus = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetLastPricesRequest {\n    return {\n      figi: globalThis.Array.isArray(object?.figi) ? object.figi.map((e: any) => globalThis.String(e)) : [],\n      instrumentId: globalThis.Array.isArray(object?.instrumentId)\n        ? object.instrumentId.map((e: any) => globalThis.String(e))\n        : [],\n      lastPriceType: isSet(object.lastPriceType) ? lastPriceTypeFromJSON(object.lastPriceType) : 0,\n      instrumentStatus: isSet(object.instrumentStatus) ? instrumentStatusFromJSON(object.instrumentStatus) : undefined,\n    };\n  },\n\n  toJSON(message: GetLastPricesRequest): unknown {\n    const obj: any = {};\n    if (message.figi?.length) {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentId?.length) {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.lastPriceType !== 0) {\n      obj.lastPriceType = lastPriceTypeToJSON(message.lastPriceType);\n    }\n    if (message.instrumentStatus !== undefined) {\n      obj.instrumentStatus = instrumentStatusToJSON(message.instrumentStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetLastPricesRequest>): GetLastPricesRequest {\n    return GetLastPricesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetLastPricesRequest>): GetLastPricesRequest {\n    const message = createBaseGetLastPricesRequest();\n    message.figi = object.figi?.map((e) => e) || [];\n    message.instrumentId = object.instrumentId?.map((e) => e) || [];\n    message.lastPriceType = object.lastPriceType ?? 0;\n    message.instrumentStatus = object.instrumentStatus ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetLastPricesResponse(): GetLastPricesResponse {\n  return { lastPrices: [] };\n}\n\nexport const GetLastPricesResponse: MessageFns<GetLastPricesResponse> = {\n  encode(message: GetLastPricesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.lastPrices) {\n      LastPrice.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetLastPricesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetLastPricesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.lastPrices.push(LastPrice.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetLastPricesResponse {\n    return {\n      lastPrices: globalThis.Array.isArray(object?.lastPrices)\n        ? object.lastPrices.map((e: any) => LastPrice.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetLastPricesResponse): unknown {\n    const obj: any = {};\n    if (message.lastPrices?.length) {\n      obj.lastPrices = message.lastPrices.map((e) => LastPrice.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetLastPricesResponse>): GetLastPricesResponse {\n    return GetLastPricesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetLastPricesResponse>): GetLastPricesResponse {\n    const message = createBaseGetLastPricesResponse();\n    message.lastPrices = object.lastPrices?.map((e) => LastPrice.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseLastPrice(): LastPrice {\n  return { figi: \"\", price: undefined, time: undefined, instrumentUid: \"\", lastPriceType: 0 };\n}\n\nexport const LastPrice: MessageFns<LastPrice> = {\n  encode(message: LastPrice, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(18).fork()).join();\n    }\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(26).fork()).join();\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(90).string(message.instrumentUid);\n    }\n    if (message.lastPriceType !== 0) {\n      writer.uint32(96).int32(message.lastPriceType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LastPrice {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLastPrice();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.lastPriceType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LastPrice {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      lastPriceType: isSet(object.lastPriceType) ? lastPriceTypeFromJSON(object.lastPriceType) : 0,\n    };\n  },\n\n  toJSON(message: LastPrice): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.lastPriceType !== 0) {\n      obj.lastPriceType = lastPriceTypeToJSON(message.lastPriceType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LastPrice>): LastPrice {\n    return LastPrice.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LastPrice>): LastPrice {\n    const message = createBaseLastPrice();\n    message.figi = object.figi ?? \"\";\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.time = object.time ?? undefined;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.lastPriceType = object.lastPriceType ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetOrderBookRequest(): GetOrderBookRequest {\n  return { figi: undefined, depth: 0, instrumentId: undefined };\n}\n\nexport const GetOrderBookRequest: MessageFns<GetOrderBookRequest> = {\n  encode(message: GetOrderBookRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== undefined) {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.depth !== 0) {\n      writer.uint32(16).int32(message.depth);\n    }\n    if (message.instrumentId !== undefined) {\n      writer.uint32(26).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrderBookRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrderBookRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.depth = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrderBookRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined,\n      depth: isSet(object.depth) ? globalThis.Number(object.depth) : 0,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : undefined,\n    };\n  },\n\n  toJSON(message: GetOrderBookRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== undefined) {\n      obj.figi = message.figi;\n    }\n    if (message.depth !== 0) {\n      obj.depth = Math.round(message.depth);\n    }\n    if (message.instrumentId !== undefined) {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrderBookRequest>): GetOrderBookRequest {\n    return GetOrderBookRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrderBookRequest>): GetOrderBookRequest {\n    const message = createBaseGetOrderBookRequest();\n    message.figi = object.figi ?? undefined;\n    message.depth = object.depth ?? 0;\n    message.instrumentId = object.instrumentId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetOrderBookResponse(): GetOrderBookResponse {\n  return {\n    figi: \"\",\n    depth: 0,\n    bids: [],\n    asks: [],\n    lastPrice: undefined,\n    closePrice: undefined,\n    limitUp: undefined,\n    limitDown: undefined,\n    lastPriceTs: undefined,\n    closePriceTs: undefined,\n    orderbookTs: undefined,\n    instrumentUid: \"\",\n  };\n}\n\nexport const GetOrderBookResponse: MessageFns<GetOrderBookResponse> = {\n  encode(message: GetOrderBookResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.depth !== 0) {\n      writer.uint32(16).int32(message.depth);\n    }\n    for (const v of message.bids) {\n      Order.encode(v!, writer.uint32(26).fork()).join();\n    }\n    for (const v of message.asks) {\n      Order.encode(v!, writer.uint32(34).fork()).join();\n    }\n    if (message.lastPrice !== undefined) {\n      Quotation.encode(message.lastPrice, writer.uint32(42).fork()).join();\n    }\n    if (message.closePrice !== undefined) {\n      Quotation.encode(message.closePrice, writer.uint32(50).fork()).join();\n    }\n    if (message.limitUp !== undefined) {\n      Quotation.encode(message.limitUp, writer.uint32(58).fork()).join();\n    }\n    if (message.limitDown !== undefined) {\n      Quotation.encode(message.limitDown, writer.uint32(66).fork()).join();\n    }\n    if (message.lastPriceTs !== undefined) {\n      Timestamp.encode(toTimestamp(message.lastPriceTs), writer.uint32(170).fork()).join();\n    }\n    if (message.closePriceTs !== undefined) {\n      Timestamp.encode(toTimestamp(message.closePriceTs), writer.uint32(178).fork()).join();\n    }\n    if (message.orderbookTs !== undefined) {\n      Timestamp.encode(toTimestamp(message.orderbookTs), writer.uint32(186).fork()).join();\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(74).string(message.instrumentUid);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetOrderBookResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetOrderBookResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.depth = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.bids.push(Order.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.asks.push(Order.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.lastPrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.closePrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.limitUp = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.limitDown = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.lastPriceTs = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.closePriceTs = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          message.orderbookTs = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetOrderBookResponse {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      depth: isSet(object.depth) ? globalThis.Number(object.depth) : 0,\n      bids: globalThis.Array.isArray(object?.bids) ? object.bids.map((e: any) => Order.fromJSON(e)) : [],\n      asks: globalThis.Array.isArray(object?.asks) ? object.asks.map((e: any) => Order.fromJSON(e)) : [],\n      lastPrice: isSet(object.lastPrice) ? Quotation.fromJSON(object.lastPrice) : undefined,\n      closePrice: isSet(object.closePrice) ? Quotation.fromJSON(object.closePrice) : undefined,\n      limitUp: isSet(object.limitUp) ? Quotation.fromJSON(object.limitUp) : undefined,\n      limitDown: isSet(object.limitDown) ? Quotation.fromJSON(object.limitDown) : undefined,\n      lastPriceTs: isSet(object.lastPriceTs) ? fromJsonTimestamp(object.lastPriceTs) : undefined,\n      closePriceTs: isSet(object.closePriceTs) ? fromJsonTimestamp(object.closePriceTs) : undefined,\n      orderbookTs: isSet(object.orderbookTs) ? fromJsonTimestamp(object.orderbookTs) : undefined,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n    };\n  },\n\n  toJSON(message: GetOrderBookResponse): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.depth !== 0) {\n      obj.depth = Math.round(message.depth);\n    }\n    if (message.bids?.length) {\n      obj.bids = message.bids.map((e) => Order.toJSON(e));\n    }\n    if (message.asks?.length) {\n      obj.asks = message.asks.map((e) => Order.toJSON(e));\n    }\n    if (message.lastPrice !== undefined) {\n      obj.lastPrice = Quotation.toJSON(message.lastPrice);\n    }\n    if (message.closePrice !== undefined) {\n      obj.closePrice = Quotation.toJSON(message.closePrice);\n    }\n    if (message.limitUp !== undefined) {\n      obj.limitUp = Quotation.toJSON(message.limitUp);\n    }\n    if (message.limitDown !== undefined) {\n      obj.limitDown = Quotation.toJSON(message.limitDown);\n    }\n    if (message.lastPriceTs !== undefined) {\n      obj.lastPriceTs = message.lastPriceTs.toISOString();\n    }\n    if (message.closePriceTs !== undefined) {\n      obj.closePriceTs = message.closePriceTs.toISOString();\n    }\n    if (message.orderbookTs !== undefined) {\n      obj.orderbookTs = message.orderbookTs.toISOString();\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetOrderBookResponse>): GetOrderBookResponse {\n    return GetOrderBookResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetOrderBookResponse>): GetOrderBookResponse {\n    const message = createBaseGetOrderBookResponse();\n    message.figi = object.figi ?? \"\";\n    message.depth = object.depth ?? 0;\n    message.bids = object.bids?.map((e) => Order.fromPartial(e)) || [];\n    message.asks = object.asks?.map((e) => Order.fromPartial(e)) || [];\n    message.lastPrice = (object.lastPrice !== undefined && object.lastPrice !== null)\n      ? Quotation.fromPartial(object.lastPrice)\n      : undefined;\n    message.closePrice = (object.closePrice !== undefined && object.closePrice !== null)\n      ? Quotation.fromPartial(object.closePrice)\n      : undefined;\n    message.limitUp = (object.limitUp !== undefined && object.limitUp !== null)\n      ? Quotation.fromPartial(object.limitUp)\n      : undefined;\n    message.limitDown = (object.limitDown !== undefined && object.limitDown !== null)\n      ? Quotation.fromPartial(object.limitDown)\n      : undefined;\n    message.lastPriceTs = object.lastPriceTs ?? undefined;\n    message.closePriceTs = object.closePriceTs ?? undefined;\n    message.orderbookTs = object.orderbookTs ?? undefined;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetTradingStatusRequest(): GetTradingStatusRequest {\n  return { figi: undefined, instrumentId: undefined };\n}\n\nexport const GetTradingStatusRequest: MessageFns<GetTradingStatusRequest> = {\n  encode(message: GetTradingStatusRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== undefined) {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.instrumentId !== undefined) {\n      writer.uint32(18).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTradingStatusRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTradingStatusRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTradingStatusRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : undefined,\n    };\n  },\n\n  toJSON(message: GetTradingStatusRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== undefined) {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentId !== undefined) {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTradingStatusRequest>): GetTradingStatusRequest {\n    return GetTradingStatusRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTradingStatusRequest>): GetTradingStatusRequest {\n    const message = createBaseGetTradingStatusRequest();\n    message.figi = object.figi ?? undefined;\n    message.instrumentId = object.instrumentId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetTradingStatusesRequest(): GetTradingStatusesRequest {\n  return { instrumentId: [] };\n}\n\nexport const GetTradingStatusesRequest: MessageFns<GetTradingStatusesRequest> = {\n  encode(message: GetTradingStatusesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instrumentId) {\n      writer.uint32(10).string(v!);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTradingStatusesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTradingStatusesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrumentId.push(reader.string());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTradingStatusesRequest {\n    return {\n      instrumentId: globalThis.Array.isArray(object?.instrumentId)\n        ? object.instrumentId.map((e: any) => globalThis.String(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetTradingStatusesRequest): unknown {\n    const obj: any = {};\n    if (message.instrumentId?.length) {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTradingStatusesRequest>): GetTradingStatusesRequest {\n    return GetTradingStatusesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTradingStatusesRequest>): GetTradingStatusesRequest {\n    const message = createBaseGetTradingStatusesRequest();\n    message.instrumentId = object.instrumentId?.map((e) => e) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetTradingStatusesResponse(): GetTradingStatusesResponse {\n  return { tradingStatuses: [] };\n}\n\nexport const GetTradingStatusesResponse: MessageFns<GetTradingStatusesResponse> = {\n  encode(message: GetTradingStatusesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.tradingStatuses) {\n      GetTradingStatusResponse.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTradingStatusesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTradingStatusesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.tradingStatuses.push(GetTradingStatusResponse.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTradingStatusesResponse {\n    return {\n      tradingStatuses: globalThis.Array.isArray(object?.tradingStatuses)\n        ? object.tradingStatuses.map((e: any) => GetTradingStatusResponse.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetTradingStatusesResponse): unknown {\n    const obj: any = {};\n    if (message.tradingStatuses?.length) {\n      obj.tradingStatuses = message.tradingStatuses.map((e) => GetTradingStatusResponse.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTradingStatusesResponse>): GetTradingStatusesResponse {\n    return GetTradingStatusesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTradingStatusesResponse>): GetTradingStatusesResponse {\n    const message = createBaseGetTradingStatusesResponse();\n    message.tradingStatuses = object.tradingStatuses?.map((e) => GetTradingStatusResponse.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetTradingStatusResponse(): GetTradingStatusResponse {\n  return {\n    figi: \"\",\n    tradingStatus: 0,\n    limitOrderAvailableFlag: false,\n    marketOrderAvailableFlag: false,\n    apiTradeAvailableFlag: false,\n    instrumentUid: \"\",\n    bestpriceOrderAvailableFlag: false,\n    onlyBestPrice: false,\n  };\n}\n\nexport const GetTradingStatusResponse: MessageFns<GetTradingStatusResponse> = {\n  encode(message: GetTradingStatusResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.tradingStatus !== 0) {\n      writer.uint32(16).int32(message.tradingStatus);\n    }\n    if (message.limitOrderAvailableFlag !== false) {\n      writer.uint32(24).bool(message.limitOrderAvailableFlag);\n    }\n    if (message.marketOrderAvailableFlag !== false) {\n      writer.uint32(32).bool(message.marketOrderAvailableFlag);\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      writer.uint32(40).bool(message.apiTradeAvailableFlag);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(50).string(message.instrumentUid);\n    }\n    if (message.bestpriceOrderAvailableFlag !== false) {\n      writer.uint32(64).bool(message.bestpriceOrderAvailableFlag);\n    }\n    if (message.onlyBestPrice !== false) {\n      writer.uint32(72).bool(message.onlyBestPrice);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTradingStatusResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTradingStatusResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.tradingStatus = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.limitOrderAvailableFlag = reader.bool();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.marketOrderAvailableFlag = reader.bool();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.apiTradeAvailableFlag = reader.bool();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.bestpriceOrderAvailableFlag = reader.bool();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.onlyBestPrice = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTradingStatusResponse {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      tradingStatus: isSet(object.tradingStatus) ? securityTradingStatusFromJSON(object.tradingStatus) : 0,\n      limitOrderAvailableFlag: isSet(object.limitOrderAvailableFlag)\n        ? globalThis.Boolean(object.limitOrderAvailableFlag)\n        : false,\n      marketOrderAvailableFlag: isSet(object.marketOrderAvailableFlag)\n        ? globalThis.Boolean(object.marketOrderAvailableFlag)\n        : false,\n      apiTradeAvailableFlag: isSet(object.apiTradeAvailableFlag)\n        ? globalThis.Boolean(object.apiTradeAvailableFlag)\n        : false,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      bestpriceOrderAvailableFlag: isSet(object.bestpriceOrderAvailableFlag)\n        ? globalThis.Boolean(object.bestpriceOrderAvailableFlag)\n        : false,\n      onlyBestPrice: isSet(object.onlyBestPrice) ? globalThis.Boolean(object.onlyBestPrice) : false,\n    };\n  },\n\n  toJSON(message: GetTradingStatusResponse): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.tradingStatus !== 0) {\n      obj.tradingStatus = securityTradingStatusToJSON(message.tradingStatus);\n    }\n    if (message.limitOrderAvailableFlag !== false) {\n      obj.limitOrderAvailableFlag = message.limitOrderAvailableFlag;\n    }\n    if (message.marketOrderAvailableFlag !== false) {\n      obj.marketOrderAvailableFlag = message.marketOrderAvailableFlag;\n    }\n    if (message.apiTradeAvailableFlag !== false) {\n      obj.apiTradeAvailableFlag = message.apiTradeAvailableFlag;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.bestpriceOrderAvailableFlag !== false) {\n      obj.bestpriceOrderAvailableFlag = message.bestpriceOrderAvailableFlag;\n    }\n    if (message.onlyBestPrice !== false) {\n      obj.onlyBestPrice = message.onlyBestPrice;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTradingStatusResponse>): GetTradingStatusResponse {\n    return GetTradingStatusResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTradingStatusResponse>): GetTradingStatusResponse {\n    const message = createBaseGetTradingStatusResponse();\n    message.figi = object.figi ?? \"\";\n    message.tradingStatus = object.tradingStatus ?? 0;\n    message.limitOrderAvailableFlag = object.limitOrderAvailableFlag ?? false;\n    message.marketOrderAvailableFlag = object.marketOrderAvailableFlag ?? false;\n    message.apiTradeAvailableFlag = object.apiTradeAvailableFlag ?? false;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.bestpriceOrderAvailableFlag = object.bestpriceOrderAvailableFlag ?? false;\n    message.onlyBestPrice = object.onlyBestPrice ?? false;\n    return message;\n  },\n};\n\nfunction createBaseGetLastTradesRequest(): GetLastTradesRequest {\n  return { figi: undefined, from: undefined, to: undefined, instrumentId: undefined, tradeSource: 0 };\n}\n\nexport const GetLastTradesRequest: MessageFns<GetLastTradesRequest> = {\n  encode(message: GetLastTradesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== undefined) {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    if (message.instrumentId !== undefined) {\n      writer.uint32(34).string(message.instrumentId);\n    }\n    if (message.tradeSource !== 0) {\n      writer.uint32(40).int32(message.tradeSource);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetLastTradesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetLastTradesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.tradeSource = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetLastTradesRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined,\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : undefined,\n      tradeSource: isSet(object.tradeSource) ? tradeSourceTypeFromJSON(object.tradeSource) : 0,\n    };\n  },\n\n  toJSON(message: GetLastTradesRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== undefined) {\n      obj.figi = message.figi;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.instrumentId !== undefined) {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.tradeSource !== 0) {\n      obj.tradeSource = tradeSourceTypeToJSON(message.tradeSource);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetLastTradesRequest>): GetLastTradesRequest {\n    return GetLastTradesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetLastTradesRequest>): GetLastTradesRequest {\n    const message = createBaseGetLastTradesRequest();\n    message.figi = object.figi ?? undefined;\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.instrumentId = object.instrumentId ?? undefined;\n    message.tradeSource = object.tradeSource ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetLastTradesResponse(): GetLastTradesResponse {\n  return { trades: [] };\n}\n\nexport const GetLastTradesResponse: MessageFns<GetLastTradesResponse> = {\n  encode(message: GetLastTradesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.trades) {\n      Trade.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetLastTradesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetLastTradesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.trades.push(Trade.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetLastTradesResponse {\n    return { trades: globalThis.Array.isArray(object?.trades) ? object.trades.map((e: any) => Trade.fromJSON(e)) : [] };\n  },\n\n  toJSON(message: GetLastTradesResponse): unknown {\n    const obj: any = {};\n    if (message.trades?.length) {\n      obj.trades = message.trades.map((e) => Trade.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetLastTradesResponse>): GetLastTradesResponse {\n    return GetLastTradesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetLastTradesResponse>): GetLastTradesResponse {\n    const message = createBaseGetLastTradesResponse();\n    message.trades = object.trades?.map((e) => Trade.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetMySubscriptions(): GetMySubscriptions {\n  return {};\n}\n\nexport const GetMySubscriptions: MessageFns<GetMySubscriptions> = {\n  encode(_: GetMySubscriptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetMySubscriptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetMySubscriptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): GetMySubscriptions {\n    return {};\n  },\n\n  toJSON(_: GetMySubscriptions): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetMySubscriptions>): GetMySubscriptions {\n    return GetMySubscriptions.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<GetMySubscriptions>): GetMySubscriptions {\n    const message = createBaseGetMySubscriptions();\n    return message;\n  },\n};\n\nfunction createBaseGetClosePricesRequest(): GetClosePricesRequest {\n  return { instruments: [], instrumentStatus: undefined };\n}\n\nexport const GetClosePricesRequest: MessageFns<GetClosePricesRequest> = {\n  encode(message: GetClosePricesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.instruments) {\n      InstrumentClosePriceRequest.encode(v!, writer.uint32(10).fork()).join();\n    }\n    if (message.instrumentStatus !== undefined) {\n      writer.uint32(72).int32(message.instrumentStatus);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetClosePricesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetClosePricesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instruments.push(InstrumentClosePriceRequest.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.instrumentStatus = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetClosePricesRequest {\n    return {\n      instruments: globalThis.Array.isArray(object?.instruments)\n        ? object.instruments.map((e: any) => InstrumentClosePriceRequest.fromJSON(e))\n        : [],\n      instrumentStatus: isSet(object.instrumentStatus) ? instrumentStatusFromJSON(object.instrumentStatus) : undefined,\n    };\n  },\n\n  toJSON(message: GetClosePricesRequest): unknown {\n    const obj: any = {};\n    if (message.instruments?.length) {\n      obj.instruments = message.instruments.map((e) => InstrumentClosePriceRequest.toJSON(e));\n    }\n    if (message.instrumentStatus !== undefined) {\n      obj.instrumentStatus = instrumentStatusToJSON(message.instrumentStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetClosePricesRequest>): GetClosePricesRequest {\n    return GetClosePricesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetClosePricesRequest>): GetClosePricesRequest {\n    const message = createBaseGetClosePricesRequest();\n    message.instruments = object.instruments?.map((e) => InstrumentClosePriceRequest.fromPartial(e)) || [];\n    message.instrumentStatus = object.instrumentStatus ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseInstrumentClosePriceRequest(): InstrumentClosePriceRequest {\n  return { instrumentId: \"\" };\n}\n\nexport const InstrumentClosePriceRequest: MessageFns<InstrumentClosePriceRequest> = {\n  encode(message: InstrumentClosePriceRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instrumentId !== \"\") {\n      writer.uint32(10).string(message.instrumentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InstrumentClosePriceRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInstrumentClosePriceRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InstrumentClosePriceRequest {\n    return { instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\" };\n  },\n\n  toJSON(message: InstrumentClosePriceRequest): unknown {\n    const obj: any = {};\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InstrumentClosePriceRequest>): InstrumentClosePriceRequest {\n    return InstrumentClosePriceRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InstrumentClosePriceRequest>): InstrumentClosePriceRequest {\n    const message = createBaseInstrumentClosePriceRequest();\n    message.instrumentId = object.instrumentId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetClosePricesResponse(): GetClosePricesResponse {\n  return { closePrices: [] };\n}\n\nexport const GetClosePricesResponse: MessageFns<GetClosePricesResponse> = {\n  encode(message: GetClosePricesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.closePrices) {\n      InstrumentClosePriceResponse.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetClosePricesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetClosePricesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.closePrices.push(InstrumentClosePriceResponse.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetClosePricesResponse {\n    return {\n      closePrices: globalThis.Array.isArray(object?.closePrices)\n        ? object.closePrices.map((e: any) => InstrumentClosePriceResponse.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetClosePricesResponse): unknown {\n    const obj: any = {};\n    if (message.closePrices?.length) {\n      obj.closePrices = message.closePrices.map((e) => InstrumentClosePriceResponse.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetClosePricesResponse>): GetClosePricesResponse {\n    return GetClosePricesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetClosePricesResponse>): GetClosePricesResponse {\n    const message = createBaseGetClosePricesResponse();\n    message.closePrices = object.closePrices?.map((e) => InstrumentClosePriceResponse.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseInstrumentClosePriceResponse(): InstrumentClosePriceResponse {\n  return { figi: \"\", instrumentUid: \"\", price: undefined, eveningSessionPrice: undefined, time: undefined };\n}\n\nexport const InstrumentClosePriceResponse: MessageFns<InstrumentClosePriceResponse> = {\n  encode(message: InstrumentClosePriceResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== \"\") {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(18).string(message.instrumentUid);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(90).fork()).join();\n    }\n    if (message.eveningSessionPrice !== undefined) {\n      Quotation.encode(message.eveningSessionPrice, writer.uint32(98).fork()).join();\n    }\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(170).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InstrumentClosePriceResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInstrumentClosePriceResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.eveningSessionPrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InstrumentClosePriceResponse {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      eveningSessionPrice: isSet(object.eveningSessionPrice)\n        ? Quotation.fromJSON(object.eveningSessionPrice)\n        : undefined,\n      time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined,\n    };\n  },\n\n  toJSON(message: InstrumentClosePriceResponse): unknown {\n    const obj: any = {};\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.eveningSessionPrice !== undefined) {\n      obj.eveningSessionPrice = Quotation.toJSON(message.eveningSessionPrice);\n    }\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InstrumentClosePriceResponse>): InstrumentClosePriceResponse {\n    return InstrumentClosePriceResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InstrumentClosePriceResponse>): InstrumentClosePriceResponse {\n    const message = createBaseInstrumentClosePriceResponse();\n    message.figi = object.figi ?? \"\";\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.eveningSessionPrice = (object.eveningSessionPrice !== undefined && object.eveningSessionPrice !== null)\n      ? Quotation.fromPartial(object.eveningSessionPrice)\n      : undefined;\n    message.time = object.time ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetTechAnalysisRequest(): GetTechAnalysisRequest {\n  return {\n    indicatorType: 0,\n    instrumentUid: \"\",\n    from: undefined,\n    to: undefined,\n    interval: 0,\n    typeOfPrice: 0,\n    length: 0,\n    deviation: undefined,\n    smoothing: undefined,\n  };\n}\n\nexport const GetTechAnalysisRequest: MessageFns<GetTechAnalysisRequest> = {\n  encode(message: GetTechAnalysisRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.indicatorType !== 0) {\n      writer.uint32(8).int32(message.indicatorType);\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(18).string(message.instrumentUid);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(26).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(34).fork()).join();\n    }\n    if (message.interval !== 0) {\n      writer.uint32(40).int32(message.interval);\n    }\n    if (message.typeOfPrice !== 0) {\n      writer.uint32(48).int32(message.typeOfPrice);\n    }\n    if (message.length !== 0) {\n      writer.uint32(56).int32(message.length);\n    }\n    if (message.deviation !== undefined) {\n      GetTechAnalysisRequest_Deviation.encode(message.deviation, writer.uint32(66).fork()).join();\n    }\n    if (message.smoothing !== undefined) {\n      GetTechAnalysisRequest_Smoothing.encode(message.smoothing, writer.uint32(74).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTechAnalysisRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTechAnalysisRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.indicatorType = reader.int32() as any;\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.interval = reader.int32() as any;\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.typeOfPrice = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.length = reader.int32();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.deviation = GetTechAnalysisRequest_Deviation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.smoothing = GetTechAnalysisRequest_Smoothing.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTechAnalysisRequest {\n    return {\n      indicatorType: isSet(object.indicatorType)\n        ? getTechAnalysisRequest_IndicatorTypeFromJSON(object.indicatorType)\n        : 0,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n      interval: isSet(object.interval) ? getTechAnalysisRequest_IndicatorIntervalFromJSON(object.interval) : 0,\n      typeOfPrice: isSet(object.typeOfPrice) ? getTechAnalysisRequest_TypeOfPriceFromJSON(object.typeOfPrice) : 0,\n      length: isSet(object.length) ? globalThis.Number(object.length) : 0,\n      deviation: isSet(object.deviation) ? GetTechAnalysisRequest_Deviation.fromJSON(object.deviation) : undefined,\n      smoothing: isSet(object.smoothing) ? GetTechAnalysisRequest_Smoothing.fromJSON(object.smoothing) : undefined,\n    };\n  },\n\n  toJSON(message: GetTechAnalysisRequest): unknown {\n    const obj: any = {};\n    if (message.indicatorType !== 0) {\n      obj.indicatorType = getTechAnalysisRequest_IndicatorTypeToJSON(message.indicatorType);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    if (message.interval !== 0) {\n      obj.interval = getTechAnalysisRequest_IndicatorIntervalToJSON(message.interval);\n    }\n    if (message.typeOfPrice !== 0) {\n      obj.typeOfPrice = getTechAnalysisRequest_TypeOfPriceToJSON(message.typeOfPrice);\n    }\n    if (message.length !== 0) {\n      obj.length = Math.round(message.length);\n    }\n    if (message.deviation !== undefined) {\n      obj.deviation = GetTechAnalysisRequest_Deviation.toJSON(message.deviation);\n    }\n    if (message.smoothing !== undefined) {\n      obj.smoothing = GetTechAnalysisRequest_Smoothing.toJSON(message.smoothing);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTechAnalysisRequest>): GetTechAnalysisRequest {\n    return GetTechAnalysisRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTechAnalysisRequest>): GetTechAnalysisRequest {\n    const message = createBaseGetTechAnalysisRequest();\n    message.indicatorType = object.indicatorType ?? 0;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    message.interval = object.interval ?? 0;\n    message.typeOfPrice = object.typeOfPrice ?? 0;\n    message.length = object.length ?? 0;\n    message.deviation = (object.deviation !== undefined && object.deviation !== null)\n      ? GetTechAnalysisRequest_Deviation.fromPartial(object.deviation)\n      : undefined;\n    message.smoothing = (object.smoothing !== undefined && object.smoothing !== null)\n      ? GetTechAnalysisRequest_Smoothing.fromPartial(object.smoothing)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetTechAnalysisRequest_Smoothing(): GetTechAnalysisRequest_Smoothing {\n  return { fastLength: 0, slowLength: 0, signalSmoothing: 0 };\n}\n\nexport const GetTechAnalysisRequest_Smoothing: MessageFns<GetTechAnalysisRequest_Smoothing> = {\n  encode(message: GetTechAnalysisRequest_Smoothing, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.fastLength !== 0) {\n      writer.uint32(8).int32(message.fastLength);\n    }\n    if (message.slowLength !== 0) {\n      writer.uint32(16).int32(message.slowLength);\n    }\n    if (message.signalSmoothing !== 0) {\n      writer.uint32(24).int32(message.signalSmoothing);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTechAnalysisRequest_Smoothing {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTechAnalysisRequest_Smoothing();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.fastLength = reader.int32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.slowLength = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.signalSmoothing = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTechAnalysisRequest_Smoothing {\n    return {\n      fastLength: isSet(object.fastLength) ? globalThis.Number(object.fastLength) : 0,\n      slowLength: isSet(object.slowLength) ? globalThis.Number(object.slowLength) : 0,\n      signalSmoothing: isSet(object.signalSmoothing) ? globalThis.Number(object.signalSmoothing) : 0,\n    };\n  },\n\n  toJSON(message: GetTechAnalysisRequest_Smoothing): unknown {\n    const obj: any = {};\n    if (message.fastLength !== 0) {\n      obj.fastLength = Math.round(message.fastLength);\n    }\n    if (message.slowLength !== 0) {\n      obj.slowLength = Math.round(message.slowLength);\n    }\n    if (message.signalSmoothing !== 0) {\n      obj.signalSmoothing = Math.round(message.signalSmoothing);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTechAnalysisRequest_Smoothing>): GetTechAnalysisRequest_Smoothing {\n    return GetTechAnalysisRequest_Smoothing.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTechAnalysisRequest_Smoothing>): GetTechAnalysisRequest_Smoothing {\n    const message = createBaseGetTechAnalysisRequest_Smoothing();\n    message.fastLength = object.fastLength ?? 0;\n    message.slowLength = object.slowLength ?? 0;\n    message.signalSmoothing = object.signalSmoothing ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetTechAnalysisRequest_Deviation(): GetTechAnalysisRequest_Deviation {\n  return { deviationMultiplier: undefined };\n}\n\nexport const GetTechAnalysisRequest_Deviation: MessageFns<GetTechAnalysisRequest_Deviation> = {\n  encode(message: GetTechAnalysisRequest_Deviation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.deviationMultiplier !== undefined) {\n      Quotation.encode(message.deviationMultiplier, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTechAnalysisRequest_Deviation {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTechAnalysisRequest_Deviation();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.deviationMultiplier = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTechAnalysisRequest_Deviation {\n    return {\n      deviationMultiplier: isSet(object.deviationMultiplier)\n        ? Quotation.fromJSON(object.deviationMultiplier)\n        : undefined,\n    };\n  },\n\n  toJSON(message: GetTechAnalysisRequest_Deviation): unknown {\n    const obj: any = {};\n    if (message.deviationMultiplier !== undefined) {\n      obj.deviationMultiplier = Quotation.toJSON(message.deviationMultiplier);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTechAnalysisRequest_Deviation>): GetTechAnalysisRequest_Deviation {\n    return GetTechAnalysisRequest_Deviation.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTechAnalysisRequest_Deviation>): GetTechAnalysisRequest_Deviation {\n    const message = createBaseGetTechAnalysisRequest_Deviation();\n    message.deviationMultiplier = (object.deviationMultiplier !== undefined && object.deviationMultiplier !== null)\n      ? Quotation.fromPartial(object.deviationMultiplier)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetTechAnalysisResponse(): GetTechAnalysisResponse {\n  return { technicalIndicators: [] };\n}\n\nexport const GetTechAnalysisResponse: MessageFns<GetTechAnalysisResponse> = {\n  encode(message: GetTechAnalysisResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.technicalIndicators) {\n      GetTechAnalysisResponse_TechAnalysisItem.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTechAnalysisResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTechAnalysisResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.technicalIndicators.push(GetTechAnalysisResponse_TechAnalysisItem.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTechAnalysisResponse {\n    return {\n      technicalIndicators: globalThis.Array.isArray(object?.technicalIndicators)\n        ? object.technicalIndicators.map((e: any) => GetTechAnalysisResponse_TechAnalysisItem.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetTechAnalysisResponse): unknown {\n    const obj: any = {};\n    if (message.technicalIndicators?.length) {\n      obj.technicalIndicators = message.technicalIndicators.map((e) =>\n        GetTechAnalysisResponse_TechAnalysisItem.toJSON(e)\n      );\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTechAnalysisResponse>): GetTechAnalysisResponse {\n    return GetTechAnalysisResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTechAnalysisResponse>): GetTechAnalysisResponse {\n    const message = createBaseGetTechAnalysisResponse();\n    message.technicalIndicators =\n      object.technicalIndicators?.map((e) => GetTechAnalysisResponse_TechAnalysisItem.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseGetTechAnalysisResponse_TechAnalysisItem(): GetTechAnalysisResponse_TechAnalysisItem {\n  return {\n    timestamp: undefined,\n    middleBand: undefined,\n    upperBand: undefined,\n    lowerBand: undefined,\n    signal: undefined,\n    macd: undefined,\n  };\n}\n\nexport const GetTechAnalysisResponse_TechAnalysisItem: MessageFns<GetTechAnalysisResponse_TechAnalysisItem> = {\n  encode(message: GetTechAnalysisResponse_TechAnalysisItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.timestamp !== undefined) {\n      Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(10).fork()).join();\n    }\n    if (message.middleBand !== undefined) {\n      Quotation.encode(message.middleBand, writer.uint32(18).fork()).join();\n    }\n    if (message.upperBand !== undefined) {\n      Quotation.encode(message.upperBand, writer.uint32(26).fork()).join();\n    }\n    if (message.lowerBand !== undefined) {\n      Quotation.encode(message.lowerBand, writer.uint32(34).fork()).join();\n    }\n    if (message.signal !== undefined) {\n      Quotation.encode(message.signal, writer.uint32(42).fork()).join();\n    }\n    if (message.macd !== undefined) {\n      Quotation.encode(message.macd, writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTechAnalysisResponse_TechAnalysisItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTechAnalysisResponse_TechAnalysisItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.middleBand = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.upperBand = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.lowerBand = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.signal = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.macd = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTechAnalysisResponse_TechAnalysisItem {\n    return {\n      timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,\n      middleBand: isSet(object.middleBand) ? Quotation.fromJSON(object.middleBand) : undefined,\n      upperBand: isSet(object.upperBand) ? Quotation.fromJSON(object.upperBand) : undefined,\n      lowerBand: isSet(object.lowerBand) ? Quotation.fromJSON(object.lowerBand) : undefined,\n      signal: isSet(object.signal) ? Quotation.fromJSON(object.signal) : undefined,\n      macd: isSet(object.macd) ? Quotation.fromJSON(object.macd) : undefined,\n    };\n  },\n\n  toJSON(message: GetTechAnalysisResponse_TechAnalysisItem): unknown {\n    const obj: any = {};\n    if (message.timestamp !== undefined) {\n      obj.timestamp = message.timestamp.toISOString();\n    }\n    if (message.middleBand !== undefined) {\n      obj.middleBand = Quotation.toJSON(message.middleBand);\n    }\n    if (message.upperBand !== undefined) {\n      obj.upperBand = Quotation.toJSON(message.upperBand);\n    }\n    if (message.lowerBand !== undefined) {\n      obj.lowerBand = Quotation.toJSON(message.lowerBand);\n    }\n    if (message.signal !== undefined) {\n      obj.signal = Quotation.toJSON(message.signal);\n    }\n    if (message.macd !== undefined) {\n      obj.macd = Quotation.toJSON(message.macd);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTechAnalysisResponse_TechAnalysisItem>): GetTechAnalysisResponse_TechAnalysisItem {\n    return GetTechAnalysisResponse_TechAnalysisItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTechAnalysisResponse_TechAnalysisItem>): GetTechAnalysisResponse_TechAnalysisItem {\n    const message = createBaseGetTechAnalysisResponse_TechAnalysisItem();\n    message.timestamp = object.timestamp ?? undefined;\n    message.middleBand = (object.middleBand !== undefined && object.middleBand !== null)\n      ? Quotation.fromPartial(object.middleBand)\n      : undefined;\n    message.upperBand = (object.upperBand !== undefined && object.upperBand !== null)\n      ? Quotation.fromPartial(object.upperBand)\n      : undefined;\n    message.lowerBand = (object.lowerBand !== undefined && object.lowerBand !== null)\n      ? Quotation.fromPartial(object.lowerBand)\n      : undefined;\n    message.signal = (object.signal !== undefined && object.signal !== null)\n      ? Quotation.fromPartial(object.signal)\n      : undefined;\n    message.macd = (object.macd !== undefined && object.macd !== null) ? Quotation.fromPartial(object.macd) : undefined;\n    return message;\n  },\n};\n\n/** Сервис для получения биржевой информации:</br> 1. Свечи.</br> 2. Стаканы.</br> 3. Торговые статусы.</br> 4. Лента сделок. */\nexport type MarketDataServiceDefinition = typeof MarketDataServiceDefinition;\nexport const MarketDataServiceDefinition = {\n  name: \"MarketDataService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.MarketDataService\",\n  methods: {\n    /** Запросить исторические свечи по инструменту. */\n    getCandles: {\n      name: \"GetCandles\",\n      requestType: GetCandlesRequest,\n      requestStream: false,\n      responseType: GetCandlesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Запросить цены последних сделок по инструментам. */\n    getLastPrices: {\n      name: \"GetLastPrices\",\n      requestType: GetLastPricesRequest,\n      requestStream: false,\n      responseType: GetLastPricesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить стакан по инструменту. */\n    getOrderBook: {\n      name: \"GetOrderBook\",\n      requestType: GetOrderBookRequest,\n      requestStream: false,\n      responseType: GetOrderBookResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Запросить статус торгов по инструментам. */\n    getTradingStatus: {\n      name: \"GetTradingStatus\",\n      requestType: GetTradingStatusRequest,\n      requestStream: false,\n      responseType: GetTradingStatusResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Запросить статус торгов по инструментам. */\n    getTradingStatuses: {\n      name: \"GetTradingStatuses\",\n      requestType: GetTradingStatusesRequest,\n      requestStream: false,\n      responseType: GetTradingStatusesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Запросить обезличенные сделки за последний час. */\n    getLastTrades: {\n      name: \"GetLastTrades\",\n      requestType: GetLastTradesRequest,\n      requestStream: false,\n      responseType: GetLastTradesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Запросить цены закрытия торговой сессии по инструментам. */\n    getClosePrices: {\n      name: \"GetClosePrices\",\n      requestType: GetClosePricesRequest,\n      requestStream: false,\n      responseType: GetClosePricesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить технические индикаторы по инструменту. */\n    getTechAnalysis: {\n      name: \"GetTechAnalysis\",\n      requestType: GetTechAnalysisRequest,\n      requestStream: false,\n      responseType: GetTechAnalysisResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface MarketDataServiceImplementation<CallContextExt = {}> {\n  /** Запросить исторические свечи по инструменту. */\n  getCandles(\n    request: GetCandlesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetCandlesResponse>>;\n  /** Запросить цены последних сделок по инструментам. */\n  getLastPrices(\n    request: GetLastPricesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetLastPricesResponse>>;\n  /** Получить стакан по инструменту. */\n  getOrderBook(\n    request: GetOrderBookRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetOrderBookResponse>>;\n  /** Запросить статус торгов по инструментам. */\n  getTradingStatus(\n    request: GetTradingStatusRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetTradingStatusResponse>>;\n  /** Запросить статус торгов по инструментам. */\n  getTradingStatuses(\n    request: GetTradingStatusesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetTradingStatusesResponse>>;\n  /** Запросить обезличенные сделки за последний час. */\n  getLastTrades(\n    request: GetLastTradesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetLastTradesResponse>>;\n  /** Запросить цены закрытия торговой сессии по инструментам. */\n  getClosePrices(\n    request: GetClosePricesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetClosePricesResponse>>;\n  /** Получить технические индикаторы по инструменту. */\n  getTechAnalysis(\n    request: GetTechAnalysisRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetTechAnalysisResponse>>;\n}\n\nexport interface MarketDataServiceClient<CallOptionsExt = {}> {\n  /** Запросить исторические свечи по инструменту. */\n  getCandles(\n    request: DeepPartial<GetCandlesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetCandlesResponse>;\n  /** Запросить цены последних сделок по инструментам. */\n  getLastPrices(\n    request: DeepPartial<GetLastPricesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetLastPricesResponse>;\n  /** Получить стакан по инструменту. */\n  getOrderBook(\n    request: DeepPartial<GetOrderBookRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetOrderBookResponse>;\n  /** Запросить статус торгов по инструментам. */\n  getTradingStatus(\n    request: DeepPartial<GetTradingStatusRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetTradingStatusResponse>;\n  /** Запросить статус торгов по инструментам. */\n  getTradingStatuses(\n    request: DeepPartial<GetTradingStatusesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetTradingStatusesResponse>;\n  /** Запросить обезличенные сделки за последний час. */\n  getLastTrades(\n    request: DeepPartial<GetLastTradesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetLastTradesResponse>;\n  /** Запросить цены закрытия торговой сессии по инструментам. */\n  getClosePrices(\n    request: DeepPartial<GetClosePricesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetClosePricesResponse>;\n  /** Получить технические индикаторы по инструменту. */\n  getTechAnalysis(\n    request: DeepPartial<GetTechAnalysisRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetTechAnalysisResponse>;\n}\n\nexport type MarketDataStreamServiceDefinition = typeof MarketDataStreamServiceDefinition;\nexport const MarketDataStreamServiceDefinition = {\n  name: \"MarketDataStreamService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.MarketDataStreamService\",\n  methods: {\n    /** Bidirectional-стрим предоставления биржевой информации. */\n    marketDataStream: {\n      name: \"MarketDataStream\",\n      requestType: MarketDataRequest,\n      requestStream: true,\n      responseType: MarketDataResponse,\n      responseStream: true,\n      options: {},\n    },\n    /** Server-side стрим предоставления биржевой информации. */\n    marketDataServerSideStream: {\n      name: \"MarketDataServerSideStream\",\n      requestType: MarketDataServerSideStreamRequest,\n      requestStream: false,\n      responseType: MarketDataResponse,\n      responseStream: true,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface MarketDataStreamServiceImplementation<CallContextExt = {}> {\n  /** Bidirectional-стрим предоставления биржевой информации. */\n  marketDataStream(\n    request: AsyncIterable<MarketDataRequest>,\n    context: CallContext & CallContextExt,\n  ): ServerStreamingMethodResult<DeepPartial<MarketDataResponse>>;\n  /** Server-side стрим предоставления биржевой информации. */\n  marketDataServerSideStream(\n    request: MarketDataServerSideStreamRequest,\n    context: CallContext & CallContextExt,\n  ): ServerStreamingMethodResult<DeepPartial<MarketDataResponse>>;\n}\n\nexport interface MarketDataStreamServiceClient<CallOptionsExt = {}> {\n  /** Bidirectional-стрим предоставления биржевой информации. */\n  marketDataStream(\n    request: AsyncIterable<DeepPartial<MarketDataRequest>>,\n    options?: CallOptions & CallOptionsExt,\n  ): AsyncIterable<MarketDataResponse>;\n  /** Server-side стрим предоставления биржевой информации. */\n  marketDataServerSideStream(\n    request: DeepPartial<MarketDataServerSideStreamRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): AsyncIterable<MarketDataResponse>;\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\ntype ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void> };\n\ninterface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: stoporders.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport { MoneyValue, PriceType, priceTypeFromJSON, priceTypeToJSON, Quotation, ResponseMetadata } from \"./common\";\nimport { Timestamp } from \"./google/protobuf/timestamp\";\n\n/** Направление сделки стоп-заявки. */\nexport enum StopOrderDirection {\n  /** STOP_ORDER_DIRECTION_UNSPECIFIED - Значение не указано. */\n  STOP_ORDER_DIRECTION_UNSPECIFIED = 0,\n  /** STOP_ORDER_DIRECTION_BUY - Покупка. */\n  STOP_ORDER_DIRECTION_BUY = 1,\n  /** STOP_ORDER_DIRECTION_SELL - Продажа. */\n  STOP_ORDER_DIRECTION_SELL = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function stopOrderDirectionFromJSON(object: any): StopOrderDirection {\n  switch (object) {\n    case 0:\n    case \"STOP_ORDER_DIRECTION_UNSPECIFIED\":\n      return StopOrderDirection.STOP_ORDER_DIRECTION_UNSPECIFIED;\n    case 1:\n    case \"STOP_ORDER_DIRECTION_BUY\":\n      return StopOrderDirection.STOP_ORDER_DIRECTION_BUY;\n    case 2:\n    case \"STOP_ORDER_DIRECTION_SELL\":\n      return StopOrderDirection.STOP_ORDER_DIRECTION_SELL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return StopOrderDirection.UNRECOGNIZED;\n  }\n}\n\nexport function stopOrderDirectionToJSON(object: StopOrderDirection): string {\n  switch (object) {\n    case StopOrderDirection.STOP_ORDER_DIRECTION_UNSPECIFIED:\n      return \"STOP_ORDER_DIRECTION_UNSPECIFIED\";\n    case StopOrderDirection.STOP_ORDER_DIRECTION_BUY:\n      return \"STOP_ORDER_DIRECTION_BUY\";\n    case StopOrderDirection.STOP_ORDER_DIRECTION_SELL:\n      return \"STOP_ORDER_DIRECTION_SELL\";\n    case StopOrderDirection.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип экспирации стоп-заявке. */\nexport enum StopOrderExpirationType {\n  /** STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED - Значение не указано. */\n  STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED = 0,\n  /** STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL - Действительно до отмены. */\n  STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL = 1,\n  /** STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE - Действительно до даты снятия. */\n  STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function stopOrderExpirationTypeFromJSON(object: any): StopOrderExpirationType {\n  switch (object) {\n    case 0:\n    case \"STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED\":\n      return StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED;\n    case 1:\n    case \"STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL\":\n      return StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL;\n    case 2:\n    case \"STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE\":\n      return StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return StopOrderExpirationType.UNRECOGNIZED;\n  }\n}\n\nexport function stopOrderExpirationTypeToJSON(object: StopOrderExpirationType): string {\n  switch (object) {\n    case StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED:\n      return \"STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED\";\n    case StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL:\n      return \"STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL\";\n    case StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE:\n      return \"STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE\";\n    case StopOrderExpirationType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип стоп-заявки. */\nexport enum StopOrderType {\n  /** STOP_ORDER_TYPE_UNSPECIFIED - Значение не указано. */\n  STOP_ORDER_TYPE_UNSPECIFIED = 0,\n  /** STOP_ORDER_TYPE_TAKE_PROFIT - `Take-profit`-заявка. */\n  STOP_ORDER_TYPE_TAKE_PROFIT = 1,\n  /** STOP_ORDER_TYPE_STOP_LOSS - `Stop-loss`-заявка. */\n  STOP_ORDER_TYPE_STOP_LOSS = 2,\n  /** STOP_ORDER_TYPE_STOP_LIMIT - `Stop-limit`-заявка. */\n  STOP_ORDER_TYPE_STOP_LIMIT = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function stopOrderTypeFromJSON(object: any): StopOrderType {\n  switch (object) {\n    case 0:\n    case \"STOP_ORDER_TYPE_UNSPECIFIED\":\n      return StopOrderType.STOP_ORDER_TYPE_UNSPECIFIED;\n    case 1:\n    case \"STOP_ORDER_TYPE_TAKE_PROFIT\":\n      return StopOrderType.STOP_ORDER_TYPE_TAKE_PROFIT;\n    case 2:\n    case \"STOP_ORDER_TYPE_STOP_LOSS\":\n      return StopOrderType.STOP_ORDER_TYPE_STOP_LOSS;\n    case 3:\n    case \"STOP_ORDER_TYPE_STOP_LIMIT\":\n      return StopOrderType.STOP_ORDER_TYPE_STOP_LIMIT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return StopOrderType.UNRECOGNIZED;\n  }\n}\n\nexport function stopOrderTypeToJSON(object: StopOrderType): string {\n  switch (object) {\n    case StopOrderType.STOP_ORDER_TYPE_UNSPECIFIED:\n      return \"STOP_ORDER_TYPE_UNSPECIFIED\";\n    case StopOrderType.STOP_ORDER_TYPE_TAKE_PROFIT:\n      return \"STOP_ORDER_TYPE_TAKE_PROFIT\";\n    case StopOrderType.STOP_ORDER_TYPE_STOP_LOSS:\n      return \"STOP_ORDER_TYPE_STOP_LOSS\";\n    case StopOrderType.STOP_ORDER_TYPE_STOP_LIMIT:\n      return \"STOP_ORDER_TYPE_STOP_LIMIT\";\n    case StopOrderType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Статус стоп-заяки. */\nexport enum StopOrderStatusOption {\n  /** STOP_ORDER_STATUS_UNSPECIFIED - Значение не указано. */\n  STOP_ORDER_STATUS_UNSPECIFIED = 0,\n  /** STOP_ORDER_STATUS_ALL - Все заявки. */\n  STOP_ORDER_STATUS_ALL = 1,\n  /** STOP_ORDER_STATUS_ACTIVE - Активные заявки. */\n  STOP_ORDER_STATUS_ACTIVE = 2,\n  /** STOP_ORDER_STATUS_EXECUTED - Исполненные заявки. */\n  STOP_ORDER_STATUS_EXECUTED = 3,\n  /** STOP_ORDER_STATUS_CANCELED - Отменённые заявки. */\n  STOP_ORDER_STATUS_CANCELED = 4,\n  /** STOP_ORDER_STATUS_EXPIRED - Истёкшие заявки. */\n  STOP_ORDER_STATUS_EXPIRED = 5,\n  UNRECOGNIZED = -1,\n}\n\nexport function stopOrderStatusOptionFromJSON(object: any): StopOrderStatusOption {\n  switch (object) {\n    case 0:\n    case \"STOP_ORDER_STATUS_UNSPECIFIED\":\n      return StopOrderStatusOption.STOP_ORDER_STATUS_UNSPECIFIED;\n    case 1:\n    case \"STOP_ORDER_STATUS_ALL\":\n      return StopOrderStatusOption.STOP_ORDER_STATUS_ALL;\n    case 2:\n    case \"STOP_ORDER_STATUS_ACTIVE\":\n      return StopOrderStatusOption.STOP_ORDER_STATUS_ACTIVE;\n    case 3:\n    case \"STOP_ORDER_STATUS_EXECUTED\":\n      return StopOrderStatusOption.STOP_ORDER_STATUS_EXECUTED;\n    case 4:\n    case \"STOP_ORDER_STATUS_CANCELED\":\n      return StopOrderStatusOption.STOP_ORDER_STATUS_CANCELED;\n    case 5:\n    case \"STOP_ORDER_STATUS_EXPIRED\":\n      return StopOrderStatusOption.STOP_ORDER_STATUS_EXPIRED;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return StopOrderStatusOption.UNRECOGNIZED;\n  }\n}\n\nexport function stopOrderStatusOptionToJSON(object: StopOrderStatusOption): string {\n  switch (object) {\n    case StopOrderStatusOption.STOP_ORDER_STATUS_UNSPECIFIED:\n      return \"STOP_ORDER_STATUS_UNSPECIFIED\";\n    case StopOrderStatusOption.STOP_ORDER_STATUS_ALL:\n      return \"STOP_ORDER_STATUS_ALL\";\n    case StopOrderStatusOption.STOP_ORDER_STATUS_ACTIVE:\n      return \"STOP_ORDER_STATUS_ACTIVE\";\n    case StopOrderStatusOption.STOP_ORDER_STATUS_EXECUTED:\n      return \"STOP_ORDER_STATUS_EXECUTED\";\n    case StopOrderStatusOption.STOP_ORDER_STATUS_CANCELED:\n      return \"STOP_ORDER_STATUS_CANCELED\";\n    case StopOrderStatusOption.STOP_ORDER_STATUS_EXPIRED:\n      return \"STOP_ORDER_STATUS_EXPIRED\";\n    case StopOrderStatusOption.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип выставляемой заявки. */\nexport enum ExchangeOrderType {\n  /** EXCHANGE_ORDER_TYPE_UNSPECIFIED - Значение не указано. */\n  EXCHANGE_ORDER_TYPE_UNSPECIFIED = 0,\n  /** EXCHANGE_ORDER_TYPE_MARKET - Заявка по рыночной цене. */\n  EXCHANGE_ORDER_TYPE_MARKET = 1,\n  /** EXCHANGE_ORDER_TYPE_LIMIT - Лимитная заявка. */\n  EXCHANGE_ORDER_TYPE_LIMIT = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function exchangeOrderTypeFromJSON(object: any): ExchangeOrderType {\n  switch (object) {\n    case 0:\n    case \"EXCHANGE_ORDER_TYPE_UNSPECIFIED\":\n      return ExchangeOrderType.EXCHANGE_ORDER_TYPE_UNSPECIFIED;\n    case 1:\n    case \"EXCHANGE_ORDER_TYPE_MARKET\":\n      return ExchangeOrderType.EXCHANGE_ORDER_TYPE_MARKET;\n    case 2:\n    case \"EXCHANGE_ORDER_TYPE_LIMIT\":\n      return ExchangeOrderType.EXCHANGE_ORDER_TYPE_LIMIT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return ExchangeOrderType.UNRECOGNIZED;\n  }\n}\n\nexport function exchangeOrderTypeToJSON(object: ExchangeOrderType): string {\n  switch (object) {\n    case ExchangeOrderType.EXCHANGE_ORDER_TYPE_UNSPECIFIED:\n      return \"EXCHANGE_ORDER_TYPE_UNSPECIFIED\";\n    case ExchangeOrderType.EXCHANGE_ORDER_TYPE_MARKET:\n      return \"EXCHANGE_ORDER_TYPE_MARKET\";\n    case ExchangeOrderType.EXCHANGE_ORDER_TYPE_LIMIT:\n      return \"EXCHANGE_ORDER_TYPE_LIMIT\";\n    case ExchangeOrderType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип TakeProfit-заявки. */\nexport enum TakeProfitType {\n  /** TAKE_PROFIT_TYPE_UNSPECIFIED - Значение не указано. */\n  TAKE_PROFIT_TYPE_UNSPECIFIED = 0,\n  /** TAKE_PROFIT_TYPE_REGULAR - Обычная заявка, значение по умолчанию. */\n  TAKE_PROFIT_TYPE_REGULAR = 1,\n  /** TAKE_PROFIT_TYPE_TRAILING - Трейлинг-стоп. */\n  TAKE_PROFIT_TYPE_TRAILING = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function takeProfitTypeFromJSON(object: any): TakeProfitType {\n  switch (object) {\n    case 0:\n    case \"TAKE_PROFIT_TYPE_UNSPECIFIED\":\n      return TakeProfitType.TAKE_PROFIT_TYPE_UNSPECIFIED;\n    case 1:\n    case \"TAKE_PROFIT_TYPE_REGULAR\":\n      return TakeProfitType.TAKE_PROFIT_TYPE_REGULAR;\n    case 2:\n    case \"TAKE_PROFIT_TYPE_TRAILING\":\n      return TakeProfitType.TAKE_PROFIT_TYPE_TRAILING;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TakeProfitType.UNRECOGNIZED;\n  }\n}\n\nexport function takeProfitTypeToJSON(object: TakeProfitType): string {\n  switch (object) {\n    case TakeProfitType.TAKE_PROFIT_TYPE_UNSPECIFIED:\n      return \"TAKE_PROFIT_TYPE_UNSPECIFIED\";\n    case TakeProfitType.TAKE_PROFIT_TYPE_REGULAR:\n      return \"TAKE_PROFIT_TYPE_REGULAR\";\n    case TakeProfitType.TAKE_PROFIT_TYPE_TRAILING:\n      return \"TAKE_PROFIT_TYPE_TRAILING\";\n    case TakeProfitType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Тип параметров значений трейлинг-стопа. */\nexport enum TrailingValueType {\n  /** TRAILING_VALUE_UNSPECIFIED - Значение не указано. */\n  TRAILING_VALUE_UNSPECIFIED = 0,\n  /** TRAILING_VALUE_ABSOLUTE - Абсолютное значение в единицах цены. */\n  TRAILING_VALUE_ABSOLUTE = 1,\n  /** TRAILING_VALUE_RELATIVE - Относительное значение в процентах. */\n  TRAILING_VALUE_RELATIVE = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function trailingValueTypeFromJSON(object: any): TrailingValueType {\n  switch (object) {\n    case 0:\n    case \"TRAILING_VALUE_UNSPECIFIED\":\n      return TrailingValueType.TRAILING_VALUE_UNSPECIFIED;\n    case 1:\n    case \"TRAILING_VALUE_ABSOLUTE\":\n      return TrailingValueType.TRAILING_VALUE_ABSOLUTE;\n    case 2:\n    case \"TRAILING_VALUE_RELATIVE\":\n      return TrailingValueType.TRAILING_VALUE_RELATIVE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TrailingValueType.UNRECOGNIZED;\n  }\n}\n\nexport function trailingValueTypeToJSON(object: TrailingValueType): string {\n  switch (object) {\n    case TrailingValueType.TRAILING_VALUE_UNSPECIFIED:\n      return \"TRAILING_VALUE_UNSPECIFIED\";\n    case TrailingValueType.TRAILING_VALUE_ABSOLUTE:\n      return \"TRAILING_VALUE_ABSOLUTE\";\n    case TrailingValueType.TRAILING_VALUE_RELATIVE:\n      return \"TRAILING_VALUE_RELATIVE\";\n    case TrailingValueType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Статус трейлинг-стопа. */\nexport enum TrailingStopStatus {\n  /** TRAILING_STOP_UNSPECIFIED - Значение не указано. */\n  TRAILING_STOP_UNSPECIFIED = 0,\n  /** TRAILING_STOP_ACTIVE - Активный. */\n  TRAILING_STOP_ACTIVE = 1,\n  /** TRAILING_STOP_ACTIVATED - Активированный. */\n  TRAILING_STOP_ACTIVATED = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function trailingStopStatusFromJSON(object: any): TrailingStopStatus {\n  switch (object) {\n    case 0:\n    case \"TRAILING_STOP_UNSPECIFIED\":\n      return TrailingStopStatus.TRAILING_STOP_UNSPECIFIED;\n    case 1:\n    case \"TRAILING_STOP_ACTIVE\":\n      return TrailingStopStatus.TRAILING_STOP_ACTIVE;\n    case 2:\n    case \"TRAILING_STOP_ACTIVATED\":\n      return TrailingStopStatus.TRAILING_STOP_ACTIVATED;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TrailingStopStatus.UNRECOGNIZED;\n  }\n}\n\nexport function trailingStopStatusToJSON(object: TrailingStopStatus): string {\n  switch (object) {\n    case TrailingStopStatus.TRAILING_STOP_UNSPECIFIED:\n      return \"TRAILING_STOP_UNSPECIFIED\";\n    case TrailingStopStatus.TRAILING_STOP_ACTIVE:\n      return \"TRAILING_STOP_ACTIVE\";\n    case TrailingStopStatus.TRAILING_STOP_ACTIVATED:\n      return \"TRAILING_STOP_ACTIVATED\";\n    case TrailingStopStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Запрос выставления стоп-заявки. */\nexport interface PostStopOrderRequest {\n  /**\n   * Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.\n   *\n   * @deprecated\n   */\n  figi?:\n    | string\n    | undefined;\n  /** Количество лотов. */\n  quantity: number;\n  /** Цена за 1 инструмент биржевой заявки, которая будет выставлена при срабатывании по достижению `stop_price`. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */\n  price?:\n    | Quotation\n    | undefined;\n  /** Стоп-цена заявки за 1 инструмент. При достижении стоп-цены происходит активация стоп-заявки, в результате чего выставляется биржевая заявка. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */\n  stopPrice?:\n    | Quotation\n    | undefined;\n  /** Направление операции. */\n  direction: StopOrderDirection;\n  /** Номер счёта. */\n  accountId: string;\n  /** Тип экспирации заявки. */\n  expirationType: StopOrderExpirationType;\n  /** Тип заявки. */\n  stopOrderType: StopOrderType;\n  /** Дата и время окончания действия стоп-заявки по UTC. Для `ExpirationType = GoodTillDate` заполнение обязательно, для `GoodTillCancel` игнорируется. */\n  expireDate?:\n    | Date\n    | undefined;\n  /** Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`. */\n  instrumentId: string;\n  /** Тип дочерней биржевой заявки для тейкпрофита. */\n  exchangeOrderType: ExchangeOrderType;\n  /** Подтип стоп-заявки — `TakeProfit`. */\n  takeProfitType: TakeProfitType;\n  /** Массив с параметрами трейлинг-стопа. */\n  trailingData:\n    | PostStopOrderRequest_TrailingData\n    | undefined;\n  /** Тип цены. */\n  priceType: PriceType;\n  /** Идентификатор запроса выставления поручения для целей идемпотентности в формате `UID`. Максимальная длина — 36 символов. */\n  orderId: string;\n}\n\nexport interface PostStopOrderRequest_TrailingData {\n  /** Отступ. */\n  indent:\n    | Quotation\n    | undefined;\n  /** Тип величины отступа. */\n  indentType: TrailingValueType;\n  /** Размер защитного спреда. */\n  spread:\n    | Quotation\n    | undefined;\n  /** Тип величины защитного спреда. */\n  spreadType: TrailingValueType;\n}\n\n/** Результат выставления стоп-заявки. */\nexport interface PostStopOrderResponse {\n  /** Уникальный идентификатор стоп-заявки. */\n  stopOrderId: string;\n  /** Идентификатор ключа идемпотентности, переданный клиентом, в формате `UID`. Максимальная длина 36 — символов. */\n  orderRequestId: string;\n  /** Метадата. */\n  responseMetadata: ResponseMetadata | undefined;\n}\n\n/** Запрос получения списка активных стоп-заявок. */\nexport interface GetStopOrdersRequest {\n  /** Идентификатор счёта клиента. */\n  accountId: string;\n  /** Статус заявок. */\n  status: StopOrderStatusOption;\n  /** Левая граница. */\n  from:\n    | Date\n    | undefined;\n  /** Правая граница. */\n  to: Date | undefined;\n}\n\n/** Список активных стоп-заявок. */\nexport interface GetStopOrdersResponse {\n  /** Массив стоп-заявок по счёту. */\n  stopOrders: StopOrder[];\n}\n\n/** Запрос отмены выставленной стоп-заявки. */\nexport interface CancelStopOrderRequest {\n  /** Идентификатор счёта клиента. */\n  accountId: string;\n  /** Уникальный идентификатор стоп-заявки. */\n  stopOrderId: string;\n}\n\n/** Результат отмены выставленной стоп-заявки. */\nexport interface CancelStopOrderResponse {\n  /** Время отмены заявки по UTC. */\n  time: Date | undefined;\n}\n\n/** Информация о стоп-заявке. */\nexport interface StopOrder {\n  /** Уникальный идентификатор стоп-заявки. */\n  stopOrderId: string;\n  /** Запрошено лотов. */\n  lotsRequested: number;\n  /** FIGI-идентификатор инструмента. */\n  figi: string;\n  /** Направление операции. */\n  direction: StopOrderDirection;\n  /** Валюта стоп-заявки. */\n  currency: string;\n  /** Тип стоп-заявки. */\n  orderType: StopOrderType;\n  /** Дата и время выставления заявки по UTC. */\n  createDate:\n    | Date\n    | undefined;\n  /** Дата и время конвертации стоп-заявки в биржевую по UTC. */\n  activationDateTime:\n    | Date\n    | undefined;\n  /** Дата и время снятия заявки по UTC. */\n  expirationTime:\n    | Date\n    | undefined;\n  /** Цена заявки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */\n  price:\n    | MoneyValue\n    | undefined;\n  /** Цена активации стоп-заявки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. */\n  stopPrice:\n    | MoneyValue\n    | undefined;\n  /** `instrument_uid`-идентификатор инструмента. */\n  instrumentUid: string;\n  /** Подтип стоп-заявки — `TakeProfit`. */\n  takeProfitType: TakeProfitType;\n  /** Параметры трейлинг-стопа. */\n  trailingData:\n    | StopOrder_TrailingData\n    | undefined;\n  /** Статус заявки. */\n  status: StopOrderStatusOption;\n  /** Тип дочерней биржевой заявки для тейкпрофита. */\n  exchangeOrderType: ExchangeOrderType;\n  /** Идентификатор биржевой заявки. */\n  exchangeOrderId?: string | undefined;\n}\n\nexport interface StopOrder_TrailingData {\n  /** Отступ. */\n  indent:\n    | Quotation\n    | undefined;\n  /** Тип величины отступа. */\n  indentType: TrailingValueType;\n  /** Размер защитного спреда. */\n  spread:\n    | Quotation\n    | undefined;\n  /** Тип величины защитного спреда. */\n  spreadType: TrailingValueType;\n  /** Статус трейлинг-стопа. */\n  status: TrailingStopStatus;\n  /** Цена исполнения. */\n  price:\n    | Quotation\n    | undefined;\n  /** Локальный экстремум. */\n  extr: Quotation | undefined;\n}\n\nfunction createBasePostStopOrderRequest(): PostStopOrderRequest {\n  return {\n    figi: undefined,\n    quantity: 0,\n    price: undefined,\n    stopPrice: undefined,\n    direction: 0,\n    accountId: \"\",\n    expirationType: 0,\n    stopOrderType: 0,\n    expireDate: undefined,\n    instrumentId: \"\",\n    exchangeOrderType: 0,\n    takeProfitType: 0,\n    trailingData: undefined,\n    priceType: 0,\n    orderId: \"\",\n  };\n}\n\nexport const PostStopOrderRequest: MessageFns<PostStopOrderRequest> = {\n  encode(message: PostStopOrderRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.figi !== undefined) {\n      writer.uint32(10).string(message.figi);\n    }\n    if (message.quantity !== 0) {\n      writer.uint32(16).int64(message.quantity);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(26).fork()).join();\n    }\n    if (message.stopPrice !== undefined) {\n      Quotation.encode(message.stopPrice, writer.uint32(34).fork()).join();\n    }\n    if (message.direction !== 0) {\n      writer.uint32(40).int32(message.direction);\n    }\n    if (message.accountId !== \"\") {\n      writer.uint32(50).string(message.accountId);\n    }\n    if (message.expirationType !== 0) {\n      writer.uint32(56).int32(message.expirationType);\n    }\n    if (message.stopOrderType !== 0) {\n      writer.uint32(64).int32(message.stopOrderType);\n    }\n    if (message.expireDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.expireDate), writer.uint32(74).fork()).join();\n    }\n    if (message.instrumentId !== \"\") {\n      writer.uint32(82).string(message.instrumentId);\n    }\n    if (message.exchangeOrderType !== 0) {\n      writer.uint32(88).int32(message.exchangeOrderType);\n    }\n    if (message.takeProfitType !== 0) {\n      writer.uint32(96).int32(message.takeProfitType);\n    }\n    if (message.trailingData !== undefined) {\n      PostStopOrderRequest_TrailingData.encode(message.trailingData, writer.uint32(106).fork()).join();\n    }\n    if (message.priceType !== 0) {\n      writer.uint32(112).int32(message.priceType);\n    }\n    if (message.orderId !== \"\") {\n      writer.uint32(122).string(message.orderId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PostStopOrderRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePostStopOrderRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.quantity = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.stopPrice = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.expirationType = reader.int32() as any;\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.stopOrderType = reader.int32() as any;\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.expireDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.instrumentId = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.exchangeOrderType = reader.int32() as any;\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.takeProfitType = reader.int32() as any;\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.trailingData = PostStopOrderRequest_TrailingData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 14: {\n          if (tag !== 112) {\n            break;\n          }\n\n          message.priceType = reader.int32() as any;\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PostStopOrderRequest {\n    return {\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : 0,\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      stopPrice: isSet(object.stopPrice) ? Quotation.fromJSON(object.stopPrice) : undefined,\n      direction: isSet(object.direction) ? stopOrderDirectionFromJSON(object.direction) : 0,\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      expirationType: isSet(object.expirationType) ? stopOrderExpirationTypeFromJSON(object.expirationType) : 0,\n      stopOrderType: isSet(object.stopOrderType) ? stopOrderTypeFromJSON(object.stopOrderType) : 0,\n      expireDate: isSet(object.expireDate) ? fromJsonTimestamp(object.expireDate) : undefined,\n      instrumentId: isSet(object.instrumentId) ? globalThis.String(object.instrumentId) : \"\",\n      exchangeOrderType: isSet(object.exchangeOrderType) ? exchangeOrderTypeFromJSON(object.exchangeOrderType) : 0,\n      takeProfitType: isSet(object.takeProfitType) ? takeProfitTypeFromJSON(object.takeProfitType) : 0,\n      trailingData: isSet(object.trailingData)\n        ? PostStopOrderRequest_TrailingData.fromJSON(object.trailingData)\n        : undefined,\n      priceType: isSet(object.priceType) ? priceTypeFromJSON(object.priceType) : 0,\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : \"\",\n    };\n  },\n\n  toJSON(message: PostStopOrderRequest): unknown {\n    const obj: any = {};\n    if (message.figi !== undefined) {\n      obj.figi = message.figi;\n    }\n    if (message.quantity !== 0) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.stopPrice !== undefined) {\n      obj.stopPrice = Quotation.toJSON(message.stopPrice);\n    }\n    if (message.direction !== 0) {\n      obj.direction = stopOrderDirectionToJSON(message.direction);\n    }\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.expirationType !== 0) {\n      obj.expirationType = stopOrderExpirationTypeToJSON(message.expirationType);\n    }\n    if (message.stopOrderType !== 0) {\n      obj.stopOrderType = stopOrderTypeToJSON(message.stopOrderType);\n    }\n    if (message.expireDate !== undefined) {\n      obj.expireDate = message.expireDate.toISOString();\n    }\n    if (message.instrumentId !== \"\") {\n      obj.instrumentId = message.instrumentId;\n    }\n    if (message.exchangeOrderType !== 0) {\n      obj.exchangeOrderType = exchangeOrderTypeToJSON(message.exchangeOrderType);\n    }\n    if (message.takeProfitType !== 0) {\n      obj.takeProfitType = takeProfitTypeToJSON(message.takeProfitType);\n    }\n    if (message.trailingData !== undefined) {\n      obj.trailingData = PostStopOrderRequest_TrailingData.toJSON(message.trailingData);\n    }\n    if (message.priceType !== 0) {\n      obj.priceType = priceTypeToJSON(message.priceType);\n    }\n    if (message.orderId !== \"\") {\n      obj.orderId = message.orderId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PostStopOrderRequest>): PostStopOrderRequest {\n    return PostStopOrderRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PostStopOrderRequest>): PostStopOrderRequest {\n    const message = createBasePostStopOrderRequest();\n    message.figi = object.figi ?? undefined;\n    message.quantity = object.quantity ?? 0;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.stopPrice = (object.stopPrice !== undefined && object.stopPrice !== null)\n      ? Quotation.fromPartial(object.stopPrice)\n      : undefined;\n    message.direction = object.direction ?? 0;\n    message.accountId = object.accountId ?? \"\";\n    message.expirationType = object.expirationType ?? 0;\n    message.stopOrderType = object.stopOrderType ?? 0;\n    message.expireDate = object.expireDate ?? undefined;\n    message.instrumentId = object.instrumentId ?? \"\";\n    message.exchangeOrderType = object.exchangeOrderType ?? 0;\n    message.takeProfitType = object.takeProfitType ?? 0;\n    message.trailingData = (object.trailingData !== undefined && object.trailingData !== null)\n      ? PostStopOrderRequest_TrailingData.fromPartial(object.trailingData)\n      : undefined;\n    message.priceType = object.priceType ?? 0;\n    message.orderId = object.orderId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBasePostStopOrderRequest_TrailingData(): PostStopOrderRequest_TrailingData {\n  return { indent: undefined, indentType: 0, spread: undefined, spreadType: 0 };\n}\n\nexport const PostStopOrderRequest_TrailingData: MessageFns<PostStopOrderRequest_TrailingData> = {\n  encode(message: PostStopOrderRequest_TrailingData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.indent !== undefined) {\n      Quotation.encode(message.indent, writer.uint32(10).fork()).join();\n    }\n    if (message.indentType !== 0) {\n      writer.uint32(16).int32(message.indentType);\n    }\n    if (message.spread !== undefined) {\n      Quotation.encode(message.spread, writer.uint32(26).fork()).join();\n    }\n    if (message.spreadType !== 0) {\n      writer.uint32(32).int32(message.spreadType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PostStopOrderRequest_TrailingData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePostStopOrderRequest_TrailingData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.indent = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.indentType = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.spread = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.spreadType = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PostStopOrderRequest_TrailingData {\n    return {\n      indent: isSet(object.indent) ? Quotation.fromJSON(object.indent) : undefined,\n      indentType: isSet(object.indentType) ? trailingValueTypeFromJSON(object.indentType) : 0,\n      spread: isSet(object.spread) ? Quotation.fromJSON(object.spread) : undefined,\n      spreadType: isSet(object.spreadType) ? trailingValueTypeFromJSON(object.spreadType) : 0,\n    };\n  },\n\n  toJSON(message: PostStopOrderRequest_TrailingData): unknown {\n    const obj: any = {};\n    if (message.indent !== undefined) {\n      obj.indent = Quotation.toJSON(message.indent);\n    }\n    if (message.indentType !== 0) {\n      obj.indentType = trailingValueTypeToJSON(message.indentType);\n    }\n    if (message.spread !== undefined) {\n      obj.spread = Quotation.toJSON(message.spread);\n    }\n    if (message.spreadType !== 0) {\n      obj.spreadType = trailingValueTypeToJSON(message.spreadType);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PostStopOrderRequest_TrailingData>): PostStopOrderRequest_TrailingData {\n    return PostStopOrderRequest_TrailingData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PostStopOrderRequest_TrailingData>): PostStopOrderRequest_TrailingData {\n    const message = createBasePostStopOrderRequest_TrailingData();\n    message.indent = (object.indent !== undefined && object.indent !== null)\n      ? Quotation.fromPartial(object.indent)\n      : undefined;\n    message.indentType = object.indentType ?? 0;\n    message.spread = (object.spread !== undefined && object.spread !== null)\n      ? Quotation.fromPartial(object.spread)\n      : undefined;\n    message.spreadType = object.spreadType ?? 0;\n    return message;\n  },\n};\n\nfunction createBasePostStopOrderResponse(): PostStopOrderResponse {\n  return { stopOrderId: \"\", orderRequestId: \"\", responseMetadata: undefined };\n}\n\nexport const PostStopOrderResponse: MessageFns<PostStopOrderResponse> = {\n  encode(message: PostStopOrderResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.stopOrderId !== \"\") {\n      writer.uint32(10).string(message.stopOrderId);\n    }\n    if (message.orderRequestId !== \"\") {\n      writer.uint32(18).string(message.orderRequestId);\n    }\n    if (message.responseMetadata !== undefined) {\n      ResponseMetadata.encode(message.responseMetadata, writer.uint32(2034).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PostStopOrderResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePostStopOrderResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.stopOrderId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.orderRequestId = reader.string();\n          continue;\n        }\n        case 254: {\n          if (tag !== 2034) {\n            break;\n          }\n\n          message.responseMetadata = ResponseMetadata.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PostStopOrderResponse {\n    return {\n      stopOrderId: isSet(object.stopOrderId) ? globalThis.String(object.stopOrderId) : \"\",\n      orderRequestId: isSet(object.orderRequestId) ? globalThis.String(object.orderRequestId) : \"\",\n      responseMetadata: isSet(object.responseMetadata) ? ResponseMetadata.fromJSON(object.responseMetadata) : undefined,\n    };\n  },\n\n  toJSON(message: PostStopOrderResponse): unknown {\n    const obj: any = {};\n    if (message.stopOrderId !== \"\") {\n      obj.stopOrderId = message.stopOrderId;\n    }\n    if (message.orderRequestId !== \"\") {\n      obj.orderRequestId = message.orderRequestId;\n    }\n    if (message.responseMetadata !== undefined) {\n      obj.responseMetadata = ResponseMetadata.toJSON(message.responseMetadata);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PostStopOrderResponse>): PostStopOrderResponse {\n    return PostStopOrderResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PostStopOrderResponse>): PostStopOrderResponse {\n    const message = createBasePostStopOrderResponse();\n    message.stopOrderId = object.stopOrderId ?? \"\";\n    message.orderRequestId = object.orderRequestId ?? \"\";\n    message.responseMetadata = (object.responseMetadata !== undefined && object.responseMetadata !== null)\n      ? ResponseMetadata.fromPartial(object.responseMetadata)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetStopOrdersRequest(): GetStopOrdersRequest {\n  return { accountId: \"\", status: 0, from: undefined, to: undefined };\n}\n\nexport const GetStopOrdersRequest: MessageFns<GetStopOrdersRequest> = {\n  encode(message: GetStopOrdersRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.status !== 0) {\n      writer.uint32(16).int32(message.status);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(26).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetStopOrdersRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetStopOrdersRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.status = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetStopOrdersRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      status: isSet(object.status) ? stopOrderStatusOptionFromJSON(object.status) : 0,\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n    };\n  },\n\n  toJSON(message: GetStopOrdersRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.status !== 0) {\n      obj.status = stopOrderStatusOptionToJSON(message.status);\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetStopOrdersRequest>): GetStopOrdersRequest {\n    return GetStopOrdersRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetStopOrdersRequest>): GetStopOrdersRequest {\n    const message = createBaseGetStopOrdersRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.status = object.status ?? 0;\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetStopOrdersResponse(): GetStopOrdersResponse {\n  return { stopOrders: [] };\n}\n\nexport const GetStopOrdersResponse: MessageFns<GetStopOrdersResponse> = {\n  encode(message: GetStopOrdersResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.stopOrders) {\n      StopOrder.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetStopOrdersResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetStopOrdersResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.stopOrders.push(StopOrder.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetStopOrdersResponse {\n    return {\n      stopOrders: globalThis.Array.isArray(object?.stopOrders)\n        ? object.stopOrders.map((e: any) => StopOrder.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetStopOrdersResponse): unknown {\n    const obj: any = {};\n    if (message.stopOrders?.length) {\n      obj.stopOrders = message.stopOrders.map((e) => StopOrder.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetStopOrdersResponse>): GetStopOrdersResponse {\n    return GetStopOrdersResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetStopOrdersResponse>): GetStopOrdersResponse {\n    const message = createBaseGetStopOrdersResponse();\n    message.stopOrders = object.stopOrders?.map((e) => StopOrder.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseCancelStopOrderRequest(): CancelStopOrderRequest {\n  return { accountId: \"\", stopOrderId: \"\" };\n}\n\nexport const CancelStopOrderRequest: MessageFns<CancelStopOrderRequest> = {\n  encode(message: CancelStopOrderRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.stopOrderId !== \"\") {\n      writer.uint32(18).string(message.stopOrderId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CancelStopOrderRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCancelStopOrderRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.stopOrderId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CancelStopOrderRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      stopOrderId: isSet(object.stopOrderId) ? globalThis.String(object.stopOrderId) : \"\",\n    };\n  },\n\n  toJSON(message: CancelStopOrderRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.stopOrderId !== \"\") {\n      obj.stopOrderId = message.stopOrderId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CancelStopOrderRequest>): CancelStopOrderRequest {\n    return CancelStopOrderRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CancelStopOrderRequest>): CancelStopOrderRequest {\n    const message = createBaseCancelStopOrderRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.stopOrderId = object.stopOrderId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseCancelStopOrderResponse(): CancelStopOrderResponse {\n  return { time: undefined };\n}\n\nexport const CancelStopOrderResponse: MessageFns<CancelStopOrderResponse> = {\n  encode(message: CancelStopOrderResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.time !== undefined) {\n      Timestamp.encode(toTimestamp(message.time), writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CancelStopOrderResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCancelStopOrderResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.time = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CancelStopOrderResponse {\n    return { time: isSet(object.time) ? fromJsonTimestamp(object.time) : undefined };\n  },\n\n  toJSON(message: CancelStopOrderResponse): unknown {\n    const obj: any = {};\n    if (message.time !== undefined) {\n      obj.time = message.time.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CancelStopOrderResponse>): CancelStopOrderResponse {\n    return CancelStopOrderResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CancelStopOrderResponse>): CancelStopOrderResponse {\n    const message = createBaseCancelStopOrderResponse();\n    message.time = object.time ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseStopOrder(): StopOrder {\n  return {\n    stopOrderId: \"\",\n    lotsRequested: 0,\n    figi: \"\",\n    direction: 0,\n    currency: \"\",\n    orderType: 0,\n    createDate: undefined,\n    activationDateTime: undefined,\n    expirationTime: undefined,\n    price: undefined,\n    stopPrice: undefined,\n    instrumentUid: \"\",\n    takeProfitType: 0,\n    trailingData: undefined,\n    status: 0,\n    exchangeOrderType: 0,\n    exchangeOrderId: undefined,\n  };\n}\n\nexport const StopOrder: MessageFns<StopOrder> = {\n  encode(message: StopOrder, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.stopOrderId !== \"\") {\n      writer.uint32(10).string(message.stopOrderId);\n    }\n    if (message.lotsRequested !== 0) {\n      writer.uint32(16).int64(message.lotsRequested);\n    }\n    if (message.figi !== \"\") {\n      writer.uint32(26).string(message.figi);\n    }\n    if (message.direction !== 0) {\n      writer.uint32(32).int32(message.direction);\n    }\n    if (message.currency !== \"\") {\n      writer.uint32(42).string(message.currency);\n    }\n    if (message.orderType !== 0) {\n      writer.uint32(48).int32(message.orderType);\n    }\n    if (message.createDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.createDate), writer.uint32(58).fork()).join();\n    }\n    if (message.activationDateTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.activationDateTime), writer.uint32(66).fork()).join();\n    }\n    if (message.expirationTime !== undefined) {\n      Timestamp.encode(toTimestamp(message.expirationTime), writer.uint32(74).fork()).join();\n    }\n    if (message.price !== undefined) {\n      MoneyValue.encode(message.price, writer.uint32(82).fork()).join();\n    }\n    if (message.stopPrice !== undefined) {\n      MoneyValue.encode(message.stopPrice, writer.uint32(90).fork()).join();\n    }\n    if (message.instrumentUid !== \"\") {\n      writer.uint32(98).string(message.instrumentUid);\n    }\n    if (message.takeProfitType !== 0) {\n      writer.uint32(104).int32(message.takeProfitType);\n    }\n    if (message.trailingData !== undefined) {\n      StopOrder_TrailingData.encode(message.trailingData, writer.uint32(114).fork()).join();\n    }\n    if (message.status !== 0) {\n      writer.uint32(120).int32(message.status);\n    }\n    if (message.exchangeOrderType !== 0) {\n      writer.uint32(128).int32(message.exchangeOrderType);\n    }\n    if (message.exchangeOrderId !== undefined) {\n      writer.uint32(138).string(message.exchangeOrderId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): StopOrder {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStopOrder();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.stopOrderId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.lotsRequested = longToNumber(reader.int64());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.figi = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.direction = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.orderType = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.createDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.activationDateTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.expirationTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.price = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.stopPrice = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.instrumentUid = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.takeProfitType = reader.int32() as any;\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.trailingData = StopOrder_TrailingData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 15: {\n          if (tag !== 120) {\n            break;\n          }\n\n          message.status = reader.int32() as any;\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.exchangeOrderType = reader.int32() as any;\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.exchangeOrderId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): StopOrder {\n    return {\n      stopOrderId: isSet(object.stopOrderId) ? globalThis.String(object.stopOrderId) : \"\",\n      lotsRequested: isSet(object.lotsRequested) ? globalThis.Number(object.lotsRequested) : 0,\n      figi: isSet(object.figi) ? globalThis.String(object.figi) : \"\",\n      direction: isSet(object.direction) ? stopOrderDirectionFromJSON(object.direction) : 0,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : \"\",\n      orderType: isSet(object.orderType) ? stopOrderTypeFromJSON(object.orderType) : 0,\n      createDate: isSet(object.createDate) ? fromJsonTimestamp(object.createDate) : undefined,\n      activationDateTime: isSet(object.activationDateTime) ? fromJsonTimestamp(object.activationDateTime) : undefined,\n      expirationTime: isSet(object.expirationTime) ? fromJsonTimestamp(object.expirationTime) : undefined,\n      price: isSet(object.price) ? MoneyValue.fromJSON(object.price) : undefined,\n      stopPrice: isSet(object.stopPrice) ? MoneyValue.fromJSON(object.stopPrice) : undefined,\n      instrumentUid: isSet(object.instrumentUid) ? globalThis.String(object.instrumentUid) : \"\",\n      takeProfitType: isSet(object.takeProfitType) ? takeProfitTypeFromJSON(object.takeProfitType) : 0,\n      trailingData: isSet(object.trailingData) ? StopOrder_TrailingData.fromJSON(object.trailingData) : undefined,\n      status: isSet(object.status) ? stopOrderStatusOptionFromJSON(object.status) : 0,\n      exchangeOrderType: isSet(object.exchangeOrderType) ? exchangeOrderTypeFromJSON(object.exchangeOrderType) : 0,\n      exchangeOrderId: isSet(object.exchangeOrderId) ? globalThis.String(object.exchangeOrderId) : undefined,\n    };\n  },\n\n  toJSON(message: StopOrder): unknown {\n    const obj: any = {};\n    if (message.stopOrderId !== \"\") {\n      obj.stopOrderId = message.stopOrderId;\n    }\n    if (message.lotsRequested !== 0) {\n      obj.lotsRequested = Math.round(message.lotsRequested);\n    }\n    if (message.figi !== \"\") {\n      obj.figi = message.figi;\n    }\n    if (message.direction !== 0) {\n      obj.direction = stopOrderDirectionToJSON(message.direction);\n    }\n    if (message.currency !== \"\") {\n      obj.currency = message.currency;\n    }\n    if (message.orderType !== 0) {\n      obj.orderType = stopOrderTypeToJSON(message.orderType);\n    }\n    if (message.createDate !== undefined) {\n      obj.createDate = message.createDate.toISOString();\n    }\n    if (message.activationDateTime !== undefined) {\n      obj.activationDateTime = message.activationDateTime.toISOString();\n    }\n    if (message.expirationTime !== undefined) {\n      obj.expirationTime = message.expirationTime.toISOString();\n    }\n    if (message.price !== undefined) {\n      obj.price = MoneyValue.toJSON(message.price);\n    }\n    if (message.stopPrice !== undefined) {\n      obj.stopPrice = MoneyValue.toJSON(message.stopPrice);\n    }\n    if (message.instrumentUid !== \"\") {\n      obj.instrumentUid = message.instrumentUid;\n    }\n    if (message.takeProfitType !== 0) {\n      obj.takeProfitType = takeProfitTypeToJSON(message.takeProfitType);\n    }\n    if (message.trailingData !== undefined) {\n      obj.trailingData = StopOrder_TrailingData.toJSON(message.trailingData);\n    }\n    if (message.status !== 0) {\n      obj.status = stopOrderStatusOptionToJSON(message.status);\n    }\n    if (message.exchangeOrderType !== 0) {\n      obj.exchangeOrderType = exchangeOrderTypeToJSON(message.exchangeOrderType);\n    }\n    if (message.exchangeOrderId !== undefined) {\n      obj.exchangeOrderId = message.exchangeOrderId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<StopOrder>): StopOrder {\n    return StopOrder.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<StopOrder>): StopOrder {\n    const message = createBaseStopOrder();\n    message.stopOrderId = object.stopOrderId ?? \"\";\n    message.lotsRequested = object.lotsRequested ?? 0;\n    message.figi = object.figi ?? \"\";\n    message.direction = object.direction ?? 0;\n    message.currency = object.currency ?? \"\";\n    message.orderType = object.orderType ?? 0;\n    message.createDate = object.createDate ?? undefined;\n    message.activationDateTime = object.activationDateTime ?? undefined;\n    message.expirationTime = object.expirationTime ?? undefined;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? MoneyValue.fromPartial(object.price)\n      : undefined;\n    message.stopPrice = (object.stopPrice !== undefined && object.stopPrice !== null)\n      ? MoneyValue.fromPartial(object.stopPrice)\n      : undefined;\n    message.instrumentUid = object.instrumentUid ?? \"\";\n    message.takeProfitType = object.takeProfitType ?? 0;\n    message.trailingData = (object.trailingData !== undefined && object.trailingData !== null)\n      ? StopOrder_TrailingData.fromPartial(object.trailingData)\n      : undefined;\n    message.status = object.status ?? 0;\n    message.exchangeOrderType = object.exchangeOrderType ?? 0;\n    message.exchangeOrderId = object.exchangeOrderId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseStopOrder_TrailingData(): StopOrder_TrailingData {\n  return {\n    indent: undefined,\n    indentType: 0,\n    spread: undefined,\n    spreadType: 0,\n    status: 0,\n    price: undefined,\n    extr: undefined,\n  };\n}\n\nexport const StopOrder_TrailingData: MessageFns<StopOrder_TrailingData> = {\n  encode(message: StopOrder_TrailingData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.indent !== undefined) {\n      Quotation.encode(message.indent, writer.uint32(10).fork()).join();\n    }\n    if (message.indentType !== 0) {\n      writer.uint32(16).int32(message.indentType);\n    }\n    if (message.spread !== undefined) {\n      Quotation.encode(message.spread, writer.uint32(26).fork()).join();\n    }\n    if (message.spreadType !== 0) {\n      writer.uint32(32).int32(message.spreadType);\n    }\n    if (message.status !== 0) {\n      writer.uint32(40).int32(message.status);\n    }\n    if (message.price !== undefined) {\n      Quotation.encode(message.price, writer.uint32(58).fork()).join();\n    }\n    if (message.extr !== undefined) {\n      Quotation.encode(message.extr, writer.uint32(66).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): StopOrder_TrailingData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStopOrder_TrailingData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.indent = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.indentType = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.spread = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.spreadType = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.status = reader.int32() as any;\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.price = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.extr = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): StopOrder_TrailingData {\n    return {\n      indent: isSet(object.indent) ? Quotation.fromJSON(object.indent) : undefined,\n      indentType: isSet(object.indentType) ? trailingValueTypeFromJSON(object.indentType) : 0,\n      spread: isSet(object.spread) ? Quotation.fromJSON(object.spread) : undefined,\n      spreadType: isSet(object.spreadType) ? trailingValueTypeFromJSON(object.spreadType) : 0,\n      status: isSet(object.status) ? trailingStopStatusFromJSON(object.status) : 0,\n      price: isSet(object.price) ? Quotation.fromJSON(object.price) : undefined,\n      extr: isSet(object.extr) ? Quotation.fromJSON(object.extr) : undefined,\n    };\n  },\n\n  toJSON(message: StopOrder_TrailingData): unknown {\n    const obj: any = {};\n    if (message.indent !== undefined) {\n      obj.indent = Quotation.toJSON(message.indent);\n    }\n    if (message.indentType !== 0) {\n      obj.indentType = trailingValueTypeToJSON(message.indentType);\n    }\n    if (message.spread !== undefined) {\n      obj.spread = Quotation.toJSON(message.spread);\n    }\n    if (message.spreadType !== 0) {\n      obj.spreadType = trailingValueTypeToJSON(message.spreadType);\n    }\n    if (message.status !== 0) {\n      obj.status = trailingStopStatusToJSON(message.status);\n    }\n    if (message.price !== undefined) {\n      obj.price = Quotation.toJSON(message.price);\n    }\n    if (message.extr !== undefined) {\n      obj.extr = Quotation.toJSON(message.extr);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<StopOrder_TrailingData>): StopOrder_TrailingData {\n    return StopOrder_TrailingData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<StopOrder_TrailingData>): StopOrder_TrailingData {\n    const message = createBaseStopOrder_TrailingData();\n    message.indent = (object.indent !== undefined && object.indent !== null)\n      ? Quotation.fromPartial(object.indent)\n      : undefined;\n    message.indentType = object.indentType ?? 0;\n    message.spread = (object.spread !== undefined && object.spread !== null)\n      ? Quotation.fromPartial(object.spread)\n      : undefined;\n    message.spreadType = object.spreadType ?? 0;\n    message.status = object.status ?? 0;\n    message.price = (object.price !== undefined && object.price !== null)\n      ? Quotation.fromPartial(object.price)\n      : undefined;\n    message.extr = (object.extr !== undefined && object.extr !== null) ? Quotation.fromPartial(object.extr) : undefined;\n    return message;\n  },\n};\n\n/** Сервис для работы со стоп-заявками: выставление, отмена, получение списка стоп-заявок. */\nexport type StopOrdersServiceDefinition = typeof StopOrdersServiceDefinition;\nexport const StopOrdersServiceDefinition = {\n  name: \"StopOrdersService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.StopOrdersService\",\n  methods: {\n    /** Выставить стоп-заявку. */\n    postStopOrder: {\n      name: \"PostStopOrder\",\n      requestType: PostStopOrderRequest,\n      requestStream: false,\n      responseType: PostStopOrderResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список активных стоп-заявок по счёту. */\n    getStopOrders: {\n      name: \"GetStopOrders\",\n      requestType: GetStopOrdersRequest,\n      requestStream: false,\n      responseType: GetStopOrdersResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Отменить стоп-заявку. */\n    cancelStopOrder: {\n      name: \"CancelStopOrder\",\n      requestType: CancelStopOrderRequest,\n      requestStream: false,\n      responseType: CancelStopOrderResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface StopOrdersServiceImplementation<CallContextExt = {}> {\n  /** Выставить стоп-заявку. */\n  postStopOrder(\n    request: PostStopOrderRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PostStopOrderResponse>>;\n  /** Получить список активных стоп-заявок по счёту. */\n  getStopOrders(\n    request: GetStopOrdersRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetStopOrdersResponse>>;\n  /** Отменить стоп-заявку. */\n  cancelStopOrder(\n    request: CancelStopOrderRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<CancelStopOrderResponse>>;\n}\n\nexport interface StopOrdersServiceClient<CallOptionsExt = {}> {\n  /** Выставить стоп-заявку. */\n  postStopOrder(\n    request: DeepPartial<PostStopOrderRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PostStopOrderResponse>;\n  /** Получить список активных стоп-заявок по счёту. */\n  getStopOrders(\n    request: DeepPartial<GetStopOrdersRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetStopOrdersResponse>;\n  /** Отменить стоп-заявку. */\n  cancelStopOrder(\n    request: DeepPartial<CancelStopOrderRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<CancelStopOrderResponse>;\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\ninterface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: users.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport { MoneyValue, Quotation } from \"./common\";\nimport { Timestamp } from \"./google/protobuf/timestamp\";\n\n/** Тип счёта. */\nexport enum AccountType {\n  /** ACCOUNT_TYPE_UNSPECIFIED - Тип аккаунта не определён. */\n  ACCOUNT_TYPE_UNSPECIFIED = 0,\n  /** ACCOUNT_TYPE_TINKOFF - Брокерский счёт Т-Инвестиций. */\n  ACCOUNT_TYPE_TINKOFF = 1,\n  /** ACCOUNT_TYPE_TINKOFF_IIS - ИИС. */\n  ACCOUNT_TYPE_TINKOFF_IIS = 2,\n  /** ACCOUNT_TYPE_INVEST_BOX - Инвесткопилка. */\n  ACCOUNT_TYPE_INVEST_BOX = 3,\n  /** ACCOUNT_TYPE_INVEST_FUND - Фонд денежного рынка. */\n  ACCOUNT_TYPE_INVEST_FUND = 4,\n  UNRECOGNIZED = -1,\n}\n\nexport function accountTypeFromJSON(object: any): AccountType {\n  switch (object) {\n    case 0:\n    case \"ACCOUNT_TYPE_UNSPECIFIED\":\n      return AccountType.ACCOUNT_TYPE_UNSPECIFIED;\n    case 1:\n    case \"ACCOUNT_TYPE_TINKOFF\":\n      return AccountType.ACCOUNT_TYPE_TINKOFF;\n    case 2:\n    case \"ACCOUNT_TYPE_TINKOFF_IIS\":\n      return AccountType.ACCOUNT_TYPE_TINKOFF_IIS;\n    case 3:\n    case \"ACCOUNT_TYPE_INVEST_BOX\":\n      return AccountType.ACCOUNT_TYPE_INVEST_BOX;\n    case 4:\n    case \"ACCOUNT_TYPE_INVEST_FUND\":\n      return AccountType.ACCOUNT_TYPE_INVEST_FUND;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AccountType.UNRECOGNIZED;\n  }\n}\n\nexport function accountTypeToJSON(object: AccountType): string {\n  switch (object) {\n    case AccountType.ACCOUNT_TYPE_UNSPECIFIED:\n      return \"ACCOUNT_TYPE_UNSPECIFIED\";\n    case AccountType.ACCOUNT_TYPE_TINKOFF:\n      return \"ACCOUNT_TYPE_TINKOFF\";\n    case AccountType.ACCOUNT_TYPE_TINKOFF_IIS:\n      return \"ACCOUNT_TYPE_TINKOFF_IIS\";\n    case AccountType.ACCOUNT_TYPE_INVEST_BOX:\n      return \"ACCOUNT_TYPE_INVEST_BOX\";\n    case AccountType.ACCOUNT_TYPE_INVEST_FUND:\n      return \"ACCOUNT_TYPE_INVEST_FUND\";\n    case AccountType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Статус счёта. */\nexport enum AccountStatus {\n  /** ACCOUNT_STATUS_UNSPECIFIED - Статус счёта не определён. */\n  ACCOUNT_STATUS_UNSPECIFIED = 0,\n  /** ACCOUNT_STATUS_NEW - Новый, в процессе открытия. */\n  ACCOUNT_STATUS_NEW = 1,\n  /** ACCOUNT_STATUS_OPEN - Открытый и активный счёт. */\n  ACCOUNT_STATUS_OPEN = 2,\n  /** ACCOUNT_STATUS_CLOSED - Закрытый счёт. */\n  ACCOUNT_STATUS_CLOSED = 3,\n  /** ACCOUNT_STATUS_ALL - Все счета. */\n  ACCOUNT_STATUS_ALL = 4,\n  UNRECOGNIZED = -1,\n}\n\nexport function accountStatusFromJSON(object: any): AccountStatus {\n  switch (object) {\n    case 0:\n    case \"ACCOUNT_STATUS_UNSPECIFIED\":\n      return AccountStatus.ACCOUNT_STATUS_UNSPECIFIED;\n    case 1:\n    case \"ACCOUNT_STATUS_NEW\":\n      return AccountStatus.ACCOUNT_STATUS_NEW;\n    case 2:\n    case \"ACCOUNT_STATUS_OPEN\":\n      return AccountStatus.ACCOUNT_STATUS_OPEN;\n    case 3:\n    case \"ACCOUNT_STATUS_CLOSED\":\n      return AccountStatus.ACCOUNT_STATUS_CLOSED;\n    case 4:\n    case \"ACCOUNT_STATUS_ALL\":\n      return AccountStatus.ACCOUNT_STATUS_ALL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AccountStatus.UNRECOGNIZED;\n  }\n}\n\nexport function accountStatusToJSON(object: AccountStatus): string {\n  switch (object) {\n    case AccountStatus.ACCOUNT_STATUS_UNSPECIFIED:\n      return \"ACCOUNT_STATUS_UNSPECIFIED\";\n    case AccountStatus.ACCOUNT_STATUS_NEW:\n      return \"ACCOUNT_STATUS_NEW\";\n    case AccountStatus.ACCOUNT_STATUS_OPEN:\n      return \"ACCOUNT_STATUS_OPEN\";\n    case AccountStatus.ACCOUNT_STATUS_CLOSED:\n      return \"ACCOUNT_STATUS_CLOSED\";\n    case AccountStatus.ACCOUNT_STATUS_ALL:\n      return \"ACCOUNT_STATUS_ALL\";\n    case AccountStatus.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Уровень доступа к счёту. */\nexport enum AccessLevel {\n  /** ACCOUNT_ACCESS_LEVEL_UNSPECIFIED - Уровень доступа не определён. */\n  ACCOUNT_ACCESS_LEVEL_UNSPECIFIED = 0,\n  /** ACCOUNT_ACCESS_LEVEL_FULL_ACCESS - Полный доступ к счёту. */\n  ACCOUNT_ACCESS_LEVEL_FULL_ACCESS = 1,\n  /** ACCOUNT_ACCESS_LEVEL_READ_ONLY - Доступ с уровнем прав «только чтение». */\n  ACCOUNT_ACCESS_LEVEL_READ_ONLY = 2,\n  /** ACCOUNT_ACCESS_LEVEL_NO_ACCESS - Доступа нет. */\n  ACCOUNT_ACCESS_LEVEL_NO_ACCESS = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function accessLevelFromJSON(object: any): AccessLevel {\n  switch (object) {\n    case 0:\n    case \"ACCOUNT_ACCESS_LEVEL_UNSPECIFIED\":\n      return AccessLevel.ACCOUNT_ACCESS_LEVEL_UNSPECIFIED;\n    case 1:\n    case \"ACCOUNT_ACCESS_LEVEL_FULL_ACCESS\":\n      return AccessLevel.ACCOUNT_ACCESS_LEVEL_FULL_ACCESS;\n    case 2:\n    case \"ACCOUNT_ACCESS_LEVEL_READ_ONLY\":\n      return AccessLevel.ACCOUNT_ACCESS_LEVEL_READ_ONLY;\n    case 3:\n    case \"ACCOUNT_ACCESS_LEVEL_NO_ACCESS\":\n      return AccessLevel.ACCOUNT_ACCESS_LEVEL_NO_ACCESS;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AccessLevel.UNRECOGNIZED;\n  }\n}\n\nexport function accessLevelToJSON(object: AccessLevel): string {\n  switch (object) {\n    case AccessLevel.ACCOUNT_ACCESS_LEVEL_UNSPECIFIED:\n      return \"ACCOUNT_ACCESS_LEVEL_UNSPECIFIED\";\n    case AccessLevel.ACCOUNT_ACCESS_LEVEL_FULL_ACCESS:\n      return \"ACCOUNT_ACCESS_LEVEL_FULL_ACCESS\";\n    case AccessLevel.ACCOUNT_ACCESS_LEVEL_READ_ONLY:\n      return \"ACCOUNT_ACCESS_LEVEL_READ_ONLY\";\n    case AccessLevel.ACCOUNT_ACCESS_LEVEL_NO_ACCESS:\n      return \"ACCOUNT_ACCESS_LEVEL_NO_ACCESS\";\n    case AccessLevel.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Запрос получения счетов пользователя. */\nexport interface GetAccountsRequest {\n  /** Статус счета. */\n  status?: AccountStatus | undefined;\n}\n\n/** Список счетов пользователя. */\nexport interface GetAccountsResponse {\n  /** Массив счетов клиента. */\n  accounts: Account[];\n}\n\n/** Информация о счёте. */\nexport interface Account {\n  /** Идентификатор счёта. */\n  id: string;\n  /** Тип счёта. */\n  type: AccountType;\n  /** Название счёта. */\n  name: string;\n  /** Статус счёта. */\n  status: AccountStatus;\n  /** Дата открытия счёта в часовом поясе UTC. */\n  openedDate:\n    | Date\n    | undefined;\n  /** Дата закрытия счёта в часовом поясе UTC. */\n  closedDate:\n    | Date\n    | undefined;\n  /** Уровень доступа к текущему счёту (определяется токеном). */\n  accessLevel: AccessLevel;\n}\n\n/** Запрос маржинальных показателей по счёту. */\nexport interface GetMarginAttributesRequest {\n  /** Идентификатор счёта пользователя. */\n  accountId: string;\n}\n\n/** Маржинальные показатели по счёту. */\nexport interface GetMarginAttributesResponse {\n  /** Ликвидная стоимость портфеля. [Подробнее про ликвидный портфель](https://help.tbank.ru/margin-trade/short/liquid-portfolio/). */\n  liquidPortfolio:\n    | MoneyValue\n    | undefined;\n  /** Начальная маржа — начальное обеспечение для совершения новой сделки. [Подробнее про начальную и минимальную маржу](https://help.tbank.ru/margin-trade/short/initial-and-maintenance-margin/). */\n  startingMargin:\n    | MoneyValue\n    | undefined;\n  /** Минимальная маржа — это минимальное обеспечение для поддержания позиции, которую вы уже открыли. [Подробнее про начальную и минимальную маржу](https://help.tbank.ru/margin-trade/short/initial-and-maintenance-margin/). */\n  minimalMargin:\n    | MoneyValue\n    | undefined;\n  /** Уровень достаточности средств. Соотношение стоимости ликвидного портфеля к начальной марже. */\n  fundsSufficiencyLevel:\n    | Quotation\n    | undefined;\n  /** Объем недостающих средств. Разница между стартовой маржой и ликвидной стоимости портфеля. */\n  amountOfMissingFunds:\n    | MoneyValue\n    | undefined;\n  /** Скорректированная маржа. Начальная маржа, в которой плановые позиции рассчитываются с учётом активных заявок на покупку позиций лонг или продажу позиций шорт. */\n  correctedMargin: MoneyValue | undefined;\n}\n\n/** Запрос текущих лимитов пользователя. */\nexport interface GetUserTariffRequest {\n}\n\n/** Текущие лимиты пользователя. */\nexport interface GetUserTariffResponse {\n  /** Массив лимитов пользователя по unary-запросам. */\n  unaryLimits: UnaryLimit[];\n  /** Массив лимитов пользователей для stream-соединений. */\n  streamLimits: StreamLimit[];\n}\n\n/** Лимит unary-методов. */\nexport interface UnaryLimit {\n  /** Количество unary-запросов в минуту. */\n  limitPerMinute: number;\n  /** Названия методов. */\n  methods: string[];\n}\n\n/** Лимит stream-соединений. */\nexport interface StreamLimit {\n  /** Максимальное количество stream-соединений. */\n  limit: number;\n  /** Названия stream-методов. */\n  streams: string[];\n  /** Текущее количество открытых stream-соединений. */\n  open: number;\n}\n\n/** Запрос информации о пользователе. */\nexport interface GetInfoRequest {\n}\n\n/** Информация о пользователе. */\nexport interface GetInfoResponse {\n  /** Признак премиум клиента. */\n  premStatus: boolean;\n  /** Признак квалифицированного инвестора. */\n  qualStatus: boolean;\n  /** Набор требующих тестирования инструментов и возможностей, с которыми может работать пользователь. [Подробнее](https://russianinvestments.github.io/investAPI/faq_users/). */\n  qualifiedForWorkWith: string[];\n  /** Наименование тарифа пользователя. */\n  tariff: string;\n}\n\nfunction createBaseGetAccountsRequest(): GetAccountsRequest {\n  return { status: undefined };\n}\n\nexport const GetAccountsRequest: MessageFns<GetAccountsRequest> = {\n  encode(message: GetAccountsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.status !== undefined) {\n      writer.uint32(8).int32(message.status);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAccountsRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAccountsRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.status = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAccountsRequest {\n    return { status: isSet(object.status) ? accountStatusFromJSON(object.status) : undefined };\n  },\n\n  toJSON(message: GetAccountsRequest): unknown {\n    const obj: any = {};\n    if (message.status !== undefined) {\n      obj.status = accountStatusToJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetAccountsRequest>): GetAccountsRequest {\n    return GetAccountsRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetAccountsRequest>): GetAccountsRequest {\n    const message = createBaseGetAccountsRequest();\n    message.status = object.status ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetAccountsResponse(): GetAccountsResponse {\n  return { accounts: [] };\n}\n\nexport const GetAccountsResponse: MessageFns<GetAccountsResponse> = {\n  encode(message: GetAccountsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.accounts) {\n      Account.encode(v!, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetAccountsResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetAccountsResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accounts.push(Account.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetAccountsResponse {\n    return {\n      accounts: globalThis.Array.isArray(object?.accounts) ? object.accounts.map((e: any) => Account.fromJSON(e)) : [],\n    };\n  },\n\n  toJSON(message: GetAccountsResponse): unknown {\n    const obj: any = {};\n    if (message.accounts?.length) {\n      obj.accounts = message.accounts.map((e) => Account.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetAccountsResponse>): GetAccountsResponse {\n    return GetAccountsResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetAccountsResponse>): GetAccountsResponse {\n    const message = createBaseGetAccountsResponse();\n    message.accounts = object.accounts?.map((e) => Account.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseAccount(): Account {\n  return { id: \"\", type: 0, name: \"\", status: 0, openedDate: undefined, closedDate: undefined, accessLevel: 0 };\n}\n\nexport const Account: MessageFns<Account> = {\n  encode(message: Account, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== \"\") {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.type !== 0) {\n      writer.uint32(16).int32(message.type);\n    }\n    if (message.name !== \"\") {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.status !== 0) {\n      writer.uint32(32).int32(message.status);\n    }\n    if (message.openedDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.openedDate), writer.uint32(42).fork()).join();\n    }\n    if (message.closedDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.closedDate), writer.uint32(50).fork()).join();\n    }\n    if (message.accessLevel !== 0) {\n      writer.uint32(56).int32(message.accessLevel);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Account {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAccount();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.type = reader.int32() as any;\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.status = reader.int32() as any;\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.openedDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.closedDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.accessLevel = reader.int32() as any;\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Account {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n      type: isSet(object.type) ? accountTypeFromJSON(object.type) : 0,\n      name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n      status: isSet(object.status) ? accountStatusFromJSON(object.status) : 0,\n      openedDate: isSet(object.openedDate) ? fromJsonTimestamp(object.openedDate) : undefined,\n      closedDate: isSet(object.closedDate) ? fromJsonTimestamp(object.closedDate) : undefined,\n      accessLevel: isSet(object.accessLevel) ? accessLevelFromJSON(object.accessLevel) : 0,\n    };\n  },\n\n  toJSON(message: Account): unknown {\n    const obj: any = {};\n    if (message.id !== \"\") {\n      obj.id = message.id;\n    }\n    if (message.type !== 0) {\n      obj.type = accountTypeToJSON(message.type);\n    }\n    if (message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.status !== 0) {\n      obj.status = accountStatusToJSON(message.status);\n    }\n    if (message.openedDate !== undefined) {\n      obj.openedDate = message.openedDate.toISOString();\n    }\n    if (message.closedDate !== undefined) {\n      obj.closedDate = message.closedDate.toISOString();\n    }\n    if (message.accessLevel !== 0) {\n      obj.accessLevel = accessLevelToJSON(message.accessLevel);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Account>): Account {\n    return Account.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Account>): Account {\n    const message = createBaseAccount();\n    message.id = object.id ?? \"\";\n    message.type = object.type ?? 0;\n    message.name = object.name ?? \"\";\n    message.status = object.status ?? 0;\n    message.openedDate = object.openedDate ?? undefined;\n    message.closedDate = object.closedDate ?? undefined;\n    message.accessLevel = object.accessLevel ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetMarginAttributesRequest(): GetMarginAttributesRequest {\n  return { accountId: \"\" };\n}\n\nexport const GetMarginAttributesRequest: MessageFns<GetMarginAttributesRequest> = {\n  encode(message: GetMarginAttributesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetMarginAttributesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetMarginAttributesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetMarginAttributesRequest {\n    return { accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\" };\n  },\n\n  toJSON(message: GetMarginAttributesRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetMarginAttributesRequest>): GetMarginAttributesRequest {\n    return GetMarginAttributesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetMarginAttributesRequest>): GetMarginAttributesRequest {\n    const message = createBaseGetMarginAttributesRequest();\n    message.accountId = object.accountId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseGetMarginAttributesResponse(): GetMarginAttributesResponse {\n  return {\n    liquidPortfolio: undefined,\n    startingMargin: undefined,\n    minimalMargin: undefined,\n    fundsSufficiencyLevel: undefined,\n    amountOfMissingFunds: undefined,\n    correctedMargin: undefined,\n  };\n}\n\nexport const GetMarginAttributesResponse: MessageFns<GetMarginAttributesResponse> = {\n  encode(message: GetMarginAttributesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.liquidPortfolio !== undefined) {\n      MoneyValue.encode(message.liquidPortfolio, writer.uint32(10).fork()).join();\n    }\n    if (message.startingMargin !== undefined) {\n      MoneyValue.encode(message.startingMargin, writer.uint32(18).fork()).join();\n    }\n    if (message.minimalMargin !== undefined) {\n      MoneyValue.encode(message.minimalMargin, writer.uint32(26).fork()).join();\n    }\n    if (message.fundsSufficiencyLevel !== undefined) {\n      Quotation.encode(message.fundsSufficiencyLevel, writer.uint32(34).fork()).join();\n    }\n    if (message.amountOfMissingFunds !== undefined) {\n      MoneyValue.encode(message.amountOfMissingFunds, writer.uint32(42).fork()).join();\n    }\n    if (message.correctedMargin !== undefined) {\n      MoneyValue.encode(message.correctedMargin, writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetMarginAttributesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetMarginAttributesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.liquidPortfolio = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.startingMargin = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.minimalMargin = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.fundsSufficiencyLevel = Quotation.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.amountOfMissingFunds = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.correctedMargin = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetMarginAttributesResponse {\n    return {\n      liquidPortfolio: isSet(object.liquidPortfolio) ? MoneyValue.fromJSON(object.liquidPortfolio) : undefined,\n      startingMargin: isSet(object.startingMargin) ? MoneyValue.fromJSON(object.startingMargin) : undefined,\n      minimalMargin: isSet(object.minimalMargin) ? MoneyValue.fromJSON(object.minimalMargin) : undefined,\n      fundsSufficiencyLevel: isSet(object.fundsSufficiencyLevel)\n        ? Quotation.fromJSON(object.fundsSufficiencyLevel)\n        : undefined,\n      amountOfMissingFunds: isSet(object.amountOfMissingFunds)\n        ? MoneyValue.fromJSON(object.amountOfMissingFunds)\n        : undefined,\n      correctedMargin: isSet(object.correctedMargin) ? MoneyValue.fromJSON(object.correctedMargin) : undefined,\n    };\n  },\n\n  toJSON(message: GetMarginAttributesResponse): unknown {\n    const obj: any = {};\n    if (message.liquidPortfolio !== undefined) {\n      obj.liquidPortfolio = MoneyValue.toJSON(message.liquidPortfolio);\n    }\n    if (message.startingMargin !== undefined) {\n      obj.startingMargin = MoneyValue.toJSON(message.startingMargin);\n    }\n    if (message.minimalMargin !== undefined) {\n      obj.minimalMargin = MoneyValue.toJSON(message.minimalMargin);\n    }\n    if (message.fundsSufficiencyLevel !== undefined) {\n      obj.fundsSufficiencyLevel = Quotation.toJSON(message.fundsSufficiencyLevel);\n    }\n    if (message.amountOfMissingFunds !== undefined) {\n      obj.amountOfMissingFunds = MoneyValue.toJSON(message.amountOfMissingFunds);\n    }\n    if (message.correctedMargin !== undefined) {\n      obj.correctedMargin = MoneyValue.toJSON(message.correctedMargin);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetMarginAttributesResponse>): GetMarginAttributesResponse {\n    return GetMarginAttributesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetMarginAttributesResponse>): GetMarginAttributesResponse {\n    const message = createBaseGetMarginAttributesResponse();\n    message.liquidPortfolio = (object.liquidPortfolio !== undefined && object.liquidPortfolio !== null)\n      ? MoneyValue.fromPartial(object.liquidPortfolio)\n      : undefined;\n    message.startingMargin = (object.startingMargin !== undefined && object.startingMargin !== null)\n      ? MoneyValue.fromPartial(object.startingMargin)\n      : undefined;\n    message.minimalMargin = (object.minimalMargin !== undefined && object.minimalMargin !== null)\n      ? MoneyValue.fromPartial(object.minimalMargin)\n      : undefined;\n    message.fundsSufficiencyLevel =\n      (object.fundsSufficiencyLevel !== undefined && object.fundsSufficiencyLevel !== null)\n        ? Quotation.fromPartial(object.fundsSufficiencyLevel)\n        : undefined;\n    message.amountOfMissingFunds = (object.amountOfMissingFunds !== undefined && object.amountOfMissingFunds !== null)\n      ? MoneyValue.fromPartial(object.amountOfMissingFunds)\n      : undefined;\n    message.correctedMargin = (object.correctedMargin !== undefined && object.correctedMargin !== null)\n      ? MoneyValue.fromPartial(object.correctedMargin)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetUserTariffRequest(): GetUserTariffRequest {\n  return {};\n}\n\nexport const GetUserTariffRequest: MessageFns<GetUserTariffRequest> = {\n  encode(_: GetUserTariffRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetUserTariffRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetUserTariffRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): GetUserTariffRequest {\n    return {};\n  },\n\n  toJSON(_: GetUserTariffRequest): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetUserTariffRequest>): GetUserTariffRequest {\n    return GetUserTariffRequest.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<GetUserTariffRequest>): GetUserTariffRequest {\n    const message = createBaseGetUserTariffRequest();\n    return message;\n  },\n};\n\nfunction createBaseGetUserTariffResponse(): GetUserTariffResponse {\n  return { unaryLimits: [], streamLimits: [] };\n}\n\nexport const GetUserTariffResponse: MessageFns<GetUserTariffResponse> = {\n  encode(message: GetUserTariffResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    for (const v of message.unaryLimits) {\n      UnaryLimit.encode(v!, writer.uint32(10).fork()).join();\n    }\n    for (const v of message.streamLimits) {\n      StreamLimit.encode(v!, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetUserTariffResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetUserTariffResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.unaryLimits.push(UnaryLimit.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.streamLimits.push(StreamLimit.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetUserTariffResponse {\n    return {\n      unaryLimits: globalThis.Array.isArray(object?.unaryLimits)\n        ? object.unaryLimits.map((e: any) => UnaryLimit.fromJSON(e))\n        : [],\n      streamLimits: globalThis.Array.isArray(object?.streamLimits)\n        ? object.streamLimits.map((e: any) => StreamLimit.fromJSON(e))\n        : [],\n    };\n  },\n\n  toJSON(message: GetUserTariffResponse): unknown {\n    const obj: any = {};\n    if (message.unaryLimits?.length) {\n      obj.unaryLimits = message.unaryLimits.map((e) => UnaryLimit.toJSON(e));\n    }\n    if (message.streamLimits?.length) {\n      obj.streamLimits = message.streamLimits.map((e) => StreamLimit.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetUserTariffResponse>): GetUserTariffResponse {\n    return GetUserTariffResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetUserTariffResponse>): GetUserTariffResponse {\n    const message = createBaseGetUserTariffResponse();\n    message.unaryLimits = object.unaryLimits?.map((e) => UnaryLimit.fromPartial(e)) || [];\n    message.streamLimits = object.streamLimits?.map((e) => StreamLimit.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseUnaryLimit(): UnaryLimit {\n  return { limitPerMinute: 0, methods: [] };\n}\n\nexport const UnaryLimit: MessageFns<UnaryLimit> = {\n  encode(message: UnaryLimit, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.limitPerMinute !== 0) {\n      writer.uint32(8).int32(message.limitPerMinute);\n    }\n    for (const v of message.methods) {\n      writer.uint32(18).string(v!);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UnaryLimit {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUnaryLimit();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.limitPerMinute = reader.int32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.methods.push(reader.string());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UnaryLimit {\n    return {\n      limitPerMinute: isSet(object.limitPerMinute) ? globalThis.Number(object.limitPerMinute) : 0,\n      methods: globalThis.Array.isArray(object?.methods) ? object.methods.map((e: any) => globalThis.String(e)) : [],\n    };\n  },\n\n  toJSON(message: UnaryLimit): unknown {\n    const obj: any = {};\n    if (message.limitPerMinute !== 0) {\n      obj.limitPerMinute = Math.round(message.limitPerMinute);\n    }\n    if (message.methods?.length) {\n      obj.methods = message.methods;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UnaryLimit>): UnaryLimit {\n    return UnaryLimit.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UnaryLimit>): UnaryLimit {\n    const message = createBaseUnaryLimit();\n    message.limitPerMinute = object.limitPerMinute ?? 0;\n    message.methods = object.methods?.map((e) => e) || [];\n    return message;\n  },\n};\n\nfunction createBaseStreamLimit(): StreamLimit {\n  return { limit: 0, streams: [], open: 0 };\n}\n\nexport const StreamLimit: MessageFns<StreamLimit> = {\n  encode(message: StreamLimit, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.limit !== 0) {\n      writer.uint32(8).int32(message.limit);\n    }\n    for (const v of message.streams) {\n      writer.uint32(18).string(v!);\n    }\n    if (message.open !== 0) {\n      writer.uint32(24).int32(message.open);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): StreamLimit {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStreamLimit();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.limit = reader.int32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.streams.push(reader.string());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.open = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): StreamLimit {\n    return {\n      limit: isSet(object.limit) ? globalThis.Number(object.limit) : 0,\n      streams: globalThis.Array.isArray(object?.streams) ? object.streams.map((e: any) => globalThis.String(e)) : [],\n      open: isSet(object.open) ? globalThis.Number(object.open) : 0,\n    };\n  },\n\n  toJSON(message: StreamLimit): unknown {\n    const obj: any = {};\n    if (message.limit !== 0) {\n      obj.limit = Math.round(message.limit);\n    }\n    if (message.streams?.length) {\n      obj.streams = message.streams;\n    }\n    if (message.open !== 0) {\n      obj.open = Math.round(message.open);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<StreamLimit>): StreamLimit {\n    return StreamLimit.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<StreamLimit>): StreamLimit {\n    const message = createBaseStreamLimit();\n    message.limit = object.limit ?? 0;\n    message.streams = object.streams?.map((e) => e) || [];\n    message.open = object.open ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseGetInfoRequest(): GetInfoRequest {\n  return {};\n}\n\nexport const GetInfoRequest: MessageFns<GetInfoRequest> = {\n  encode(_: GetInfoRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetInfoRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetInfoRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): GetInfoRequest {\n    return {};\n  },\n\n  toJSON(_: GetInfoRequest): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetInfoRequest>): GetInfoRequest {\n    return GetInfoRequest.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<GetInfoRequest>): GetInfoRequest {\n    const message = createBaseGetInfoRequest();\n    return message;\n  },\n};\n\nfunction createBaseGetInfoResponse(): GetInfoResponse {\n  return { premStatus: false, qualStatus: false, qualifiedForWorkWith: [], tariff: \"\" };\n}\n\nexport const GetInfoResponse: MessageFns<GetInfoResponse> = {\n  encode(message: GetInfoResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.premStatus !== false) {\n      writer.uint32(8).bool(message.premStatus);\n    }\n    if (message.qualStatus !== false) {\n      writer.uint32(16).bool(message.qualStatus);\n    }\n    for (const v of message.qualifiedForWorkWith) {\n      writer.uint32(26).string(v!);\n    }\n    if (message.tariff !== \"\") {\n      writer.uint32(34).string(message.tariff);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetInfoResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetInfoResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.premStatus = reader.bool();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.qualStatus = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.qualifiedForWorkWith.push(reader.string());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.tariff = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetInfoResponse {\n    return {\n      premStatus: isSet(object.premStatus) ? globalThis.Boolean(object.premStatus) : false,\n      qualStatus: isSet(object.qualStatus) ? globalThis.Boolean(object.qualStatus) : false,\n      qualifiedForWorkWith: globalThis.Array.isArray(object?.qualifiedForWorkWith)\n        ? object.qualifiedForWorkWith.map((e: any) => globalThis.String(e))\n        : [],\n      tariff: isSet(object.tariff) ? globalThis.String(object.tariff) : \"\",\n    };\n  },\n\n  toJSON(message: GetInfoResponse): unknown {\n    const obj: any = {};\n    if (message.premStatus !== false) {\n      obj.premStatus = message.premStatus;\n    }\n    if (message.qualStatus !== false) {\n      obj.qualStatus = message.qualStatus;\n    }\n    if (message.qualifiedForWorkWith?.length) {\n      obj.qualifiedForWorkWith = message.qualifiedForWorkWith;\n    }\n    if (message.tariff !== \"\") {\n      obj.tariff = message.tariff;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetInfoResponse>): GetInfoResponse {\n    return GetInfoResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetInfoResponse>): GetInfoResponse {\n    const message = createBaseGetInfoResponse();\n    message.premStatus = object.premStatus ?? false;\n    message.qualStatus = object.qualStatus ?? false;\n    message.qualifiedForWorkWith = object.qualifiedForWorkWith?.map((e) => e) || [];\n    message.tariff = object.tariff ?? \"\";\n    return message;\n  },\n};\n\n/**\n * С помощью сервиса можно получить: </br> 1.\n * список счетов пользователя; </br> 2. маржинальные показатели по счёту.\n */\nexport type UsersServiceDefinition = typeof UsersServiceDefinition;\nexport const UsersServiceDefinition = {\n  name: \"UsersService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.UsersService\",\n  methods: {\n    /** Получить счета пользователя. */\n    getAccounts: {\n      name: \"GetAccounts\",\n      requestType: GetAccountsRequest,\n      requestStream: false,\n      responseType: GetAccountsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Рассчитать маржинальные показатели по счёту. */\n    getMarginAttributes: {\n      name: \"GetMarginAttributes\",\n      requestType: GetMarginAttributesRequest,\n      requestStream: false,\n      responseType: GetMarginAttributesResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Запросить тариф пользователя. */\n    getUserTariff: {\n      name: \"GetUserTariff\",\n      requestType: GetUserTariffRequest,\n      requestStream: false,\n      responseType: GetUserTariffResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить информацию о пользователе. */\n    getInfo: {\n      name: \"GetInfo\",\n      requestType: GetInfoRequest,\n      requestStream: false,\n      responseType: GetInfoResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface UsersServiceImplementation<CallContextExt = {}> {\n  /** Получить счета пользователя. */\n  getAccounts(\n    request: GetAccountsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetAccountsResponse>>;\n  /** Рассчитать маржинальные показатели по счёту. */\n  getMarginAttributes(\n    request: GetMarginAttributesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetMarginAttributesResponse>>;\n  /** Запросить тариф пользователя. */\n  getUserTariff(\n    request: GetUserTariffRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetUserTariffResponse>>;\n  /** Получить информацию о пользователе. */\n  getInfo(request: GetInfoRequest, context: CallContext & CallContextExt): Promise<DeepPartial<GetInfoResponse>>;\n}\n\nexport interface UsersServiceClient<CallOptionsExt = {}> {\n  /** Получить счета пользователя. */\n  getAccounts(\n    request: DeepPartial<GetAccountsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetAccountsResponse>;\n  /** Рассчитать маржинальные показатели по счёту. */\n  getMarginAttributes(\n    request: DeepPartial<GetMarginAttributesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetMarginAttributesResponse>;\n  /** Запросить тариф пользователя. */\n  getUserTariff(\n    request: DeepPartial<GetUserTariffRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetUserTariffResponse>;\n  /** Получить информацию о пользователе. */\n  getInfo(request: DeepPartial<GetInfoRequest>, options?: CallOptions & CallOptionsExt): Promise<GetInfoResponse>;\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n","import { createChannel, createClientFactory, ChannelCredentials, Metadata } from 'nice-grpc';\nimport {\n    InstrumentsServiceClient,\n    InstrumentsServiceDefinition,\n} from './api/instruments';\nimport {\n    OrdersStreamServiceClient,\n    OrdersStreamServiceDefinition,\n    OrdersServiceClient,\n    OrdersServiceDefinition\n} from './api/orders';\nimport {\n    OperationsServiceClient,\n    OperationsServiceDefinition,\n    OperationsStreamServiceClient,\n    OperationsStreamServiceDefinition\n} from './api/operations';\nimport {\n    MarketDataServiceClient,\n    MarketDataServiceDefinition,\n    MarketDataStreamServiceClient,\n    MarketDataStreamServiceDefinition\n} from './api/marketdata';\nimport {\n    StopOrdersServiceClient,\n    StopOrdersServiceDefinition\n} from './api/stoporders';\nimport {\n    UsersServiceClient,\n    UsersServiceDefinition\n} from './api/users';\n\n\ninterface TTechAPIClientOptions {\n    token: string;\n    url?: string;\n\n    metadata?: Record<string, string>;\n}\n\n\n\nclass TTechApiClient {\n\n    instruments: InstrumentsServiceClient;\n    ordersStream: OrdersStreamServiceClient;\n    orders: OrdersServiceClient;\n    operations: OperationsServiceClient;\n    operationsStream: OperationsStreamServiceClient;\n    marketdata: MarketDataServiceClient;\n    marketdataStream: MarketDataStreamServiceClient;\n    stopOrders: StopOrdersServiceClient;\n    users: UsersServiceClient;\n\n\n    constructor(config: TTechAPIClientOptions) {\n        var token = config.token;\n        var url = config.url || 'https://invest-public-api.tinkoff.ru';\n\n        const providedMetadata = config.metadata || {}\n\n        var clientFactory = createClientFactory()\n            .use((call, options) =>\n                call.next(call.request, {\n                    ...options,\n                    metadata: Metadata(options.metadata).set(\n                        'Authorization',\n                        `Bearer ${token}`,\n                    ),\n                }),\n            );\n\n        const channel = createChannel(url, ChannelCredentials.createSsl());\n\n        this.instruments = clientFactory.create(\n            InstrumentsServiceDefinition,\n            channel,\n        );\n        this.ordersStream = clientFactory.create(\n            OrdersStreamServiceDefinition,\n            channel\n        );\n        this.orders = clientFactory.create(\n            OrdersServiceDefinition,\n            channel\n        );\n        this.operations = clientFactory.create(\n            OperationsServiceDefinition,\n            channel\n        );\n        this.operationsStream = clientFactory.create(\n            OperationsStreamServiceDefinition,\n            channel\n        );\n        this.marketdata = clientFactory.create(\n            MarketDataServiceDefinition,\n            channel\n        );\n        this.marketdataStream = clientFactory.create(\n            MarketDataStreamServiceDefinition,\n            channel\n        );\n        this.stopOrders = clientFactory.create(\n            StopOrdersServiceDefinition,\n            channel\n        );\n        this.users = clientFactory.create(\n            UsersServiceDefinition,\n            channel\n        );\n    }\n\n}\n\nexport { TTechApiClient }\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.6.1\n//   protoc               v3.19.1\n// source: sandbox.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport { MoneyValue } from \"./common\";\nimport {\n  GetOperationsByCursorRequest,\n  GetOperationsByCursorResponse,\n  OperationsRequest,\n  OperationsResponse,\n  PortfolioRequest,\n  PortfolioResponse,\n  PositionsRequest,\n  PositionsResponse,\n  WithdrawLimitsRequest,\n  WithdrawLimitsResponse,\n} from \"./operations\";\nimport {\n  CancelOrderRequest,\n  CancelOrderResponse,\n  GetMaxLotsRequest,\n  GetMaxLotsResponse,\n  GetOrdersRequest,\n  GetOrdersResponse,\n  GetOrderStateRequest,\n  OrderState,\n  PostOrderRequest,\n  PostOrderResponse,\n  ReplaceOrderRequest,\n} from \"./orders\";\nimport { GetAccountsRequest, GetAccountsResponse } from \"./users\";\n\n/** Запрос открытия счёта в песочнице. */\nexport interface OpenSandboxAccountRequest {\n  /** Название счёта */\n  name?: string | undefined;\n}\n\n/** Номер открытого счёта в песочнице. */\nexport interface OpenSandboxAccountResponse {\n  /** Номер счёта */\n  accountId: string;\n}\n\n/** Запрос закрытия счёта в песочнице. */\nexport interface CloseSandboxAccountRequest {\n  /** Номер счёта */\n  accountId: string;\n}\n\n/** Результат закрытия счёта в песочнице. */\nexport interface CloseSandboxAccountResponse {\n}\n\n/** Запрос пополнения счёта в песочнице. */\nexport interface SandboxPayInRequest {\n  /** Номер счёта */\n  accountId: string;\n  /** Сумма пополнения счёта в рублях */\n  amount: MoneyValue | undefined;\n}\n\n/** Результат пополнения счёта, текущий баланс. */\nexport interface SandboxPayInResponse {\n  /** Текущий баланс счёта */\n  balance: MoneyValue | undefined;\n}\n\nfunction createBaseOpenSandboxAccountRequest(): OpenSandboxAccountRequest {\n  return { name: undefined };\n}\n\ninterface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n\n\nexport const OpenSandboxAccountRequest: MessageFns<OpenSandboxAccountRequest> = {\n  encode(message: OpenSandboxAccountRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OpenSandboxAccountRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOpenSandboxAccountRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OpenSandboxAccountRequest {\n    return { name: isSet(object.name) ? globalThis.String(object.name) : undefined };\n  },\n\n  toJSON(message: OpenSandboxAccountRequest): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OpenSandboxAccountRequest>): OpenSandboxAccountRequest {\n    return OpenSandboxAccountRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OpenSandboxAccountRequest>): OpenSandboxAccountRequest {\n    const message = createBaseOpenSandboxAccountRequest();\n    message.name = object.name ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseOpenSandboxAccountResponse(): OpenSandboxAccountResponse {\n  return { accountId: \"\" };\n}\n\nexport const OpenSandboxAccountResponse: MessageFns<OpenSandboxAccountResponse> = {\n  encode(message: OpenSandboxAccountResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OpenSandboxAccountResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOpenSandboxAccountResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OpenSandboxAccountResponse {\n    return { accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\" };\n  },\n\n  toJSON(message: OpenSandboxAccountResponse): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OpenSandboxAccountResponse>): OpenSandboxAccountResponse {\n    return OpenSandboxAccountResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OpenSandboxAccountResponse>): OpenSandboxAccountResponse {\n    const message = createBaseOpenSandboxAccountResponse();\n    message.accountId = object.accountId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseCloseSandboxAccountRequest(): CloseSandboxAccountRequest {\n  return { accountId: \"\" };\n}\n\nexport const CloseSandboxAccountRequest: MessageFns<CloseSandboxAccountRequest> = {\n  encode(message: CloseSandboxAccountRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CloseSandboxAccountRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCloseSandboxAccountRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CloseSandboxAccountRequest {\n    return { accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\" };\n  },\n\n  toJSON(message: CloseSandboxAccountRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CloseSandboxAccountRequest>): CloseSandboxAccountRequest {\n    return CloseSandboxAccountRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CloseSandboxAccountRequest>): CloseSandboxAccountRequest {\n    const message = createBaseCloseSandboxAccountRequest();\n    message.accountId = object.accountId ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseCloseSandboxAccountResponse(): CloseSandboxAccountResponse {\n  return {};\n}\n\nexport const CloseSandboxAccountResponse: MessageFns<CloseSandboxAccountResponse> = {\n  encode(_: CloseSandboxAccountResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CloseSandboxAccountResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCloseSandboxAccountResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): CloseSandboxAccountResponse {\n    return {};\n  },\n\n  toJSON(_: CloseSandboxAccountResponse): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<CloseSandboxAccountResponse>): CloseSandboxAccountResponse {\n    return CloseSandboxAccountResponse.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<CloseSandboxAccountResponse>): CloseSandboxAccountResponse {\n    const message = createBaseCloseSandboxAccountResponse();\n    return message;\n  },\n};\n\nfunction createBaseSandboxPayInRequest(): SandboxPayInRequest {\n  return { accountId: \"\", amount: undefined };\n}\n\nexport const SandboxPayInRequest: MessageFns<SandboxPayInRequest> = {\n  encode(message: SandboxPayInRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accountId !== \"\") {\n      writer.uint32(10).string(message.accountId);\n    }\n    if (message.amount !== undefined) {\n      MoneyValue.encode(message.amount, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SandboxPayInRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSandboxPayInRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accountId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.amount = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SandboxPayInRequest {\n    return {\n      accountId: isSet(object.accountId) ? globalThis.String(object.accountId) : \"\",\n      amount: isSet(object.amount) ? MoneyValue.fromJSON(object.amount) : undefined,\n    };\n  },\n\n  toJSON(message: SandboxPayInRequest): unknown {\n    const obj: any = {};\n    if (message.accountId !== \"\") {\n      obj.accountId = message.accountId;\n    }\n    if (message.amount !== undefined) {\n      obj.amount = MoneyValue.toJSON(message.amount);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SandboxPayInRequest>): SandboxPayInRequest {\n    return SandboxPayInRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SandboxPayInRequest>): SandboxPayInRequest {\n    const message = createBaseSandboxPayInRequest();\n    message.accountId = object.accountId ?? \"\";\n    message.amount = (object.amount !== undefined && object.amount !== null)\n      ? MoneyValue.fromPartial(object.amount)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSandboxPayInResponse(): SandboxPayInResponse {\n  return { balance: undefined };\n}\n\nexport const SandboxPayInResponse: MessageFns<SandboxPayInResponse> = {\n  encode(message: SandboxPayInResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.balance !== undefined) {\n      MoneyValue.encode(message.balance, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SandboxPayInResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSandboxPayInResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.balance = MoneyValue.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SandboxPayInResponse {\n    return { balance: isSet(object.balance) ? MoneyValue.fromJSON(object.balance) : undefined };\n  },\n\n  toJSON(message: SandboxPayInResponse): unknown {\n    const obj: any = {};\n    if (message.balance !== undefined) {\n      obj.balance = MoneyValue.toJSON(message.balance);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SandboxPayInResponse>): SandboxPayInResponse {\n    return SandboxPayInResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SandboxPayInResponse>): SandboxPayInResponse {\n    const message = createBaseSandboxPayInResponse();\n    message.balance = (object.balance !== undefined && object.balance !== null)\n      ? MoneyValue.fromPartial(object.balance)\n      : undefined;\n    return message;\n  },\n};\n\n/** Методы для работы с песочницей T-Invest API */\nexport type SandboxServiceDefinition = typeof SandboxServiceDefinition;\nexport const SandboxServiceDefinition = {\n  name: \"SandboxService\",\n  fullName: \"tinkoff.public.invest.api.contract.v1.SandboxService\",\n  methods: {\n    /** Зарегистрировать счёт. */\n    openSandboxAccount: {\n      name: \"OpenSandboxAccount\",\n      requestType: OpenSandboxAccountRequest,\n      requestStream: false,\n      responseType: OpenSandboxAccountResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить счета. */\n    getSandboxAccounts: {\n      name: \"GetSandboxAccounts\",\n      requestType: GetAccountsRequest,\n      requestStream: false,\n      responseType: GetAccountsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Закрыть счёт. */\n    closeSandboxAccount: {\n      name: \"CloseSandboxAccount\",\n      requestType: CloseSandboxAccountRequest,\n      requestStream: false,\n      responseType: CloseSandboxAccountResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Выставить торговое поручение. */\n    postSandboxOrder: {\n      name: \"PostSandboxOrder\",\n      requestType: PostOrderRequest,\n      requestStream: false,\n      responseType: PostOrderResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Изменить выставленную заявку. */\n    replaceSandboxOrder: {\n      name: \"ReplaceSandboxOrder\",\n      requestType: ReplaceOrderRequest,\n      requestStream: false,\n      responseType: PostOrderResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить список активных заявок по счёту. */\n    getSandboxOrders: {\n      name: \"GetSandboxOrders\",\n      requestType: GetOrdersRequest,\n      requestStream: false,\n      responseType: GetOrdersResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Отменить торговое поручение. */\n    cancelSandboxOrder: {\n      name: \"CancelSandboxOrder\",\n      requestType: CancelOrderRequest,\n      requestStream: false,\n      responseType: CancelOrderResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Поулчить статус заявки в песочнице. Заявки хранятся в таблице 7 дней. */\n    getSandboxOrderState: {\n      name: \"GetSandboxOrderState\",\n      requestType: GetOrderStateRequest,\n      requestStream: false,\n      responseType: OrderState,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить позиции по виртуальному счёту. */\n    getSandboxPositions: {\n      name: \"GetSandboxPositions\",\n      requestType: PositionsRequest,\n      requestStream: false,\n      responseType: PositionsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить операции по номеру счёта. */\n    getSandboxOperations: {\n      name: \"GetSandboxOperations\",\n      requestType: OperationsRequest,\n      requestStream: false,\n      responseType: OperationsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить операции по номеру счёта с пагинацией. */\n    getSandboxOperationsByCursor: {\n      name: \"GetSandboxOperationsByCursor\",\n      requestType: GetOperationsByCursorRequest,\n      requestStream: false,\n      responseType: GetOperationsByCursorResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить портфель. */\n    getSandboxPortfolio: {\n      name: \"GetSandboxPortfolio\",\n      requestType: PortfolioRequest,\n      requestStream: false,\n      responseType: PortfolioResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Пополнить счёт. */\n    sandboxPayIn: {\n      name: \"SandboxPayIn\",\n      requestType: SandboxPayInRequest,\n      requestStream: false,\n      responseType: SandboxPayInResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Получить доступный остаток для вывода средств. */\n    getSandboxWithdrawLimits: {\n      name: \"GetSandboxWithdrawLimits\",\n      requestType: WithdrawLimitsRequest,\n      requestStream: false,\n      responseType: WithdrawLimitsResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Расчёт количества доступных для покупки/продажи лотов в песочнице. */\n    getSandboxMaxLots: {\n      name: \"GetSandboxMaxLots\",\n      requestType: GetMaxLotsRequest,\n      requestStream: false,\n      responseType: GetMaxLotsResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface SandboxServiceImplementation<CallContextExt = {}> {\n  /** Зарегистрировать счёт. */\n  openSandboxAccount(\n    request: OpenSandboxAccountRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OpenSandboxAccountResponse>>;\n  /** Получить счета. */\n  getSandboxAccounts(\n    request: GetAccountsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetAccountsResponse>>;\n  /** Закрыть счёт. */\n  closeSandboxAccount(\n    request: CloseSandboxAccountRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<CloseSandboxAccountResponse>>;\n  /** Выставить торговое поручение. */\n  postSandboxOrder(\n    request: PostOrderRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PostOrderResponse>>;\n  /** Изменить выставленную заявку. */\n  replaceSandboxOrder(\n    request: ReplaceOrderRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PostOrderResponse>>;\n  /** Получить список активных заявок по счёту. */\n  getSandboxOrders(\n    request: GetOrdersRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetOrdersResponse>>;\n  /** Отменить торговое поручение. */\n  cancelSandboxOrder(\n    request: CancelOrderRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<CancelOrderResponse>>;\n  /** Поулчить статус заявки в песочнице. Заявки хранятся в таблице 7 дней. */\n  getSandboxOrderState(\n    request: GetOrderStateRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OrderState>>;\n  /** Получить позиции по виртуальному счёту. */\n  getSandboxPositions(\n    request: PositionsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PositionsResponse>>;\n  /** Получить операции по номеру счёта. */\n  getSandboxOperations(\n    request: OperationsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationsResponse>>;\n  /** Получить операции по номеру счёта с пагинацией. */\n  getSandboxOperationsByCursor(\n    request: GetOperationsByCursorRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetOperationsByCursorResponse>>;\n  /** Получить портфель. */\n  getSandboxPortfolio(\n    request: PortfolioRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PortfolioResponse>>;\n  /** Пополнить счёт. */\n  sandboxPayIn(\n    request: SandboxPayInRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<SandboxPayInResponse>>;\n  /** Получить доступный остаток для вывода средств. */\n  getSandboxWithdrawLimits(\n    request: WithdrawLimitsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<WithdrawLimitsResponse>>;\n  /** Расчёт количества доступных для покупки/продажи лотов в песочнице. */\n  getSandboxMaxLots(\n    request: GetMaxLotsRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<GetMaxLotsResponse>>;\n}\n\nexport interface SandboxServiceClient<CallOptionsExt = {}> {\n  /** Зарегистрировать счёт. */\n  openSandboxAccount(\n    request: DeepPartial<OpenSandboxAccountRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OpenSandboxAccountResponse>;\n  /** Получить счета. */\n  getSandboxAccounts(\n    request: DeepPartial<GetAccountsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetAccountsResponse>;\n  /** Закрыть счёт. */\n  closeSandboxAccount(\n    request: DeepPartial<CloseSandboxAccountRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<CloseSandboxAccountResponse>;\n  /** Выставить торговое поручение. */\n  postSandboxOrder(\n    request: DeepPartial<PostOrderRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PostOrderResponse>;\n  /** Изменить выставленную заявку. */\n  replaceSandboxOrder(\n    request: DeepPartial<ReplaceOrderRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PostOrderResponse>;\n  /** Получить список активных заявок по счёту. */\n  getSandboxOrders(\n    request: DeepPartial<GetOrdersRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetOrdersResponse>;\n  /** Отменить торговое поручение. */\n  cancelSandboxOrder(\n    request: DeepPartial<CancelOrderRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<CancelOrderResponse>;\n  /** Поулчить статус заявки в песочнице. Заявки хранятся в таблице 7 дней. */\n  getSandboxOrderState(\n    request: DeepPartial<GetOrderStateRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OrderState>;\n  /** Получить позиции по виртуальному счёту. */\n  getSandboxPositions(\n    request: DeepPartial<PositionsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PositionsResponse>;\n  /** Получить операции по номеру счёта. */\n  getSandboxOperations(\n    request: DeepPartial<OperationsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationsResponse>;\n  /** Получить операции по номеру счёта с пагинацией. */\n  getSandboxOperationsByCursor(\n    request: DeepPartial<GetOperationsByCursorRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetOperationsByCursorResponse>;\n  /** Получить портфель. */\n  getSandboxPortfolio(\n    request: DeepPartial<PortfolioRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PortfolioResponse>;\n  /** Пополнить счёт. */\n  sandboxPayIn(\n    request: DeepPartial<SandboxPayInRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<SandboxPayInResponse>;\n  /** Получить доступный остаток для вывода средств. */\n  getSandboxWithdrawLimits(\n    request: DeepPartial<WithdrawLimitsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<WithdrawLimitsResponse>;\n  /** Расчёт количества доступных для покупки/продажи лотов в песочнице. */\n  getSandboxMaxLots(\n    request: DeepPartial<GetMaxLotsRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<GetMaxLotsResponse>;\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\ntype DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\n","import { createChannel, createClientFactory, ChannelCredentials, Metadata } from 'nice-grpc';\nimport {\n    InstrumentsServiceClient,\n    InstrumentsServiceDefinition,\n} from './api/instruments';\nimport {\n    OrdersStreamServiceClient,\n    OrdersStreamServiceDefinition,\n    OrdersServiceClient,\n    OrdersServiceDefinition\n} from './api/orders';\nimport {\n    OperationsServiceClient,\n    OperationsServiceDefinition,\n    OperationsStreamServiceClient,\n    OperationsStreamServiceDefinition\n} from './api/operations';\nimport {\n    MarketDataServiceClient,\n    MarketDataServiceDefinition,\n    MarketDataStreamServiceClient,\n    MarketDataStreamServiceDefinition\n} from './api/marketdata';\nimport {\n    SandboxServiceClient,\n    SandboxServiceDefinition\n} from './api/sandbox'\nimport {\n    StopOrdersServiceClient,\n    StopOrdersServiceDefinition\n} from './api/stoporders';\nimport {\n    UsersServiceClient,\n    UsersServiceDefinition\n} from './api/users';\n\n\ninterface TTechAPIClientOptions {\n    token: string;\n    url?: string;\n\n    metadata?: Record<string, string>;\n}\n\n\n\nclass TTechSandboxApiClient {\n\n    instruments: InstrumentsServiceClient;\n    ordersStream: OrdersStreamServiceClient;\n    orders: OrdersServiceClient;\n    operations: OperationsServiceClient;\n    operationsStream: OperationsStreamServiceClient;\n    marketdata: MarketDataServiceClient;\n    marketdataStream: MarketDataStreamServiceClient;\n    stopOrders: StopOrdersServiceClient;\n    users: UsersServiceClient;\n\n    sandbox: SandboxServiceClient;\n\n    constructor(config: TTechAPIClientOptions) {\n        var token = config.token;\n        var url = config.url || 'https://sandbox-invest-public-api.tinkoff.ru';\n\n        const providedMetadata = config.metadata || {}\n\n        var clientFactory = createClientFactory()\n            .use((call, options) =>\n                call.next(call.request, {\n                    ...options,\n                    metadata: Metadata(options.metadata)\n                    .set(\n                        'Authorization',\n                        `Bearer ${token}`,\n                    ),\n                }),\n            );\n\n        const channel = createChannel(url, ChannelCredentials.createSsl());\n\n        this.instruments = clientFactory.create(\n            InstrumentsServiceDefinition,\n            channel,\n        );\n        this.ordersStream = clientFactory.create(\n            OrdersStreamServiceDefinition,\n            channel\n        );\n        this.orders = clientFactory.create(\n            OrdersServiceDefinition,\n            channel\n        );\n        this.operations = clientFactory.create(\n            OperationsServiceDefinition,\n            channel\n        );\n        this.operationsStream = clientFactory.create(\n            OperationsStreamServiceDefinition,\n            channel\n        );\n        this.marketdata = clientFactory.create(\n            MarketDataServiceDefinition,\n            channel\n        );\n        this.marketdataStream = clientFactory.create(\n            MarketDataStreamServiceDefinition,\n            channel\n        );\n        this.stopOrders = clientFactory.create(\n            StopOrdersServiceDefinition,\n            channel\n        );\n        this.users = clientFactory.create(\n            UsersServiceDefinition,\n            channel\n        );\n\n        this.sandbox = clientFactory.create(\n            SandboxServiceDefinition,\n            channel\n        );\n\n    }\n\n}\n\nexport { TTechSandboxApiClient }\n"],"names":["varint64read","lowBits","highBits","shift","b","this","buf","pos","assertBounds","middleByte","Error","varint64write","lo","hi","bytes","i","hasNext","push","splitBits","hasMoreBits","TWO_PWR_32_DBL","int64FromString","dec","minus","slice","base","add1e6digit","begin","end","digit1e6","Number","negate","newBits","uInt64ToString","toUnsigned","String","mid","high","digitA","digitB","digitC","Math","floor","toString","decimalFrom1e7WithLeadingZeros","digit1e7","partial","length","varint32write","value","varint32read","result","readBytes","protoInt64","makeInt64Support","dv","DataView","ArrayBuffer","BigInt","getBigInt64","getBigUint64","setBigInt64","setBigUint64","process","env","BUF_BIGINT_DISABLE","MIN","MAX","UMIN","UMAX","zero","supported","parse","bi","uParse","enc","getInt32","uEnc","setInt32","uDec","assertInt64String","assertUInt64String","bits","negative","int64ToString","test","symbol","Symbol","for","getTextEncoding","undefined","globalThis","te","TextEncoder","td","TextDecoder","encodeUtf8","text","encode","decodeUtf8","decode","checkUtf8","encodeURIComponent","e","WireType","BinaryWriter","constructor","stack","chunks","finish","Uint8Array","len","offset","set","fork","join","chunk","prev","pop","uint32","byteLength","raw","tag","fieldNo","type","assertUInt32","int32","assertInt32","bool","string","float","arg","o","isNaN","isFinite","assertFloat32","buffer","setFloat32","double","setFloat64","fixed32","setUint32","sfixed32","sint32","sfixed64","view","tc","fixed64","int64","sint64","sign","uint64","BinaryReader","varint64","byteOffset","wireType","skip","start","Varint","Bit64","Bit32","LengthDelimited","StartGroup","fn","wt","EndGroup","subarray","RangeError","zze","s","getUint32","getFloat32","getFloat64","isInteger","Timestamp","message","writer","seconds","nanos","input","reader","longToNumber","fromJSON","object","isSet","toJSON","obj","round","create","fromPartial","_object$seconds","_object$nanos","num","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","InstrumentType","InstrumentStatus","SecurityTradingStatus","PriceType","ResultSubscriptionStatus","instrumentTypeFromJSON","INSTRUMENT_TYPE_UNSPECIFIED","INSTRUMENT_TYPE_BOND","INSTRUMENT_TYPE_SHARE","INSTRUMENT_TYPE_CURRENCY","INSTRUMENT_TYPE_ETF","INSTRUMENT_TYPE_FUTURES","INSTRUMENT_TYPE_SP","INSTRUMENT_TYPE_OPTION","INSTRUMENT_TYPE_CLEARING_CERTIFICATE","INSTRUMENT_TYPE_INDEX","INSTRUMENT_TYPE_COMMODITY","UNRECOGNIZED","instrumentTypeToJSON","instrumentStatusFromJSON","INSTRUMENT_STATUS_UNSPECIFIED","INSTRUMENT_STATUS_BASE","INSTRUMENT_STATUS_ALL","instrumentStatusToJSON","securityTradingStatusFromJSON","SECURITY_TRADING_STATUS_UNSPECIFIED","SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING","SECURITY_TRADING_STATUS_OPENING_PERIOD","SECURITY_TRADING_STATUS_CLOSING_PERIOD","SECURITY_TRADING_STATUS_BREAK_IN_TRADING","SECURITY_TRADING_STATUS_NORMAL_TRADING","SECURITY_TRADING_STATUS_CLOSING_AUCTION","SECURITY_TRADING_STATUS_DARK_POOL_AUCTION","SECURITY_TRADING_STATUS_DISCRETE_AUCTION","SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD","SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE","SECURITY_TRADING_STATUS_SESSION_ASSIGNED","SECURITY_TRADING_STATUS_SESSION_CLOSE","SECURITY_TRADING_STATUS_SESSION_OPEN","SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING","SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING","SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING","securityTradingStatusToJSON","priceTypeFromJSON","PRICE_TYPE_UNSPECIFIED","PRICE_TYPE_POINT","PRICE_TYPE_CURRENCY","priceTypeToJSON","resultSubscriptionStatusFromJSON","RESULT_SUBSCRIPTION_STATUS_UNSPECIFIED","RESULT_SUBSCRIPTION_STATUS_OK","RESULT_SUBSCRIPTION_STATUS_ERROR","resultSubscriptionStatusToJSON","MoneyValue","currency","units","nano","_object$currency","_object$units","_object$nano","Quotation","_object$units2","_object$nano2","PingRequest","time","toTimestamp","fromTimestamp","fromJsonTimestamp","toISOString","_object$time","PingDelaySettings","pingDelayMs","_object$pingDelayMs","Ping","streamId","pingRequestTime","_object$time2","_object$streamId","_object$pingRequestTi","Page","limit","pageNumber","_object$limit","_object$pageNumber","PageResponse","totalCount","_object$limit2","_object$pageNumber2","_object$totalCount","ResponseMetadata","trackingId","serverTime","_object$trackingId","_object$serverTime","BrandData","logoName","logoBaseColor","textColor","_object$logoName","_object$logoBaseColor","_object$textColor","ErrorDetail","code","_object$code","_object$message","date","trunc","getTime","t","millis","Date","CouponType","OptionDirection","OptionPaymentType","OptionStyle","OptionSettlementType","InstrumentIdType","ShareType","AssetType","StructuredProductType","EditFavoritesActionType","RealExchange","Recommendation","RiskLevel","BondType","InstrumentExchangeType","GetBondEventsRequest_EventType","GetAssetReportsResponse_AssetReportPeriodType","couponTypeFromJSON","COUPON_TYPE_UNSPECIFIED","COUPON_TYPE_CONSTANT","COUPON_TYPE_FLOATING","COUPON_TYPE_DISCOUNT","COUPON_TYPE_MORTGAGE","COUPON_TYPE_FIX","COUPON_TYPE_VARIABLE","COUPON_TYPE_OTHER","couponTypeToJSON","optionDirectionFromJSON","OPTION_DIRECTION_UNSPECIFIED","OPTION_DIRECTION_PUT","OPTION_DIRECTION_CALL","optionDirectionToJSON","optionPaymentTypeFromJSON","OPTION_PAYMENT_TYPE_UNSPECIFIED","OPTION_PAYMENT_TYPE_PREMIUM","OPTION_PAYMENT_TYPE_MARGINAL","optionPaymentTypeToJSON","optionStyleFromJSON","OPTION_STYLE_UNSPECIFIED","OPTION_STYLE_AMERICAN","OPTION_STYLE_EUROPEAN","optionStyleToJSON","optionSettlementTypeFromJSON","OPTION_EXECUTION_TYPE_UNSPECIFIED","OPTION_EXECUTION_TYPE_PHYSICAL_DELIVERY","OPTION_EXECUTION_TYPE_CASH_SETTLEMENT","optionSettlementTypeToJSON","instrumentIdTypeFromJSON","INSTRUMENT_ID_UNSPECIFIED","INSTRUMENT_ID_TYPE_FIGI","INSTRUMENT_ID_TYPE_TICKER","INSTRUMENT_ID_TYPE_UID","INSTRUMENT_ID_TYPE_POSITION_UID","instrumentIdTypeToJSON","shareTypeFromJSON","SHARE_TYPE_UNSPECIFIED","SHARE_TYPE_COMMON","SHARE_TYPE_PREFERRED","SHARE_TYPE_ADR","SHARE_TYPE_GDR","SHARE_TYPE_MLP","SHARE_TYPE_NY_REG_SHRS","SHARE_TYPE_CLOSED_END_FUND","SHARE_TYPE_REIT","shareTypeToJSON","assetTypeFromJSON","ASSET_TYPE_UNSPECIFIED","ASSET_TYPE_CURRENCY","ASSET_TYPE_COMMODITY","ASSET_TYPE_INDEX","ASSET_TYPE_SECURITY","assetTypeToJSON","structuredProductTypeFromJSON","SP_TYPE_UNSPECIFIED","SP_TYPE_DELIVERABLE","SP_TYPE_NON_DELIVERABLE","structuredProductTypeToJSON","editFavoritesActionTypeFromJSON","EDIT_FAVORITES_ACTION_TYPE_UNSPECIFIED","EDIT_FAVORITES_ACTION_TYPE_ADD","EDIT_FAVORITES_ACTION_TYPE_DEL","editFavoritesActionTypeToJSON","realExchangeFromJSON","REAL_EXCHANGE_UNSPECIFIED","REAL_EXCHANGE_MOEX","REAL_EXCHANGE_RTS","REAL_EXCHANGE_OTC","REAL_EXCHANGE_DEALER","realExchangeToJSON","recommendationFromJSON","RECOMMENDATION_UNSPECIFIED","RECOMMENDATION_BUY","RECOMMENDATION_HOLD","RECOMMENDATION_SELL","recommendationToJSON","riskLevelFromJSON","RISK_LEVEL_UNSPECIFIED","RISK_LEVEL_LOW","RISK_LEVEL_MODERATE","RISK_LEVEL_HIGH","riskLevelToJSON","bondTypeFromJSON","BOND_TYPE_UNSPECIFIED","BOND_TYPE_REPLACED","bondTypeToJSON","instrumentExchangeTypeFromJSON","INSTRUMENT_EXCHANGE_UNSPECIFIED","INSTRUMENT_EXCHANGE_DEALER","instrumentExchangeTypeToJSON","getBondEventsRequest_EventTypeFromJSON","EVENT_TYPE_UNSPECIFIED","EVENT_TYPE_CPN","EVENT_TYPE_CALL","EVENT_TYPE_MTY","EVENT_TYPE_CONV","getBondEventsRequest_EventTypeToJSON","getAssetReportsResponse_AssetReportPeriodTypeFromJSON","PERIOD_TYPE_UNSPECIFIED","PERIOD_TYPE_QUARTER","PERIOD_TYPE_SEMIANNUAL","PERIOD_TYPE_ANNUAL","getAssetReportsResponse_AssetReportPeriodTypeToJSON","TradingSchedulesRequest","exchange","from","to","_object$exchange","_object$from","_object$to","TradingSchedulesResponse","v","exchanges","TradingSchedule","Array","isArray","map","_message$exchanges","_object$exchanges","days","TradingDay","_message$days","_object$exchange2","_object$days","isTradingDay","startTime","endTime","openingAuctionStartTime","closingAuctionEndTime","eveningOpeningAuctionStartTime","eveningStartTime","eveningEndTime","clearingStartTime","clearingEndTime","premarketStartTime","premarketEndTime","closingAuctionStartTime","openingAuctionEndTime","intervals","TradingInterval","Boolean","_message$intervals","_object$date","_object$isTradingDay","_object$startTime","_object$endTime","_object$openingAuctio","_object$closingAuctio","_object$eveningOpenin","_object$eveningStartT","_object$eveningEndTim","_object$clearingStart","_object$clearingEndTi","_object$premarketStar","_object$premarketEndT","_object$closingAuctio2","_object$openingAuctio2","_object$intervals","InstrumentRequest","idType","classCode","id","_object$idType","_object$classCode","_object$id","InstrumentsRequest","instrumentStatus","instrumentExchange","_object$instrumentSta","_object$instrumentExc","FilterOptionsRequest","basicAssetUid","basicAssetPositionUid","_object$basicAssetUid","_object$basicAssetPos","BondResponse","instrument","Bond","BondsResponse","instruments","_message$instruments","_object$instruments","GetBondCouponsRequest","figi","instrumentId","_object$figi","_object$from2","_object$to2","_object$instrumentId","GetBondCouponsResponse","events","Coupon","_message$events","_object$events","GetBondEventsRequest","_object$from3","_object$to3","_object$instrumentId2","_object$type","GetBondEventsResponse","GetBondEventsResponse_BondEvent","_message$events2","_object$events2","eventNumber","eventDate","eventType","eventTotalVol","fixDate","rateDate","defaultDate","realPayDate","payDate","payOneBond","moneyFlowVal","execution","operationType","note","convertToFinToolId","couponStartDate","couponEndDate","couponPeriod","couponInterestRate","_object$instrumentId3","_object$eventNumber","_object$eventDate","_object$eventType","_object$fixDate","_object$rateDate","_object$defaultDate","_object$realPayDate","_object$payDate","_object$execution","_object$operationType","_object$note","_object$convertToFinT","_object$couponStartDa","_object$couponEndDate","_object$couponPeriod","couponDate","couponNumber","couponType","_object$figi2","_object$couponDate","_object$couponNumber","_object$fixDate2","_object$couponType","_object$couponStartDa2","_object$couponEndDate2","_object$couponPeriod2","CurrencyResponse","Currency","CurrenciesResponse","_message$instruments2","_object$instruments2","EtfResponse","Etf","EtfsResponse","_message$instruments3","_object$instruments3","FutureResponse","Future","FuturesResponse","_message$instruments4","_object$instruments4","OptionResponse","Option","OptionsResponse","_message$instruments5","_object$instruments5","uid","positionUid","ticker","tradingStatus","realExchange","direction","paymentType","style","settlementType","name","settlementCurrency","assetType","basicAsset","countryOfRisk","countryOfRiskName","sector","brand","lot","basicAssetSize","klong","kshort","dlong","dshort","dlongMin","dshortMin","minPriceIncrement","strikePrice","dlongClient","dshortClient","expirationDate","firstTradeDate","lastTradeDate","first1minCandleDate","first1dayCandleDate","shortEnabledFlag","forIisFlag","otcFlag","buyAvailableFlag","sellAvailableFlag","forQualInvestorFlag","weekendFlag","blockedTcaFlag","apiTradeAvailableFlag","_object$uid","_object$positionUid","_object$ticker","_object$classCode2","_object$basicAssetPos2","_object$tradingStatus","_object$realExchange","_object$direction","_object$paymentType","_object$style","_object$settlementTyp","_object$name","_object$settlementCur","_object$assetType","_object$basicAsset","_object$exchange3","_object$countryOfRisk","_object$countryOfRisk2","_object$sector","_object$lot","_object$expirationDat","_object$firstTradeDat","_object$lastTradeDate","_object$first1minCand","_object$first1dayCand","_object$shortEnabledF","_object$forIisFlag","_object$otcFlag","_object$buyAvailableF","_object$sellAvailable","_object$forQualInvest","_object$weekendFlag","_object$blockedTcaFla","_object$apiTradeAvail","ShareResponse","Share","SharesResponse","_message$instruments6","_object$instruments6","isin","couponQuantityPerYear","maturityDate","nominal","initialNominal","stateRegDate","placementDate","placementPrice","aciValue","issueKind","issueSize","issueSizePlan","floatingCouponFlag","perpetualFlag","amortizationFlag","assetUid","subordinatedFlag","liquidityFlag","riskLevel","bondType","callDate","_object$figi3","_object$ticker2","_object$classCode3","_object$isin","_object$lot2","_object$currency2","_object$shortEnabledF2","_object$name2","_object$exchange4","_object$couponQuantit","_object$maturityDate","_object$stateRegDate","_object$placementDate","_object$countryOfRisk3","_object$countryOfRisk4","_object$sector2","_object$issueKind","_object$issueSize","_object$issueSizePlan","_object$tradingStatus2","_object$otcFlag2","_object$buyAvailableF2","_object$sellAvailable2","_object$floatingCoupo","_object$perpetualFlag","_object$amortizationF","_object$apiTradeAvail2","_object$uid2","_object$realExchange2","_object$positionUid2","_object$assetUid","_object$forIisFlag2","_object$forQualInvest2","_object$weekendFlag2","_object$blockedTcaFla2","_object$subordinatedF","_object$liquidityFlag","_object$first1minCand2","_object$first1dayCand2","_object$riskLevel","_object$bondType","_object$callDate","isoCurrencyName","_object$figi4","_object$ticker3","_object$classCode4","_object$isin2","_object$lot3","_object$currency3","_object$shortEnabledF3","_object$name3","_object$exchange5","_object$countryOfRisk5","_object$countryOfRisk6","_object$tradingStatus3","_object$otcFlag3","_object$buyAvailableF3","_object$sellAvailable3","_object$isoCurrencyNa","_object$apiTradeAvail3","_object$uid3","_object$realExchange3","_object$positionUid3","_object$forIisFlag3","_object$forQualInvest3","_object$weekendFlag3","_object$blockedTcaFla3","_object$first1minCand3","_object$first1dayCand3","fixedCommission","focusType","releasedDate","numShares","rebalancingFreq","_object$figi5","_object$ticker4","_object$classCode5","_object$isin3","_object$lot4","_object$currency4","_object$shortEnabledF4","_object$name4","_object$exchange6","_object$focusType","_object$releasedDate","_object$countryOfRisk7","_object$countryOfRisk8","_object$sector3","_object$rebalancingFr","_object$tradingStatus4","_object$otcFlag4","_object$buyAvailableF4","_object$sellAvailable4","_object$apiTradeAvail4","_object$uid4","_object$realExchange4","_object$positionUid4","_object$assetUid2","_object$instrumentExc2","_object$forIisFlag4","_object$forQualInvest4","_object$weekendFlag4","_object$blockedTcaFla4","_object$liquidityFlag2","_object$first1minCand4","_object$first1dayCand4","futuresType","initialMarginOnBuy","initialMarginOnSell","minPriceIncrementAmount","_object$figi6","_object$ticker5","_object$classCode6","_object$lot5","_object$currency5","_object$shortEnabledF5","_object$name5","_object$exchange7","_object$firstTradeDat2","_object$lastTradeDate2","_object$futuresType","_object$assetType2","_object$basicAsset2","_object$countryOfRisk9","_object$countryOfRisk10","_object$sector4","_object$expirationDat2","_object$tradingStatus5","_object$otcFlag5","_object$buyAvailableF5","_object$sellAvailable5","_object$apiTradeAvail5","_object$uid5","_object$realExchange5","_object$positionUid5","_object$basicAssetPos3","_object$forIisFlag5","_object$forQualInvest5","_object$weekendFlag5","_object$blockedTcaFla5","_object$first1minCand5","_object$first1dayCand5","ipoDate","divYieldFlag","shareType","_object$figi7","_object$ticker6","_object$classCode7","_object$isin4","_object$lot6","_object$currency6","_object$shortEnabledF6","_object$name6","_object$exchange8","_object$ipoDate","_object$issueSize2","_object$countryOfRisk11","_object$countryOfRisk12","_object$sector5","_object$issueSizePlan2","_object$tradingStatus6","_object$otcFlag6","_object$buyAvailableF6","_object$sellAvailable6","_object$divYieldFlag","_object$shareType","_object$apiTradeAvail6","_object$uid6","_object$realExchange6","_object$positionUid6","_object$assetUid3","_object$instrumentExc3","_object$forIisFlag6","_object$forQualInvest6","_object$weekendFlag6","_object$blockedTcaFla6","_object$liquidityFlag3","_object$first1minCand6","_object$first1dayCand6","GetAccruedInterestsRequest","_object$figi8","_object$from4","_object$to4","_object$instrumentId4","GetAccruedInterestsResponse","accruedInterests","AccruedInterest","_message$accruedInter","_object$accruedIntere","valuePercent","_object$date2","GetFuturesMarginRequest","_object$figi9","_object$instrumentId5","GetFuturesMarginResponse","InstrumentResponse","Instrument","instrumentType","instrumentKind","_object$figi10","_object$ticker7","_object$classCode8","_object$isin5","_object$lot7","_object$currency7","_object$shortEnabledF7","_object$name7","_object$exchange9","_object$countryOfRisk13","_object$countryOfRisk14","_object$instrumentTyp","_object$tradingStatus7","_object$otcFlag7","_object$buyAvailableF7","_object$sellAvailable7","_object$apiTradeAvail7","_object$uid7","_object$realExchange7","_object$positionUid7","_object$assetUid4","_object$forIisFlag7","_object$forQualInvest7","_object$weekendFlag7","_object$blockedTcaFla7","_object$instrumentKin","_object$first1minCand7","_object$first1dayCand7","GetDividendsRequest","_object$figi11","_object$from5","_object$to5","_object$instrumentId6","GetDividendsResponse","dividends","Dividend","_message$dividends","_object$dividends","dividendNet","paymentDate","declaredDate","lastBuyDate","dividendType","recordDate","regularity","closePrice","yieldValue","createdAt","_object$paymentDate","_object$declaredDate","_object$lastBuyDate","_object$dividendType","_object$recordDate","_object$regularity","_object$createdAt","AssetRequest","_object$id2","AssetResponse","asset","AssetFull","AssetsRequest","_object$instrumentTyp2","_object$instrumentSta2","AssetsResponse","assets","Asset","_message$assets","_object$assets","nameBrief","description","deletedAt","requiredTests","AssetCurrency","security","AssetSecurity","gosRegCode","cfi","codeNsd","status","Brand","updatedAt","brCode","brCodeName","AssetInstrument","_message$requiredTest","_message$instruments7","_object$uid8","_object$type2","_object$name8","_object$nameBrief","_object$description","_object$deletedAt","_object$requiredTests","_object$gosRegCode","_object$cfi","_object$codeNsd","_object$status","_object$updatedAt","_object$brCode","_object$brCodeName","_object$instruments7","_message$instruments8","_object$uid9","_object$type3","_object$name9","_object$instruments8","baseCurrency","_object$baseCurrency","share","AssetShare","bond","AssetBond","sp","AssetStructuredProduct","etf","AssetEtf","clearingCertificate","AssetClearingCertificate","_object$isin6","_object$type4","_object$instrumentKin2","nominalCurrency","primaryIndex","dividendRate","preferredShareType","registryDate","represIsin","totalFloat","_object$type5","_object$nominalCurren","_object$primaryIndex","_object$preferredShar","_object$ipoDate2","_object$registryDate","_object$divYieldFlag2","_object$issueKind2","_object$placementDate2","_object$represIsin","currentNominal","borrowName","interestKind","indexedNominalFlag","collateralFlag","taxFreeFlag","returnCondition","_object$borrowName","_object$nominalCurren2","_object$issueKind3","_object$interestKind","_object$couponQuantit2","_object$indexedNomina","_object$subordinatedF2","_object$collateralFla","_object$taxFreeFlag","_object$amortizationF2","_object$floatingCoupo2","_object$perpetualFlag2","_object$maturityDate2","_object$returnConditi","_object$stateRegDate2","_object$placementDate3","logicPortfolio","safetyBarrier","_object$borrowName2","_object$nominalCurren3","_object$type6","_object$logicPortfoli","_object$assetType3","_object$basicAsset3","_object$maturityDate3","_object$placementDate4","_object$issueKind4","totalExpense","hurdleRate","performanceFee","watermarkFlag","buyPremium","sellDiscount","rebalancingFlag","managementType","leveragedFlag","numShare","ucitsFlag","primaryIndexDescription","primaryIndexCompany","indexRecoveryPeriod","inavCode","expenseCommission","primaryIndexTrackingError","rebalancingPlan","taxRate","rebalancingDates","_message$rebalancingD","_object$paymentType2","_object$watermarkFlag","_object$rebalancingFl","_object$rebalancingFr2","_object$managementTyp","_object$primaryIndex2","_object$focusType2","_object$leveragedFlag","_object$ucitsFlag","_object$releasedDate2","_object$description2","_object$primaryIndexD","_object$primaryIndexC","_object$inavCode","_object$divYieldFlag3","_object$rebalancingPl","_object$taxRate","_object$rebalancingDa","_object$issueKind5","_object$nominalCurren4","_object$nominalCurren5","info","company","_object$uid10","_object$name10","_object$description3","_object$info","_object$company","_object$sector6","_object$countryOfRisk15","_object$countryOfRisk16","links","InstrumentLink","_message$links","_object$uid11","_object$figi12","_object$instrumentTyp3","_object$ticker8","_object$classCode9","_object$links","_object$instrumentKin3","_object$positionUid8","instrumentUid","_object$type7","_object$instrumentUid","GetFavoritesRequest","_","GetFavoritesResponse","favoriteInstruments","FavoriteInstrument","_message$favoriteInst","_object$favoriteInstr","_object$figi13","_object$ticker9","_object$classCode10","_object$isin7","_object$instrumentTyp4","_object$name11","_object$uid12","_object$otcFlag8","_object$apiTradeAvail8","_object$instrumentKin4","EditFavoritesRequest","EditFavoritesRequestInstrument","actionType","_message$instruments9","_object$instruments9","_object$actionType","_object$figi14","_object$instrumentId7","EditFavoritesResponse","_message$favoriteInst2","_object$favoriteInstr2","GetCountriesRequest","GetCountriesResponse","countries","CountryResponse","_message$countries","_object$countries","IndicativesRequest","IndicativesResponse","IndicativeResponse","_message$instruments10","_object$instruments10","_object$figi15","_object$ticker10","_object$classCode11","_object$currency8","_object$instrumentKin5","_object$name12","_object$exchange10","_object$uid13","_object$buyAvailableF8","_object$sellAvailable8","alfaTwo","alfaThree","_object$alfaTwo","_object$alfaThree","_object$name13","_object$nameBrief2","FindInstrumentRequest","query","_object$query","_object$instrumentKin6","_object$apiTradeAvail9","FindInstrumentResponse","InstrumentShort","_message$instruments11","_object$instruments11","_object$isin8","_object$figi16","_object$ticker11","_object$classCode12","_object$instrumentTyp5","_object$name14","_object$uid14","_object$positionUid9","_object$instrumentKin7","_object$apiTradeAvail10","_object$forIisFlag8","_object$first1minCand8","_object$first1dayCand8","_object$forQualInvest8","_object$weekendFlag8","_object$blockedTcaFla8","_object$lot8","GetBrandsRequest","paging","GetBrandRequest","_object$id3","GetBrandsResponse","brands","_message$brands","_object$brands","GetAssetFundamentalsRequest","_message$assets2","_object$assets2","GetAssetFundamentalsResponse","fundamentals","GetAssetFundamentalsResponse_StatisticResponse","_message$fundamentals","_object$fundamentals","marketCapitalization","highPriceLast52Weeks","lowPriceLast52Weeks","averageDailyVolumeLast10Days","averageDailyVolumeLast4Weeks","beta","freeFloat","forwardAnnualDividendYield","sharesOutstanding","revenueTtm","ebitdaTtm","netIncomeTtm","epsTtm","dilutedEpsTtm","freeCashFlowTtm","fiveYearAnnualRevenueGrowthRate","threeYearAnnualRevenueGrowthRate","peRatioTtm","priceToSalesTtm","priceToBookTtm","priceToFreeCashFlowTtm","totalEnterpriseValueMrq","evToEbitdaMrq","netMarginMrq","netInterestMarginMrq","roe","roa","roic","totalDebtMrq","totalDebtToEquityMrq","totalDebtToEbitdaMrq","freeCashFlowToPrice","netDebtToEbitda","currentRatioMrq","fixedChargeCoverageRatioFy","dividendYieldDailyTtm","dividendRateTtm","dividendsPerShare","fiveYearsAverageDividendYield","fiveYearAnnualDividendGrowthRate","dividendPayoutRatioFy","buyBackTtm","oneYearAnnualRevenueGrowthRate","domicileIndicatorCode","adrToCommonShareRatio","numberOfEmployees","exDividendDate","fiscalPeriodStartDate","fiscalPeriodEndDate","revenueChangeFiveYears","epsChangeFiveYears","ebitdaChangeFiveYears","totalDebtChangeFiveYears","evToSales","_object$assetUid5","_object$currency9","_object$marketCapital","_object$highPriceLast","_object$lowPriceLast","_object$averageDailyV","_object$averageDailyV2","_object$beta","_object$freeFloat","_object$forwardAnnual","_object$sharesOutstan","_object$revenueTtm","_object$ebitdaTtm","_object$netIncomeTtm","_object$epsTtm","_object$dilutedEpsTtm","_object$freeCashFlowT","_object$fiveYearAnnua","_object$threeYearAnnu","_object$peRatioTtm","_object$priceToSalesT","_object$priceToBookTt","_object$priceToFreeCa","_object$totalEnterpri","_object$evToEbitdaMrq","_object$netMarginMrq","_object$netInterestMa","_object$roe","_object$roa","_object$roic","_object$totalDebtMrq","_object$totalDebtToEq","_object$totalDebtToEb","_object$freeCashFlowT2","_object$netDebtToEbit","_object$currentRatioM","_object$fixedChargeCo","_object$dividendYield","_object$dividendRateT","_object$dividendsPerS","_object$fiveYearsAver","_object$fiveYearAnnua2","_object$dividendPayou","_object$buyBackTtm","_object$oneYearAnnual","_object$domicileIndic","_object$adrToCommonSh","_object$numberOfEmplo","_object$exDividendDat","_object$fiscalPeriodS","_object$fiscalPeriodE","_object$revenueChange","_object$epsChangeFive","_object$ebitdaChangeF","_object$totalDebtChan","_object$evToSales","GetAssetReportsRequest","_object$instrumentId8","_object$from6","_object$to6","GetAssetReportsResponse","GetAssetReportsResponse_GetAssetReportsEvent","_message$events3","_object$events3","reportDate","periodYear","periodNum","periodType","_object$instrumentId9","_object$reportDate","_object$periodYear","_object$periodNum","_object$periodType","_object$createdAt2","GetConsensusForecastsRequest","GetConsensusForecastsResponse","items","GetConsensusForecastsResponse_ConsensusForecastsItem","page","_message$items","_object$items","bestTargetPrice","bestTargetLow","bestTargetHigh","totalBuyRecommend","totalHoldRecommend","totalSellRecommend","consensus","prognosisDate","_object$uid15","_object$assetUid6","_object$createdAt3","_object$totalBuyRecom","_object$totalHoldReco","_object$totalSellReco","_object$currency10","_object$consensus","_object$prognosisDate","GetForecastRequest","_object$instrumentId10","GetForecastResponse","targets","GetForecastResponse_TargetItem","GetForecastResponse_ConsensusItem","_message$targets","_object$targets","recommendation","recommendationDate","currentPrice","targetPrice","priceChange","priceChangeRel","showName","_object$uid16","_object$ticker12","_object$company2","_object$recommendatio","_object$recommendatio2","_object$currency11","_object$showName","minTarget","maxTarget","_object$uid17","_object$ticker13","_object$recommendatio3","_object$currency12","interval","TradingInterval_TimeInterval","_object$type8","startTs","endTs","_object$startTs","_object$endTs","InstrumentsServiceDefinition","fullName","methods","tradingSchedules","requestType","requestStream","responseType","responseStream","options","bondBy","bonds","getBondCoupons","getBondEvents","currencyBy","currencies","etfBy","etfs","futureBy","futures","optionBy","optionsBy","shareBy","shares","indicatives","getAccruedInterests","getFuturesMargin","getInstrumentBy","getDividends","getAssetBy","getAssets","getFavorites","editFavorites","getCountries","findInstrument","getBrands","getBrandBy","getAssetFundamentals","getAssetReports","getConsensusForecasts","getForecastBy","OrderDirection","OrderType","OrderExecutionReportStatus","TimeInForceType","OrderIdType","OrderStateStreamResponse_MarkerType","OrderStateStreamResponse_StatusCauseInfo","orderDirectionFromJSON","ORDER_DIRECTION_UNSPECIFIED","ORDER_DIRECTION_BUY","ORDER_DIRECTION_SELL","orderDirectionToJSON","orderTypeFromJSON","ORDER_TYPE_UNSPECIFIED","ORDER_TYPE_LIMIT","ORDER_TYPE_MARKET","ORDER_TYPE_BESTPRICE","orderTypeToJSON","orderExecutionReportStatusFromJSON","EXECUTION_REPORT_STATUS_UNSPECIFIED","EXECUTION_REPORT_STATUS_FILL","EXECUTION_REPORT_STATUS_REJECTED","EXECUTION_REPORT_STATUS_CANCELLED","EXECUTION_REPORT_STATUS_NEW","EXECUTION_REPORT_STATUS_PARTIALLYFILL","orderExecutionReportStatusToJSON","timeInForceTypeFromJSON","TIME_IN_FORCE_UNSPECIFIED","TIME_IN_FORCE_DAY","TIME_IN_FORCE_FILL_AND_KILL","TIME_IN_FORCE_FILL_OR_KILL","timeInForceTypeToJSON","orderIdTypeFromJSON","ORDER_ID_TYPE_UNSPECIFIED","ORDER_ID_TYPE_EXCHANGE","ORDER_ID_TYPE_REQUEST","orderIdTypeToJSON","orderStateStreamResponse_MarkerTypeFromJSON","MARKER_UNKNOWN","MARKER_BROKER","MARKER_CHAT","MARKER_PAPER","MARKER_MARGIN","MARKER_TKBNM","MARKER_SHORT","MARKER_SPECMM","MARKER_PO","orderStateStreamResponse_MarkerTypeToJSON","orderStateStreamResponse_StatusCauseInfoFromJSON","CAUSE_UNSPECIFIED","CAUSE_CANCELLED_BY_CLIENT","CAUSE_CANCELLED_BY_EXCHANGE","CAUSE_CANCELLED_NOT_ENOUGH_POSITION","CAUSE_CANCELLED_BY_CLIENT_BLOCK","CAUSE_REJECTED_BY_BROKER","CAUSE_REJECTED_BY_EXCHANGE","CAUSE_CANCELLED_BY_BROKER","orderStateStreamResponse_StatusCauseInfoToJSON","TradesStreamRequest","accounts","_message$accounts","_object$accounts","TradesStreamResponse","orderTrades","OrderTrades","ping","subscription","SubscriptionResponse","orderId","trades","OrderTrade","accountId","_message$trades","_object$orderId","_object$trades","_object$accountId","dateTime","price","quantity","tradeId","_object$dateTime","_object$quantity","_object$tradeId","PostOrderRequest","orderType","timeInForce","priceType","_object$quantity2","_object$direction2","_object$accountId2","_object$orderType","_object$orderId2","_object$timeInForce","_object$priceType","PostOrderResponse","executionReportStatus","lotsRequested","lotsExecuted","initialOrderPrice","executedOrderPrice","totalOrderAmount","initialCommission","executedCommission","initialSecurityPrice","initialOrderPricePt","orderRequestId","responseMetadata","_object$orderId3","_object$executionRepo","_object$lotsRequested","_object$lotsExecuted","_object$direction3","_object$orderType2","_object$instrumentUid2","_object$orderRequestI","PostOrderAsyncRequest","_object$quantity3","_object$direction4","_object$accountId3","_object$orderType3","_object$orderId4","_object$timeInForce2","_object$priceType2","PostOrderAsyncResponse","tradeIntentId","_object$orderRequestI2","_object$executionRepo2","_object$tradeIntentId","CancelOrderRequest","orderIdType","_object$accountId4","_object$orderId5","_object$orderIdType","CancelOrderResponse","GetOrderStateRequest","_object$accountId5","_object$orderId6","_object$priceType3","_object$orderIdType2","GetOrdersRequest","_object$accountId6","GetOrdersResponse","orders","OrderState","_message$orders","_object$orders","averagePositionPrice","stages","OrderStage","serviceCommission","orderDate","_message$stages","_object$orderId7","_object$executionRepo3","_object$lotsRequested2","_object$lotsExecuted2","_object$direction5","_object$stages","_object$orderType4","_object$orderDate","_object$instrumentUid3","_object$orderRequestI3","executionTime","_object$quantity4","_object$tradeId2","_object$executionTime","ReplaceOrderRequest","idempotencyKey","_object$accountId7","_object$orderId8","_object$idempotencyKe","_object$quantity5","_object$priceType4","GetMaxLotsRequest","_object$accountId8","GetMaxLotsResponse","buyLimits","GetMaxLotsResponse_BuyLimitsView","buyMarginLimits","sellLimits","GetMaxLotsResponse_SellLimitsView","sellMarginLimits","buyMoneyAmount","buyMaxLots","buyMaxMarketLots","_object$buyMaxLots","_object$buyMaxMarketL","sellMaxLots","_object$sellMaxLots","GetOrderPriceRequest","_object$accountId9","_object$direction6","_object$quantity6","GetOrderPriceResponse","initialOrderAmount","executedCommissionRub","dealCommission","extraBond","GetOrderPriceResponse_ExtraBond","extraFuture","GetOrderPriceResponse_ExtraFuture","_object$lotsRequested3","nominalConversionRate","initialMargin","OrderStateStreamRequest","_message$accounts2","_object$accounts2","_object$pingDelayMs2","error","_message$accounts3","_object$accounts3","OrderStateStreamResponse","orderState","OrderStateStreamResponse_OrderState","clientCode","statusInfo","lotSize","orderPrice","amount","lotsLeft","lotsCancelled","marker","completionTime","_message$trades2","_object$orderId9","_object$orderRequestI4","_object$clientCode","_object$executionRepo4","_object$statusInfo","_object$lotSize","_object$direction7","_object$timeInForce3","_object$orderType5","_object$accountId10","_object$lotsRequested4","_object$lotsExecuted3","_object$lotsLeft","_object$lotsCancelled","_object$marker","_object$trades2","_object$completionTim","_object$instrumentUid4","OrdersStreamServiceDefinition","tradesStream","orderStateStream","OrdersServiceDefinition","postOrder","postOrderAsync","cancelOrder","getOrderState","getOrders","replaceOrder","getMaxLots","getOrderPrice","OperationState","OperationType","PortfolioSubscriptionStatus","PositionsAccountSubscriptionStatus","PortfolioRequest_CurrencyRequest","operationStateFromJSON","OPERATION_STATE_UNSPECIFIED","OPERATION_STATE_EXECUTED","OPERATION_STATE_CANCELED","OPERATION_STATE_PROGRESS","operationStateToJSON","operationTypeFromJSON","OPERATION_TYPE_UNSPECIFIED","OPERATION_TYPE_INPUT","OPERATION_TYPE_BOND_TAX","OPERATION_TYPE_OUTPUT_SECURITIES","OPERATION_TYPE_OVERNIGHT","OPERATION_TYPE_TAX","OPERATION_TYPE_BOND_REPAYMENT_FULL","OPERATION_TYPE_SELL_CARD","OPERATION_TYPE_DIVIDEND_TAX","OPERATION_TYPE_OUTPUT","OPERATION_TYPE_BOND_REPAYMENT","OPERATION_TYPE_TAX_CORRECTION","OPERATION_TYPE_SERVICE_FEE","OPERATION_TYPE_BENEFIT_TAX","OPERATION_TYPE_MARGIN_FEE","OPERATION_TYPE_BUY","OPERATION_TYPE_BUY_CARD","OPERATION_TYPE_INPUT_SECURITIES","OPERATION_TYPE_SELL_MARGIN","OPERATION_TYPE_BROKER_FEE","OPERATION_TYPE_BUY_MARGIN","OPERATION_TYPE_DIVIDEND","OPERATION_TYPE_SELL","OPERATION_TYPE_COUPON","OPERATION_TYPE_SUCCESS_FEE","OPERATION_TYPE_DIVIDEND_TRANSFER","OPERATION_TYPE_ACCRUING_VARMARGIN","OPERATION_TYPE_WRITING_OFF_VARMARGIN","OPERATION_TYPE_DELIVERY_BUY","OPERATION_TYPE_DELIVERY_SELL","OPERATION_TYPE_TRACK_MFEE","OPERATION_TYPE_TRACK_PFEE","OPERATION_TYPE_TAX_PROGRESSIVE","OPERATION_TYPE_BOND_TAX_PROGRESSIVE","OPERATION_TYPE_DIVIDEND_TAX_PROGRESSIVE","OPERATION_TYPE_BENEFIT_TAX_PROGRESSIVE","OPERATION_TYPE_TAX_CORRECTION_PROGRESSIVE","OPERATION_TYPE_TAX_REPO_PROGRESSIVE","OPERATION_TYPE_TAX_REPO","OPERATION_TYPE_TAX_REPO_HOLD","OPERATION_TYPE_TAX_REPO_REFUND","OPERATION_TYPE_TAX_REPO_HOLD_PROGRESSIVE","OPERATION_TYPE_TAX_REPO_REFUND_PROGRESSIVE","OPERATION_TYPE_DIV_EXT","OPERATION_TYPE_TAX_CORRECTION_COUPON","OPERATION_TYPE_CASH_FEE","OPERATION_TYPE_OUT_FEE","OPERATION_TYPE_OUT_STAMP_DUTY","OPERATION_TYPE_OUTPUT_SWIFT","OPERATION_TYPE_INPUT_SWIFT","OPERATION_TYPE_OUTPUT_ACQUIRING","OPERATION_TYPE_INPUT_ACQUIRING","OPERATION_TYPE_OUTPUT_PENALTY","OPERATION_TYPE_ADVICE_FEE","OPERATION_TYPE_TRANS_IIS_BS","OPERATION_TYPE_TRANS_BS_BS","OPERATION_TYPE_OUT_MULTI","OPERATION_TYPE_INP_MULTI","OPERATION_TYPE_OVER_PLACEMENT","OPERATION_TYPE_OVER_COM","OPERATION_TYPE_OVER_INCOME","OPERATION_TYPE_OPTION_EXPIRATION","OPERATION_TYPE_FUTURE_EXPIRATION","operationTypeToJSON","portfolioSubscriptionStatusFromJSON","PORTFOLIO_SUBSCRIPTION_STATUS_UNSPECIFIED","PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS","PORTFOLIO_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND","PORTFOLIO_SUBSCRIPTION_STATUS_INTERNAL_ERROR","portfolioSubscriptionStatusToJSON","positionsAccountSubscriptionStatusFromJSON","POSITIONS_SUBSCRIPTION_STATUS_UNSPECIFIED","POSITIONS_SUBSCRIPTION_STATUS_SUCCESS","POSITIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND","POSITIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR","positionsAccountSubscriptionStatusToJSON","portfolioRequest_CurrencyRequestFromJSON","RUB","USD","EUR","portfolioRequest_CurrencyRequestToJSON","OperationsRequest","state","_object$state","OperationsResponse","operations","Operation","_message$operations","_object$operations","parentOperationId","payment","quantityRest","OperationTrade","childOperations","ChildOperationItem","_message$childOperati","_object$parentOperati","_object$state2","_object$quantityRest","_object$childOperatio","PortfolioRequest","PortfolioResponse","totalAmountShares","totalAmountBonds","totalAmountEtf","totalAmountCurrencies","totalAmountFutures","expectedYield","positions","PortfolioPosition","totalAmountOptions","totalAmountSp","totalAmountPortfolio","virtualPositions","VirtualPortfolioPosition","dailyYield","dailyYieldRelative","_message$positions","_message$virtualPosit","_object$positions","_object$virtualPositi","PositionsRequest","PositionsResponse","money","blocked","securities","PositionsSecurities","limitsLoadingInProgress","PositionsFutures","PositionsOptions","_message$money","_message$blocked","_message$securities","_message$futures","_message$options","_object$money","_object$blocked","_object$securities","_object$limitsLoading","_object$futures","_object$options","WithdrawLimitsRequest","WithdrawLimitsResponse","blockedGuarantee","_message$money2","_message$blocked2","_message$blockedGuara","_object$money2","_object$blocked2","_object$blockedGuaran","currentNkd","averagePositionPricePt","averagePositionPriceFifo","quantityLots","blockedLots","varMargin","expectedYieldFifo","_object$blocked3","expireDate","_object$expireDate","balance","exchangeBlocked","_object$blocked4","_object$balance","_object$exchangeBlock","_object$blocked5","_object$balance2","_object$instrumentUid5","_object$instrumentUid6","_object$blocked6","_object$balance3","BrokerReportRequest","generateBrokerReportRequest","GenerateBrokerReportRequest","getBrokerReportRequest","GetBrokerReportRequest","BrokerReportResponse","generateBrokerReportResponse","GenerateBrokerReportResponse","getBrokerReportResponse","GetBrokerReportResponse","taskId","_object$taskId","_object$taskId2","_object$page","brokerReport","BrokerReport","itemsCount","pagesCount","_message$brokerReport","_object$brokerReport","_object$itemsCount","_object$pagesCount","_object$page2","executeSign","tradeDatetime","orderAmount","brokerCommission","exchangeCommission","exchangeClearingCommission","repoRate","party","clearValueDate","secValueDate","brokerStatus","separateAgreementType","separateAgreementNumber","separateAgreementDate","deliveryType","_object$executeSign","_object$tradeDatetime","_object$party","_object$clearValueDat","_object$secValueDate","_object$brokerStatus","_object$separateAgree","_object$separateAgree2","_object$separateAgree3","_object$deliveryType","GetDividendsForeignIssuerRequest","generateDivForeignIssuerReport","GenerateDividendsForeignIssuerReportRequest","getDivForeignIssuerReport","GetDividendsForeignIssuerReportRequest","GetDividendsForeignIssuerResponse","generateDivForeignIssuerReportResponse","GenerateDividendsForeignIssuerReportResponse","divForeignIssuerReport","GetDividendsForeignIssuerReportResponse","_object$taskId3","_object$page3","_object$taskId4","dividendsForeignIssuerReport","DividendsForeignIssuerReport","_message$dividendsFor","_object$dividendsFore","_object$itemsCount2","_object$pagesCount2","_object$page4","securityName","issuerCountry","dividend","externalCommission","dividendGross","tax","dividendAmount","_object$securityName","_object$issuerCountry","PortfolioStreamRequest","pingSettings","PortfolioStreamResponse","subscriptions","PortfolioSubscriptionResult","portfolio","AccountSubscriptionStatus","subscriptionStatus","_object$subscriptionS","GetOperationsByCursorRequest","cursor","operationTypes","withoutCommissions","withoutTrades","withoutOvernights","end2","_message$operationTyp","_object$cursor","_object$operationType2","_object$state3","_object$withoutCommis","_object$withoutTrades","_object$withoutOverni","GetOperationsByCursorResponse","nextCursor","OperationItem","_object$hasNext","_object$nextCursor","brokerAccountId","commission","yield","yieldRelative","accruedInt","quantityDone","cancelDateTime","cancelReason","tradesInfo","OperationItemTrades","_message$childOperati2","_object$cursor2","_object$brokerAccount","_object$parentOperati2","_object$state4","_object$instrumentUid7","_object$quantityRest2","_object$quantityDone","_object$cancelDateTim","_object$cancelReason","_object$childOperatio2","OperationItemTrade","_object$num","_object$date3","PositionsStreamRequest","withInitialPositions","_object$withInitialPo","PositionsStreamResponse","PositionsSubscriptionResult","position","PositionData","initialPositions","PositionsSubscriptionStatus","_message$accounts4","_object$accounts4","_object$trackingId2","_object$streamId2","_object$accountId11","_object$subscriptionS2","PositionsMoney","_message$money3","_message$securities2","_message$futures2","_message$options2","_object$accountId12","_object$money3","_object$securities2","_object$futures2","_object$options2","_object$date4","availableValue","blockedValue","_object$instrumentUid8","OperationsServiceDefinition","getOperations","getPortfolio","getPositions","getWithdrawLimits","getBrokerReport","getDividendsForeignIssuer","getOperationsByCursor","OperationsStreamServiceDefinition","portfolioStream","positionsStream","SubscriptionAction","SubscriptionInterval","SubscriptionStatus","TradeSourceType","TradeDirection","CandleInterval","CandleSource","OrderBookType","LastPriceType","GetCandlesRequest_CandleSource","GetTechAnalysisRequest_IndicatorInterval","GetTechAnalysisRequest_TypeOfPrice","GetTechAnalysisRequest_IndicatorType","subscriptionActionFromJSON","SUBSCRIPTION_ACTION_UNSPECIFIED","SUBSCRIPTION_ACTION_SUBSCRIBE","SUBSCRIPTION_ACTION_UNSUBSCRIBE","subscriptionActionToJSON","subscriptionIntervalFromJSON","SUBSCRIPTION_INTERVAL_UNSPECIFIED","SUBSCRIPTION_INTERVAL_ONE_MINUTE","SUBSCRIPTION_INTERVAL_FIVE_MINUTES","SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES","SUBSCRIPTION_INTERVAL_ONE_HOUR","SUBSCRIPTION_INTERVAL_ONE_DAY","SUBSCRIPTION_INTERVAL_2_MIN","SUBSCRIPTION_INTERVAL_3_MIN","SUBSCRIPTION_INTERVAL_10_MIN","SUBSCRIPTION_INTERVAL_30_MIN","SUBSCRIPTION_INTERVAL_2_HOUR","SUBSCRIPTION_INTERVAL_4_HOUR","SUBSCRIPTION_INTERVAL_WEEK","SUBSCRIPTION_INTERVAL_MONTH","subscriptionIntervalToJSON","subscriptionStatusFromJSON","SUBSCRIPTION_STATUS_UNSPECIFIED","SUBSCRIPTION_STATUS_SUCCESS","SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND","SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID","SUBSCRIPTION_STATUS_DEPTH_IS_INVALID","SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID","SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED","SUBSCRIPTION_STATUS_INTERNAL_ERROR","SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS","SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND","SUBSCRIPTION_STATUS_SOURCE_IS_INVALID","subscriptionStatusToJSON","tradeSourceTypeFromJSON","TRADE_SOURCE_UNSPECIFIED","TRADE_SOURCE_EXCHANGE","TRADE_SOURCE_DEALER","TRADE_SOURCE_ALL","tradeSourceTypeToJSON","tradeDirectionFromJSON","TRADE_DIRECTION_UNSPECIFIED","TRADE_DIRECTION_BUY","TRADE_DIRECTION_SELL","tradeDirectionToJSON","candleIntervalFromJSON","CANDLE_INTERVAL_UNSPECIFIED","CANDLE_INTERVAL_1_MIN","CANDLE_INTERVAL_5_MIN","CANDLE_INTERVAL_15_MIN","CANDLE_INTERVAL_HOUR","CANDLE_INTERVAL_DAY","CANDLE_INTERVAL_2_MIN","CANDLE_INTERVAL_3_MIN","CANDLE_INTERVAL_10_MIN","CANDLE_INTERVAL_30_MIN","CANDLE_INTERVAL_2_HOUR","CANDLE_INTERVAL_4_HOUR","CANDLE_INTERVAL_WEEK","CANDLE_INTERVAL_MONTH","candleIntervalToJSON","candleSourceFromJSON","CANDLE_SOURCE_UNSPECIFIED","CANDLE_SOURCE_EXCHANGE","CANDLE_SOURCE_DEALER_WEEKEND","candleSourceToJSON","orderBookTypeFromJSON","ORDERBOOK_TYPE_UNSPECIFIED","ORDERBOOK_TYPE_EXCHANGE","ORDERBOOK_TYPE_DEALER","ORDERBOOK_TYPE_ALL","orderBookTypeToJSON","lastPriceTypeFromJSON","LAST_PRICE_UNSPECIFIED","LAST_PRICE_EXCHANGE","LAST_PRICE_DEALER","lastPriceTypeToJSON","getCandlesRequest_CandleSourceFromJSON","CANDLE_SOURCE_INCLUDE_WEEKEND","getCandlesRequest_CandleSourceToJSON","getTechAnalysisRequest_IndicatorIntervalFromJSON","INDICATOR_INTERVAL_UNSPECIFIED","INDICATOR_INTERVAL_ONE_MINUTE","INDICATOR_INTERVAL_FIVE_MINUTES","INDICATOR_INTERVAL_FIFTEEN_MINUTES","INDICATOR_INTERVAL_ONE_HOUR","INDICATOR_INTERVAL_ONE_DAY","INDICATOR_INTERVAL_2_MIN","INDICATOR_INTERVAL_3_MIN","INDICATOR_INTERVAL_10_MIN","INDICATOR_INTERVAL_30_MIN","INDICATOR_INTERVAL_2_HOUR","INDICATOR_INTERVAL_4_HOUR","INDICATOR_INTERVAL_WEEK","INDICATOR_INTERVAL_MONTH","getTechAnalysisRequest_IndicatorIntervalToJSON","getTechAnalysisRequest_TypeOfPriceFromJSON","TYPE_OF_PRICE_UNSPECIFIED","TYPE_OF_PRICE_CLOSE","TYPE_OF_PRICE_OPEN","TYPE_OF_PRICE_HIGH","TYPE_OF_PRICE_LOW","TYPE_OF_PRICE_AVG","getTechAnalysisRequest_TypeOfPriceToJSON","getTechAnalysisRequest_IndicatorTypeFromJSON","INDICATOR_TYPE_UNSPECIFIED","INDICATOR_TYPE_BB","INDICATOR_TYPE_EMA","INDICATOR_TYPE_RSI","INDICATOR_TYPE_MACD","INDICATOR_TYPE_SMA","getTechAnalysisRequest_IndicatorTypeToJSON","MarketDataRequest","subscribeCandlesRequest","SubscribeCandlesRequest","subscribeOrderBookRequest","SubscribeOrderBookRequest","subscribeTradesRequest","SubscribeTradesRequest","subscribeInfoRequest","SubscribeInfoRequest","subscribeLastPriceRequest","SubscribeLastPriceRequest","getMySubscriptions","GetMySubscriptions","MarketDataServerSideStreamRequest","MarketDataResponse","subscribeCandlesResponse","SubscribeCandlesResponse","subscribeOrderBookResponse","SubscribeOrderBookResponse","subscribeTradesResponse","SubscribeTradesResponse","subscribeInfoResponse","SubscribeInfoResponse","candle","Candle","trade","Trade","orderbook","OrderBook","TradingStatus","subscribeLastPriceResponse","SubscribeLastPriceResponse","lastPrice","LastPrice","subscriptionAction","CandleInstrument","waitingClose","candleSourceType","_object$subscriptionA","_object$waitingClose","_object$candleSourceT","_object$interval","candlesSubscriptions","CandleSubscription","_message$candlesSubsc","_object$candlesSubscr","subscriptionId","_object$interval2","_object$waitingClose2","_object$subscriptionI","_object$candleSourceT2","OrderBookInstrument","_object$subscriptionA2","depth","orderBookType","_object$depth","_object$orderBookType","orderBookSubscriptions","OrderBookSubscription","_message$orderBookSub","_object$orderBookSubs","_object$depth2","_object$subscriptionI2","_object$orderBookType2","TradeInstrument","tradeSource","_object$subscriptionA3","_object$tradeSource","tradeSubscriptions","TradeSubscription","_message$tradeSubscri","_object$trackingId3","_object$tradeSubscrip","_object$tradeSource2","_object$subscriptionS3","_object$streamId3","_object$subscriptionI3","InfoInstrument","_object$subscriptionA4","infoSubscriptions","InfoSubscription","_message$infoSubscrip","_object$trackingId4","_object$infoSubscript","_object$subscriptionS4","_object$streamId4","_object$subscriptionI4","LastPriceInstrument","_object$subscriptionA5","lastPriceSubscriptions","LastPriceSubscription","_message$lastPriceSub","_object$trackingId5","_object$lastPriceSubs","_object$subscriptionS5","_object$streamId5","_object$subscriptionI5","open","low","close","volume","lastTradeTs","_object$interval3","_object$volume","_object$lastTradeTs","_object$candleSourceT3","isConsistent","bids","Order","asks","limitUp","limitDown","_message$bids","_message$asks","_object$depth3","_object$isConsistent","_object$bids","_object$asks","_object$orderBookType3","_object$time3","_object$tradeSource3","limitOrderAvailableFlag","marketOrderAvailableFlag","_object$time4","_object$limitOrderAva","_object$marketOrderAv","_object$instrumentUid9","GetCandlesRequest","_object$interval4","_object$candleSourceT4","GetCandlesResponse","candles","HistoricCandle","_message$candles","_object$candles","isComplete","_object$volume2","_object$time5","_object$isComplete","_object$candleSourceT5","GetLastPricesRequest","lastPriceType","_message$figi","_message$instrumentId","_object$lastPriceType","GetLastPricesResponse","lastPrices","_message$lastPrices","_object$lastPrices","_object$figi17","_object$time6","_object$instrumentUid10","_object$lastPriceType2","GetOrderBookRequest","_object$figi18","_object$depth4","GetOrderBookResponse","lastPriceTs","closePriceTs","orderbookTs","_message$bids2","_message$asks2","_object$figi19","_object$depth5","_object$bids2","_object$asks2","_object$lastPriceTs","_object$closePriceTs","_object$orderbookTs","_object$instrumentUid11","GetTradingStatusRequest","_object$figi20","GetTradingStatusesRequest","_message$instrumentId2","GetTradingStatusesResponse","tradingStatuses","GetTradingStatusResponse","_message$tradingStatu","bestpriceOrderAvailableFlag","onlyBestPrice","_object$figi21","_object$limitOrderAva2","_object$marketOrderAv2","_object$instrumentUid12","_object$bestpriceOrde","_object$onlyBestPrice","GetLastTradesRequest","_object$figi22","_object$instrumentId11","_object$tradeSource4","GetLastTradesResponse","GetClosePricesRequest","InstrumentClosePriceRequest","_object$instrumentId12","GetClosePricesResponse","closePrices","InstrumentClosePriceResponse","_message$closePrices","_object$closePrices","eveningSessionPrice","_object$figi23","_object$instrumentUid13","_object$time7","GetTechAnalysisRequest","indicatorType","typeOfPrice","deviation","GetTechAnalysisRequest_Deviation","smoothing","GetTechAnalysisRequest_Smoothing","_object$indicatorType","_object$instrumentUid14","_object$interval5","_object$typeOfPrice","_object$length","fastLength","slowLength","signalSmoothing","_object$fastLength","_object$slowLength","_object$signalSmoothi","deviationMultiplier","GetTechAnalysisResponse","technicalIndicators","GetTechAnalysisResponse_TechAnalysisItem","_message$technicalInd","_object$technicalIndi","timestamp","middleBand","upperBand","lowerBand","signal","macd","_object$timestamp","MarketDataServiceDefinition","getCandles","getLastPrices","getOrderBook","getTradingStatus","getTradingStatuses","getLastTrades","getClosePrices","getTechAnalysis","MarketDataStreamServiceDefinition","marketDataStream","marketDataServerSideStream","StopOrderDirection","StopOrderExpirationType","StopOrderType","StopOrderStatusOption","ExchangeOrderType","TakeProfitType","TrailingValueType","TrailingStopStatus","stopOrderDirectionFromJSON","STOP_ORDER_DIRECTION_UNSPECIFIED","STOP_ORDER_DIRECTION_BUY","STOP_ORDER_DIRECTION_SELL","stopOrderDirectionToJSON","stopOrderExpirationTypeFromJSON","STOP_ORDER_EXPIRATION_TYPE_UNSPECIFIED","STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL","STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_DATE","stopOrderExpirationTypeToJSON","stopOrderTypeFromJSON","STOP_ORDER_TYPE_UNSPECIFIED","STOP_ORDER_TYPE_TAKE_PROFIT","STOP_ORDER_TYPE_STOP_LOSS","STOP_ORDER_TYPE_STOP_LIMIT","stopOrderTypeToJSON","stopOrderStatusOptionFromJSON","STOP_ORDER_STATUS_UNSPECIFIED","STOP_ORDER_STATUS_ALL","STOP_ORDER_STATUS_ACTIVE","STOP_ORDER_STATUS_EXECUTED","STOP_ORDER_STATUS_CANCELED","STOP_ORDER_STATUS_EXPIRED","stopOrderStatusOptionToJSON","exchangeOrderTypeFromJSON","EXCHANGE_ORDER_TYPE_UNSPECIFIED","EXCHANGE_ORDER_TYPE_MARKET","EXCHANGE_ORDER_TYPE_LIMIT","exchangeOrderTypeToJSON","takeProfitTypeFromJSON","TAKE_PROFIT_TYPE_UNSPECIFIED","TAKE_PROFIT_TYPE_REGULAR","TAKE_PROFIT_TYPE_TRAILING","takeProfitTypeToJSON","trailingValueTypeFromJSON","TRAILING_VALUE_UNSPECIFIED","TRAILING_VALUE_ABSOLUTE","TRAILING_VALUE_RELATIVE","trailingValueTypeToJSON","trailingStopStatusFromJSON","TRAILING_STOP_UNSPECIFIED","TRAILING_STOP_ACTIVE","TRAILING_STOP_ACTIVATED","trailingStopStatusToJSON","PostStopOrderRequest","stopPrice","expirationType","stopOrderType","exchangeOrderType","takeProfitType","trailingData","PostStopOrderRequest_TrailingData","_object$expirationTyp","_object$stopOrderType","_object$exchangeOrder","_object$takeProfitTyp","indent","indentType","spread","spreadType","_object$indentType","_object$spreadType","PostStopOrderResponse","stopOrderId","_object$stopOrderId","GetStopOrdersRequest","GetStopOrdersResponse","stopOrders","StopOrder","_message$stopOrders","_object$stopOrders","CancelStopOrderRequest","_object$stopOrderId2","CancelStopOrderResponse","createDate","activationDateTime","expirationTime","StopOrder_TrailingData","exchangeOrderId","_object$stopOrderId3","_object$createDate","_object$activationDat","_object$expirationTim","_object$takeProfitTyp2","_object$status2","_object$exchangeOrder2","_object$exchangeOrder3","extr","_object$indentType2","_object$spreadType2","_object$status3","StopOrdersServiceDefinition","postStopOrder","getStopOrders","cancelStopOrder","AccountType","AccountStatus","AccessLevel","accountTypeFromJSON","ACCOUNT_TYPE_UNSPECIFIED","ACCOUNT_TYPE_TINKOFF","ACCOUNT_TYPE_TINKOFF_IIS","ACCOUNT_TYPE_INVEST_BOX","ACCOUNT_TYPE_INVEST_FUND","accountTypeToJSON","accountStatusFromJSON","ACCOUNT_STATUS_UNSPECIFIED","ACCOUNT_STATUS_NEW","ACCOUNT_STATUS_OPEN","ACCOUNT_STATUS_CLOSED","ACCOUNT_STATUS_ALL","accountStatusToJSON","accessLevelFromJSON","ACCOUNT_ACCESS_LEVEL_UNSPECIFIED","ACCOUNT_ACCESS_LEVEL_FULL_ACCESS","ACCOUNT_ACCESS_LEVEL_READ_ONLY","ACCOUNT_ACCESS_LEVEL_NO_ACCESS","accessLevelToJSON","GetAccountsRequest","GetAccountsResponse","Account","openedDate","closedDate","accessLevel","_object$openedDate","_object$closedDate","_object$accessLevel","GetMarginAttributesRequest","GetMarginAttributesResponse","liquidPortfolio","startingMargin","minimalMargin","fundsSufficiencyLevel","amountOfMissingFunds","correctedMargin","GetUserTariffRequest","GetUserTariffResponse","unaryLimits","UnaryLimit","streamLimits","StreamLimit","_message$unaryLimits","_message$streamLimits","_object$unaryLimits","_object$streamLimits","limitPerMinute","_message$methods","_object$limitPerMinut","_object$methods","streams","_message$streams","_object$streams","_object$open","GetInfoRequest","GetInfoResponse","premStatus","qualStatus","qualifiedForWorkWith","tariff","_message$qualifiedFor","_object$premStatus","_object$qualStatus","_object$qualifiedForW","_object$tariff","UsersServiceDefinition","getAccounts","getMarginAttributes","getUserTariff","getInfo","TTechApiClient","config","ordersStream","operationsStream","marketdata","marketdataStream","users","token","url","clientFactory","createClientFactory","use","call","next","request","_extends","metadata","Metadata","channel","createChannel","ChannelCredentials","createSsl","OpenSandboxAccountRequest","OpenSandboxAccountResponse","CloseSandboxAccountRequest","CloseSandboxAccountResponse","SandboxPayInRequest","SandboxPayInResponse","SandboxServiceDefinition","openSandboxAccount","getSandboxAccounts","closeSandboxAccount","postSandboxOrder","replaceSandboxOrder","getSandboxOrders","cancelSandboxOrder","getSandboxOrderState","getSandboxPositions","getSandboxOperations","getSandboxOperationsByCursor","getSandboxPortfolio","sandboxPayIn","getSandboxWithdrawLimits","getSandboxMaxLots","TTechSandboxApiClient","sandbox"],"mappings":"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"}