/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
"use strict";

var $protobuf = require("protobufjs/minimal");

// Common aliases
var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;

// Exported root namespace
var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

$root.type = (function() {

    /**
     * Namespace type.
     * @exports type
     * @namespace
     */
    var type = {};

    type.googleapis = (function() {

        /**
         * Namespace googleapis.
         * @memberof type
         * @namespace
         */
        var googleapis = {};

        googleapis.com = (function() {

            /**
             * Namespace com.
             * @memberof type.googleapis
             * @namespace
             */
            var com = {};

            com.CandlesPbMsg = (function() {

                /**
                 * Namespace CandlesPbMsg.
                 * @memberof type.googleapis.com
                 * @namespace
                 */
                var CandlesPbMsg = {};

                CandlesPbMsg.Response = (function() {

                    /**
                     * Properties of a Response.
                     * @memberof type.googleapis.com.CandlesPbMsg
                     * @interface IResponse
                     * @property {string|null} [biz] Response biz
                     * @property {string|null} [type] Response type
                     * @property {string|null} [base] Response base
                     * @property {string|null} [quote] Response quote
                     * @property {string|null} [contractcode] Response contractcode
                     * @property {string|null} [granularity] Response granularity
                     * @property {type.googleapis.com.CandlesPbMsg.IData|null} [data] Response data
                     * @property {number|null} [env] Response env
                     */

                    /**
                     * Constructs a new Response.
                     * @memberof type.googleapis.com.CandlesPbMsg
                     * @classdesc Represents a Response.
                     * @implements IResponse
                     * @constructor
                     * @param {type.googleapis.com.CandlesPbMsg.IResponse=} [properties] Properties to set
                     */
                    function Response(properties) {
                        if (properties)
                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Response biz.
                     * @member {string} biz
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.biz = "";

                    /**
                     * Response type.
                     * @member {string} type
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.type = "";

                    /**
                     * Response base.
                     * @member {string} base
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.base = "";

                    /**
                     * Response quote.
                     * @member {string} quote
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.quote = "";

                    /**
                     * Response contractcode.
                     * @member {string} contractcode
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.contractcode = "";

                    /**
                     * Response granularity.
                     * @member {string} granularity
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.granularity = "";

                    /**
                     * Response data.
                     * @member {type.googleapis.com.CandlesPbMsg.IData|null|undefined} data
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.data = null;

                    /**
                     * Response env.
                     * @member {number} env
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.env = 0;

                    /**
                     * Creates a new Response instance using the specified properties.
                     * @function create
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IResponse=} [properties] Properties to set
                     * @returns {type.googleapis.com.CandlesPbMsg.Response} Response instance
                     */
                    Response.create = function create(properties) {
                        return new Response(properties);
                    };

                    /**
                     * Encodes the specified Response message. Does not implicitly {@link type.googleapis.com.CandlesPbMsg.Response.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IResponse} message Response message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Response.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.biz != null && Object.hasOwnProperty.call(message, "biz"))
                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.biz);
                        if (message.type != null && Object.hasOwnProperty.call(message, "type"))
                            writer.uint32(/* id 2, wireType 2 =*/18).string(message.type);
                        if (message.base != null && Object.hasOwnProperty.call(message, "base"))
                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.base);
                        if (message.quote != null && Object.hasOwnProperty.call(message, "quote"))
                            writer.uint32(/* id 4, wireType 2 =*/34).string(message.quote);
                        if (message.contractcode != null && Object.hasOwnProperty.call(message, "contractcode"))
                            writer.uint32(/* id 5, wireType 2 =*/42).string(message.contractcode);
                        if (message.granularity != null && Object.hasOwnProperty.call(message, "granularity"))
                            writer.uint32(/* id 6, wireType 2 =*/50).string(message.granularity);
                        if (message.data != null && Object.hasOwnProperty.call(message, "data"))
                            $root.type.googleapis.com.CandlesPbMsg.Data.encode(message.data, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
                        if (message.env != null && Object.hasOwnProperty.call(message, "env"))
                            writer.uint32(/* id 8, wireType 0 =*/64).int32(message.env);
                        return writer;
                    };

                    /**
                     * Encodes the specified Response message, length delimited. Does not implicitly {@link type.googleapis.com.CandlesPbMsg.Response.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IResponse} message Response message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Response.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Response message from the specified reader or buffer.
                     * @function decode
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {type.googleapis.com.CandlesPbMsg.Response} Response
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Response.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.type.googleapis.com.CandlesPbMsg.Response();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.biz = reader.string();
                                    break;
                                }
                            case 2: {
                                    message.type = reader.string();
                                    break;
                                }
                            case 3: {
                                    message.base = reader.string();
                                    break;
                                }
                            case 4: {
                                    message.quote = reader.string();
                                    break;
                                }
                            case 5: {
                                    message.contractcode = reader.string();
                                    break;
                                }
                            case 6: {
                                    message.granularity = reader.string();
                                    break;
                                }
                            case 7: {
                                    message.data = $root.type.googleapis.com.CandlesPbMsg.Data.decode(reader, reader.uint32());
                                    break;
                                }
                            case 8: {
                                    message.env = reader.int32();
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Response message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.CandlesPbMsg.Response} Response
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Response.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Response message.
                     * @function verify
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Response.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        if (message.biz != null && message.hasOwnProperty("biz"))
                            if (!$util.isString(message.biz))
                                return "biz: string expected";
                        if (message.type != null && message.hasOwnProperty("type"))
                            if (!$util.isString(message.type))
                                return "type: string expected";
                        if (message.base != null && message.hasOwnProperty("base"))
                            if (!$util.isString(message.base))
                                return "base: string expected";
                        if (message.quote != null && message.hasOwnProperty("quote"))
                            if (!$util.isString(message.quote))
                                return "quote: string expected";
                        if (message.contractcode != null && message.hasOwnProperty("contractcode"))
                            if (!$util.isString(message.contractcode))
                                return "contractcode: string expected";
                        if (message.granularity != null && message.hasOwnProperty("granularity"))
                            if (!$util.isString(message.granularity))
                                return "granularity: string expected";
                        if (message.data != null && message.hasOwnProperty("data")) {
                            var error = $root.type.googleapis.com.CandlesPbMsg.Data.verify(message.data);
                            if (error)
                                return "data." + error;
                        }
                        if (message.env != null && message.hasOwnProperty("env"))
                            if (!$util.isInteger(message.env))
                                return "env: integer expected";
                        return null;
                    };

                    /**
                     * Creates a Response message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.CandlesPbMsg.Response} Response
                     */
                    Response.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.CandlesPbMsg.Response)
                            return object;
                        var message = new $root.type.googleapis.com.CandlesPbMsg.Response();
                        if (object.biz != null)
                            message.biz = String(object.biz);
                        if (object.type != null)
                            message.type = String(object.type);
                        if (object.base != null)
                            message.base = String(object.base);
                        if (object.quote != null)
                            message.quote = String(object.quote);
                        if (object.contractcode != null)
                            message.contractcode = String(object.contractcode);
                        if (object.granularity != null)
                            message.granularity = String(object.granularity);
                        if (object.data != null) {
                            if (typeof object.data !== "object")
                                throw TypeError(".type.googleapis.com.CandlesPbMsg.Response.data: object expected");
                            message.data = $root.type.googleapis.com.CandlesPbMsg.Data.fromObject(object.data);
                        }
                        if (object.env != null)
                            message.env = object.env | 0;
                        return message;
                    };

                    /**
                     * Creates a plain object from a Response message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.Response} message Response
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Response.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        var object = {};
                        if (options.defaults) {
                            object.biz = "";
                            object.type = "";
                            object.base = "";
                            object.quote = "";
                            object.contractcode = "";
                            object.granularity = "";
                            object.data = null;
                            object.env = 0;
                        }
                        if (message.biz != null && message.hasOwnProperty("biz"))
                            object.biz = message.biz;
                        if (message.type != null && message.hasOwnProperty("type"))
                            object.type = message.type;
                        if (message.base != null && message.hasOwnProperty("base"))
                            object.base = message.base;
                        if (message.quote != null && message.hasOwnProperty("quote"))
                            object.quote = message.quote;
                        if (message.contractcode != null && message.hasOwnProperty("contractcode"))
                            object.contractcode = message.contractcode;
                        if (message.granularity != null && message.hasOwnProperty("granularity"))
                            object.granularity = message.granularity;
                        if (message.data != null && message.hasOwnProperty("data"))
                            object.data = $root.type.googleapis.com.CandlesPbMsg.Data.toObject(message.data, options);
                        if (message.env != null && message.hasOwnProperty("env"))
                            object.env = message.env;
                        return object;
                    };

                    /**
                     * Converts this Response to JSON.
                     * @function toJSON
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Response.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Response
                     * @function getTypeUrl
                     * @memberof type.googleapis.com.CandlesPbMsg.Response
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Response.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/type.googleapis.com.CandlesPbMsg.Response";
                    };

                    return Response;
                })();

                CandlesPbMsg.Data = (function() {

                    /**
                     * Properties of a Data.
                     * @memberof type.googleapis.com.CandlesPbMsg
                     * @interface IData
                     * @property {string|null} [typeUrl] Data typeUrl
                     * @property {Array.<type.googleapis.com.CandlesPbMsg.IBody>|null} [value] Data value
                     */

                    /**
                     * Constructs a new Data.
                     * @memberof type.googleapis.com.CandlesPbMsg
                     * @classdesc Represents a Data.
                     * @implements IData
                     * @constructor
                     * @param {type.googleapis.com.CandlesPbMsg.IData=} [properties] Properties to set
                     */
                    function Data(properties) {
                        this.value = [];
                        if (properties)
                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Data typeUrl.
                     * @member {string} typeUrl
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @instance
                     */
                    Data.prototype.typeUrl = "";

                    /**
                     * Data value.
                     * @member {Array.<type.googleapis.com.CandlesPbMsg.IBody>} value
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @instance
                     */
                    Data.prototype.value = $util.emptyArray;

                    /**
                     * Creates a new Data instance using the specified properties.
                     * @function create
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IData=} [properties] Properties to set
                     * @returns {type.googleapis.com.CandlesPbMsg.Data} Data instance
                     */
                    Data.create = function create(properties) {
                        return new Data(properties);
                    };

                    /**
                     * Encodes the specified Data message. Does not implicitly {@link type.googleapis.com.CandlesPbMsg.Data.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IData} message Data message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Data.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.typeUrl != null && Object.hasOwnProperty.call(message, "typeUrl"))
                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.typeUrl);
                        if (message.value != null && message.value.length)
                            for (var i = 0; i < message.value.length; ++i)
                                $root.type.googleapis.com.CandlesPbMsg.Body.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                        return writer;
                    };

                    /**
                     * Encodes the specified Data message, length delimited. Does not implicitly {@link type.googleapis.com.CandlesPbMsg.Data.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IData} message Data message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Data.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Data message from the specified reader or buffer.
                     * @function decode
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {type.googleapis.com.CandlesPbMsg.Data} Data
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Data.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.type.googleapis.com.CandlesPbMsg.Data();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.typeUrl = reader.string();
                                    break;
                                }
                            case 2: {
                                    if (!(message.value && message.value.length))
                                        message.value = [];
                                    message.value.push($root.type.googleapis.com.CandlesPbMsg.Body.decode(reader, reader.uint32()));
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Data message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.CandlesPbMsg.Data} Data
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Data.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Data message.
                     * @function verify
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Data.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        if (message.typeUrl != null && message.hasOwnProperty("typeUrl"))
                            if (!$util.isString(message.typeUrl))
                                return "typeUrl: string expected";
                        if (message.value != null && message.hasOwnProperty("value")) {
                            if (!Array.isArray(message.value))
                                return "value: array expected";
                            for (var i = 0; i < message.value.length; ++i) {
                                var error = $root.type.googleapis.com.CandlesPbMsg.Body.verify(message.value[i]);
                                if (error)
                                    return "value." + error;
                            }
                        }
                        return null;
                    };

                    /**
                     * Creates a Data message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.CandlesPbMsg.Data} Data
                     */
                    Data.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.CandlesPbMsg.Data)
                            return object;
                        var message = new $root.type.googleapis.com.CandlesPbMsg.Data();
                        if (object.typeUrl != null)
                            message.typeUrl = String(object.typeUrl);
                        if (object.value) {
                            if (!Array.isArray(object.value))
                                throw TypeError(".type.googleapis.com.CandlesPbMsg.Data.value: array expected");
                            message.value = [];
                            for (var i = 0; i < object.value.length; ++i) {
                                if (typeof object.value[i] !== "object")
                                    throw TypeError(".type.googleapis.com.CandlesPbMsg.Data.value: object expected");
                                message.value[i] = $root.type.googleapis.com.CandlesPbMsg.Body.fromObject(object.value[i]);
                            }
                        }
                        return message;
                    };

                    /**
                     * Creates a plain object from a Data message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.Data} message Data
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Data.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        var object = {};
                        if (options.arrays || options.defaults)
                            object.value = [];
                        if (options.defaults)
                            object.typeUrl = "";
                        if (message.typeUrl != null && message.hasOwnProperty("typeUrl"))
                            object.typeUrl = message.typeUrl;
                        if (message.value && message.value.length) {
                            object.value = [];
                            for (var j = 0; j < message.value.length; ++j)
                                object.value[j] = $root.type.googleapis.com.CandlesPbMsg.Body.toObject(message.value[j], options);
                        }
                        return object;
                    };

                    /**
                     * Converts this Data to JSON.
                     * @function toJSON
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Data.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Data
                     * @function getTypeUrl
                     * @memberof type.googleapis.com.CandlesPbMsg.Data
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Data.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/type.googleapis.com.CandlesPbMsg.Data";
                    };

                    return Data;
                })();

                CandlesPbMsg.Body = (function() {

                    /**
                     * Properties of a Body.
                     * @memberof type.googleapis.com.CandlesPbMsg
                     * @interface IBody
                     * @property {number|Long|null} [createate] Body createate
                     * @property {string|null} [low] Body low
                     * @property {string|null} [high] Body high
                     * @property {string|null} [open] Body open
                     * @property {string|null} [close] Body close
                     * @property {string|null} [amount] Body amount
                     * @property {string|null} [size] Body size
                     */

                    /**
                     * Constructs a new Body.
                     * @memberof type.googleapis.com.CandlesPbMsg
                     * @classdesc Represents a Body.
                     * @implements IBody
                     * @constructor
                     * @param {type.googleapis.com.CandlesPbMsg.IBody=} [properties] Properties to set
                     */
                    function Body(properties) {
                        if (properties)
                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Body createate.
                     * @member {number|Long} createate
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.createate = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                    /**
                     * Body low.
                     * @member {string} low
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.low = "";

                    /**
                     * Body high.
                     * @member {string} high
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.high = "";

                    /**
                     * Body open.
                     * @member {string} open
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.open = "";

                    /**
                     * Body close.
                     * @member {string} close
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.close = "";

                    /**
                     * Body amount.
                     * @member {string} amount
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.amount = "";

                    /**
                     * Body size.
                     * @member {string} size
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.size = "";

                    /**
                     * Creates a new Body instance using the specified properties.
                     * @function create
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IBody=} [properties] Properties to set
                     * @returns {type.googleapis.com.CandlesPbMsg.Body} Body instance
                     */
                    Body.create = function create(properties) {
                        return new Body(properties);
                    };

                    /**
                     * Encodes the specified Body message. Does not implicitly {@link type.googleapis.com.CandlesPbMsg.Body.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IBody} message Body message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Body.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.createate != null && Object.hasOwnProperty.call(message, "createate"))
                            writer.uint32(/* id 1, wireType 0 =*/8).int64(message.createate);
                        if (message.low != null && Object.hasOwnProperty.call(message, "low"))
                            writer.uint32(/* id 2, wireType 2 =*/18).string(message.low);
                        if (message.high != null && Object.hasOwnProperty.call(message, "high"))
                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.high);
                        if (message.open != null && Object.hasOwnProperty.call(message, "open"))
                            writer.uint32(/* id 4, wireType 2 =*/34).string(message.open);
                        if (message.close != null && Object.hasOwnProperty.call(message, "close"))
                            writer.uint32(/* id 5, wireType 2 =*/42).string(message.close);
                        if (message.amount != null && Object.hasOwnProperty.call(message, "amount"))
                            writer.uint32(/* id 6, wireType 2 =*/50).string(message.amount);
                        if (message.size != null && Object.hasOwnProperty.call(message, "size"))
                            writer.uint32(/* id 7, wireType 2 =*/58).string(message.size);
                        return writer;
                    };

                    /**
                     * Encodes the specified Body message, length delimited. Does not implicitly {@link type.googleapis.com.CandlesPbMsg.Body.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.IBody} message Body message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Body.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Body message from the specified reader or buffer.
                     * @function decode
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {type.googleapis.com.CandlesPbMsg.Body} Body
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Body.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.type.googleapis.com.CandlesPbMsg.Body();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.createate = reader.int64();
                                    break;
                                }
                            case 2: {
                                    message.low = reader.string();
                                    break;
                                }
                            case 3: {
                                    message.high = reader.string();
                                    break;
                                }
                            case 4: {
                                    message.open = reader.string();
                                    break;
                                }
                            case 5: {
                                    message.close = reader.string();
                                    break;
                                }
                            case 6: {
                                    message.amount = reader.string();
                                    break;
                                }
                            case 7: {
                                    message.size = reader.string();
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Body message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.CandlesPbMsg.Body} Body
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Body.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Body message.
                     * @function verify
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Body.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        if (message.createate != null && message.hasOwnProperty("createate"))
                            if (!$util.isInteger(message.createate) && !(message.createate && $util.isInteger(message.createate.low) && $util.isInteger(message.createate.high)))
                                return "createate: integer|Long expected";
                        if (message.low != null && message.hasOwnProperty("low"))
                            if (!$util.isString(message.low))
                                return "low: string expected";
                        if (message.high != null && message.hasOwnProperty("high"))
                            if (!$util.isString(message.high))
                                return "high: string expected";
                        if (message.open != null && message.hasOwnProperty("open"))
                            if (!$util.isString(message.open))
                                return "open: string expected";
                        if (message.close != null && message.hasOwnProperty("close"))
                            if (!$util.isString(message.close))
                                return "close: string expected";
                        if (message.amount != null && message.hasOwnProperty("amount"))
                            if (!$util.isString(message.amount))
                                return "amount: string expected";
                        if (message.size != null && message.hasOwnProperty("size"))
                            if (!$util.isString(message.size))
                                return "size: string expected";
                        return null;
                    };

                    /**
                     * Creates a Body message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.CandlesPbMsg.Body} Body
                     */
                    Body.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.CandlesPbMsg.Body)
                            return object;
                        var message = new $root.type.googleapis.com.CandlesPbMsg.Body();
                        if (object.createate != null)
                            if ($util.Long)
                                (message.createate = $util.Long.fromValue(object.createate)).unsigned = false;
                            else if (typeof object.createate === "string")
                                message.createate = parseInt(object.createate, 10);
                            else if (typeof object.createate === "number")
                                message.createate = object.createate;
                            else if (typeof object.createate === "object")
                                message.createate = new $util.LongBits(object.createate.low >>> 0, object.createate.high >>> 0).toNumber();
                        if (object.low != null)
                            message.low = String(object.low);
                        if (object.high != null)
                            message.high = String(object.high);
                        if (object.open != null)
                            message.open = String(object.open);
                        if (object.close != null)
                            message.close = String(object.close);
                        if (object.amount != null)
                            message.amount = String(object.amount);
                        if (object.size != null)
                            message.size = String(object.size);
                        return message;
                    };

                    /**
                     * Creates a plain object from a Body message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.CandlesPbMsg.Body} message Body
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Body.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        var object = {};
                        if (options.defaults) {
                            if ($util.Long) {
                                var long = new $util.Long(0, 0, false);
                                object.createate = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                            } else
                                object.createate = options.longs === String ? "0" : 0;
                            object.low = "";
                            object.high = "";
                            object.open = "";
                            object.close = "";
                            object.amount = "";
                            object.size = "";
                        }
                        if (message.createate != null && message.hasOwnProperty("createate"))
                            if (typeof message.createate === "number")
                                object.createate = options.longs === String ? String(message.createate) : message.createate;
                            else
                                object.createate = options.longs === String ? $util.Long.prototype.toString.call(message.createate) : options.longs === Number ? new $util.LongBits(message.createate.low >>> 0, message.createate.high >>> 0).toNumber() : message.createate;
                        if (message.low != null && message.hasOwnProperty("low"))
                            object.low = message.low;
                        if (message.high != null && message.hasOwnProperty("high"))
                            object.high = message.high;
                        if (message.open != null && message.hasOwnProperty("open"))
                            object.open = message.open;
                        if (message.close != null && message.hasOwnProperty("close"))
                            object.close = message.close;
                        if (message.amount != null && message.hasOwnProperty("amount"))
                            object.amount = message.amount;
                        if (message.size != null && message.hasOwnProperty("size"))
                            object.size = message.size;
                        return object;
                    };

                    /**
                     * Converts this Body to JSON.
                     * @function toJSON
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Body.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Body
                     * @function getTypeUrl
                     * @memberof type.googleapis.com.CandlesPbMsg.Body
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Body.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/type.googleapis.com.CandlesPbMsg.Body";
                    };

                    return Body;
                })();

                return CandlesPbMsg;
            })();

            return com;
        })();

        return googleapis;
    })();

    return type;
})();

module.exports = $root;
