/*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.FundRatesPbMsg = (function() {

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

                FundRatesPbMsg.Response = (function() {

                    /**
                     * Properties of a Response.
                     * @memberof type.googleapis.com.FundRatesPbMsg
                     * @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.FundRatesPbMsg.IData|null} [data] Response data
                     * @property {number|null} [env] Response env
                     */

                    /**
                     * Constructs a new Response.
                     * @memberof type.googleapis.com.FundRatesPbMsg
                     * @classdesc Represents a Response.
                     * @implements IResponse
                     * @constructor
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.Response
                     * @instance
                     */
                    Response.prototype.biz = "";

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

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

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

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

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

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

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

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

                    /**
                     * Encodes the specified Response message. Does not implicitly {@link type.googleapis.com.FundRatesPbMsg.Response.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.FundRatesPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Response.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.FundRatesPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Response
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Response
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.FundRatesPbMsg.Response} Response
                     */
                    Response.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.FundRatesPbMsg.Response)
                            return object;
                        var message = new $root.type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.Response.data: object expected");
                            message.data = $root.type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Response";
                    };

                    return Response;
                })();

                FundRatesPbMsg.Data = (function() {

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

                    /**
                     * Constructs a new Data.
                     * @memberof type.googleapis.com.FundRatesPbMsg
                     * @classdesc Represents a Data.
                     * @implements IData
                     * @constructor
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.Data
                     * @instance
                     */
                    Data.prototype.typeUrl = "";

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

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

                    /**
                     * Encodes the specified Data message. Does not implicitly {@link type.googleapis.com.FundRatesPbMsg.Data.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.FundRatesPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Data.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.FundRatesPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Data
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Data
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.FundRatesPbMsg.Data} Data
                     */
                    Data.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.FundRatesPbMsg.Data)
                            return object;
                        var message = new $root.type.googleapis.com.FundRatesPbMsg.Data();
                        if (object.typeUrl != null)
                            message.typeUrl = String(object.typeUrl);
                        if (object.value) {
                            if (!Array.isArray(object.value))
                                throw TypeError(".type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.Data.value: object expected");
                                message.value[i] = $root.type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.Body.toObject(message.value[j], options);
                        }
                        return object;
                    };

                    /**
                     * Converts this Data to JSON.
                     * @function toJSON
                     * @memberof type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Data";
                    };

                    return Data;
                })();

                FundRatesPbMsg.Body = (function() {

                    /**
                     * Properties of a Body.
                     * @memberof type.googleapis.com.FundRatesPbMsg
                     * @interface IBody
                     * @property {string|null} [contractcode] Body contractcode
                     * @property {string|null} [markprice] Body markprice
                     * @property {string|null} [indexprice] Body indexprice
                     * @property {string|null} [feeRate] Body feeRate
                     * @property {string|null} [estimateFeeRate] Body estimateFeeRate
                     * @property {number|Long|null} [nextLiquidationInterval] Body nextLiquidationInterval
                     * @property {string|null} [totalPosition] Body totalPosition
                     * @property {string|null} [indexCny] Body indexCny
                     * @property {string|null} [markCny] Body markCny
                     * @property {number|null} [env] Body env
                     * @property {string|null} [base] Body base
                     * @property {string|null} [indexBase] Body indexBase
                     * @property {string|null} [quote] Body quote
                     * @property {string|null} [baseDisplayName] Body baseDisplayName
                     * @property {string|null} [indexBaseDisplayName] Body indexBaseDisplayName
                     * @property {string|null} [quoteDisplayName] Body quoteDisplayName
                     * @property {string|null} [preDeliveryPrice] Body preDeliveryPrice
                     * @property {number|null} [online] Body online
                     */

                    /**
                     * Constructs a new Body.
                     * @memberof type.googleapis.com.FundRatesPbMsg
                     * @classdesc Represents a Body.
                     * @implements IBody
                     * @constructor
                     * @param {type.googleapis.com.FundRatesPbMsg.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 contractcode.
                     * @member {string} contractcode
                     * @memberof type.googleapis.com.FundRatesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.contractcode = "";

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    /**
                     * Body online.
                     * @member {number} online
                     * @memberof type.googleapis.com.FundRatesPbMsg.Body
                     * @instance
                     */
                    Body.prototype.online = 0;

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

                    /**
                     * Encodes the specified Body message. Does not implicitly {@link type.googleapis.com.FundRatesPbMsg.Body.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.FundRatesPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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.contractcode != null && Object.hasOwnProperty.call(message, "contractcode"))
                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.contractcode);
                        if (message.markprice != null && Object.hasOwnProperty.call(message, "markprice"))
                            writer.uint32(/* id 2, wireType 2 =*/18).string(message.markprice);
                        if (message.indexprice != null && Object.hasOwnProperty.call(message, "indexprice"))
                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.indexprice);
                        if (message.feeRate != null && Object.hasOwnProperty.call(message, "feeRate"))
                            writer.uint32(/* id 4, wireType 2 =*/34).string(message.feeRate);
                        if (message.estimateFeeRate != null && Object.hasOwnProperty.call(message, "estimateFeeRate"))
                            writer.uint32(/* id 5, wireType 2 =*/42).string(message.estimateFeeRate);
                        if (message.nextLiquidationInterval != null && Object.hasOwnProperty.call(message, "nextLiquidationInterval"))
                            writer.uint32(/* id 6, wireType 0 =*/48).int64(message.nextLiquidationInterval);
                        if (message.totalPosition != null && Object.hasOwnProperty.call(message, "totalPosition"))
                            writer.uint32(/* id 7, wireType 2 =*/58).string(message.totalPosition);
                        if (message.indexCny != null && Object.hasOwnProperty.call(message, "indexCny"))
                            writer.uint32(/* id 8, wireType 2 =*/66).string(message.indexCny);
                        if (message.markCny != null && Object.hasOwnProperty.call(message, "markCny"))
                            writer.uint32(/* id 9, wireType 2 =*/74).string(message.markCny);
                        if (message.env != null && Object.hasOwnProperty.call(message, "env"))
                            writer.uint32(/* id 10, wireType 0 =*/80).int32(message.env);
                        if (message.base != null && Object.hasOwnProperty.call(message, "base"))
                            writer.uint32(/* id 11, wireType 2 =*/90).string(message.base);
                        if (message.indexBase != null && Object.hasOwnProperty.call(message, "indexBase"))
                            writer.uint32(/* id 12, wireType 2 =*/98).string(message.indexBase);
                        if (message.quote != null && Object.hasOwnProperty.call(message, "quote"))
                            writer.uint32(/* id 13, wireType 2 =*/106).string(message.quote);
                        if (message.baseDisplayName != null && Object.hasOwnProperty.call(message, "baseDisplayName"))
                            writer.uint32(/* id 14, wireType 2 =*/114).string(message.baseDisplayName);
                        if (message.indexBaseDisplayName != null && Object.hasOwnProperty.call(message, "indexBaseDisplayName"))
                            writer.uint32(/* id 15, wireType 2 =*/122).string(message.indexBaseDisplayName);
                        if (message.quoteDisplayName != null && Object.hasOwnProperty.call(message, "quoteDisplayName"))
                            writer.uint32(/* id 16, wireType 2 =*/130).string(message.quoteDisplayName);
                        if (message.preDeliveryPrice != null && Object.hasOwnProperty.call(message, "preDeliveryPrice"))
                            writer.uint32(/* id 17, wireType 2 =*/138).string(message.preDeliveryPrice);
                        if (message.online != null && Object.hasOwnProperty.call(message, "online"))
                            writer.uint32(/* id 18, wireType 0 =*/144).int32(message.online);
                        return writer;
                    };

                    /**
                     * Encodes the specified Body message, length delimited. Does not implicitly {@link type.googleapis.com.FundRatesPbMsg.Body.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.FundRatesPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Body();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.contractcode = reader.string();
                                    break;
                                }
                            case 2: {
                                    message.markprice = reader.string();
                                    break;
                                }
                            case 3: {
                                    message.indexprice = reader.string();
                                    break;
                                }
                            case 4: {
                                    message.feeRate = reader.string();
                                    break;
                                }
                            case 5: {
                                    message.estimateFeeRate = reader.string();
                                    break;
                                }
                            case 6: {
                                    message.nextLiquidationInterval = reader.int64();
                                    break;
                                }
                            case 7: {
                                    message.totalPosition = reader.string();
                                    break;
                                }
                            case 8: {
                                    message.indexCny = reader.string();
                                    break;
                                }
                            case 9: {
                                    message.markCny = reader.string();
                                    break;
                                }
                            case 10: {
                                    message.env = reader.int32();
                                    break;
                                }
                            case 11: {
                                    message.base = reader.string();
                                    break;
                                }
                            case 12: {
                                    message.indexBase = reader.string();
                                    break;
                                }
                            case 13: {
                                    message.quote = reader.string();
                                    break;
                                }
                            case 14: {
                                    message.baseDisplayName = reader.string();
                                    break;
                                }
                            case 15: {
                                    message.indexBaseDisplayName = reader.string();
                                    break;
                                }
                            case 16: {
                                    message.quoteDisplayName = reader.string();
                                    break;
                                }
                            case 17: {
                                    message.preDeliveryPrice = reader.string();
                                    break;
                                }
                            case 18: {
                                    message.online = reader.int32();
                                    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.FundRatesPbMsg.Body
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.contractcode != null && message.hasOwnProperty("contractcode"))
                            if (!$util.isString(message.contractcode))
                                return "contractcode: string expected";
                        if (message.markprice != null && message.hasOwnProperty("markprice"))
                            if (!$util.isString(message.markprice))
                                return "markprice: string expected";
                        if (message.indexprice != null && message.hasOwnProperty("indexprice"))
                            if (!$util.isString(message.indexprice))
                                return "indexprice: string expected";
                        if (message.feeRate != null && message.hasOwnProperty("feeRate"))
                            if (!$util.isString(message.feeRate))
                                return "feeRate: string expected";
                        if (message.estimateFeeRate != null && message.hasOwnProperty("estimateFeeRate"))
                            if (!$util.isString(message.estimateFeeRate))
                                return "estimateFeeRate: string expected";
                        if (message.nextLiquidationInterval != null && message.hasOwnProperty("nextLiquidationInterval"))
                            if (!$util.isInteger(message.nextLiquidationInterval) && !(message.nextLiquidationInterval && $util.isInteger(message.nextLiquidationInterval.low) && $util.isInteger(message.nextLiquidationInterval.high)))
                                return "nextLiquidationInterval: integer|Long expected";
                        if (message.totalPosition != null && message.hasOwnProperty("totalPosition"))
                            if (!$util.isString(message.totalPosition))
                                return "totalPosition: string expected";
                        if (message.indexCny != null && message.hasOwnProperty("indexCny"))
                            if (!$util.isString(message.indexCny))
                                return "indexCny: string expected";
                        if (message.markCny != null && message.hasOwnProperty("markCny"))
                            if (!$util.isString(message.markCny))
                                return "markCny: string expected";
                        if (message.env != null && message.hasOwnProperty("env"))
                            if (!$util.isInteger(message.env))
                                return "env: integer expected";
                        if (message.base != null && message.hasOwnProperty("base"))
                            if (!$util.isString(message.base))
                                return "base: string expected";
                        if (message.indexBase != null && message.hasOwnProperty("indexBase"))
                            if (!$util.isString(message.indexBase))
                                return "indexBase: string expected";
                        if (message.quote != null && message.hasOwnProperty("quote"))
                            if (!$util.isString(message.quote))
                                return "quote: string expected";
                        if (message.baseDisplayName != null && message.hasOwnProperty("baseDisplayName"))
                            if (!$util.isString(message.baseDisplayName))
                                return "baseDisplayName: string expected";
                        if (message.indexBaseDisplayName != null && message.hasOwnProperty("indexBaseDisplayName"))
                            if (!$util.isString(message.indexBaseDisplayName))
                                return "indexBaseDisplayName: string expected";
                        if (message.quoteDisplayName != null && message.hasOwnProperty("quoteDisplayName"))
                            if (!$util.isString(message.quoteDisplayName))
                                return "quoteDisplayName: string expected";
                        if (message.preDeliveryPrice != null && message.hasOwnProperty("preDeliveryPrice"))
                            if (!$util.isString(message.preDeliveryPrice))
                                return "preDeliveryPrice: string expected";
                        if (message.online != null && message.hasOwnProperty("online"))
                            if (!$util.isInteger(message.online))
                                return "online: integer 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.FundRatesPbMsg.Body
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.FundRatesPbMsg.Body} Body
                     */
                    Body.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.FundRatesPbMsg.Body)
                            return object;
                        var message = new $root.type.googleapis.com.FundRatesPbMsg.Body();
                        if (object.contractcode != null)
                            message.contractcode = String(object.contractcode);
                        if (object.markprice != null)
                            message.markprice = String(object.markprice);
                        if (object.indexprice != null)
                            message.indexprice = String(object.indexprice);
                        if (object.feeRate != null)
                            message.feeRate = String(object.feeRate);
                        if (object.estimateFeeRate != null)
                            message.estimateFeeRate = String(object.estimateFeeRate);
                        if (object.nextLiquidationInterval != null)
                            if ($util.Long)
                                (message.nextLiquidationInterval = $util.Long.fromValue(object.nextLiquidationInterval)).unsigned = false;
                            else if (typeof object.nextLiquidationInterval === "string")
                                message.nextLiquidationInterval = parseInt(object.nextLiquidationInterval, 10);
                            else if (typeof object.nextLiquidationInterval === "number")
                                message.nextLiquidationInterval = object.nextLiquidationInterval;
                            else if (typeof object.nextLiquidationInterval === "object")
                                message.nextLiquidationInterval = new $util.LongBits(object.nextLiquidationInterval.low >>> 0, object.nextLiquidationInterval.high >>> 0).toNumber();
                        if (object.totalPosition != null)
                            message.totalPosition = String(object.totalPosition);
                        if (object.indexCny != null)
                            message.indexCny = String(object.indexCny);
                        if (object.markCny != null)
                            message.markCny = String(object.markCny);
                        if (object.env != null)
                            message.env = object.env | 0;
                        if (object.base != null)
                            message.base = String(object.base);
                        if (object.indexBase != null)
                            message.indexBase = String(object.indexBase);
                        if (object.quote != null)
                            message.quote = String(object.quote);
                        if (object.baseDisplayName != null)
                            message.baseDisplayName = String(object.baseDisplayName);
                        if (object.indexBaseDisplayName != null)
                            message.indexBaseDisplayName = String(object.indexBaseDisplayName);
                        if (object.quoteDisplayName != null)
                            message.quoteDisplayName = String(object.quoteDisplayName);
                        if (object.preDeliveryPrice != null)
                            message.preDeliveryPrice = String(object.preDeliveryPrice);
                        if (object.online != null)
                            message.online = object.online | 0;
                        return message;
                    };

                    /**
                     * Creates a plain object from a Body message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof type.googleapis.com.FundRatesPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.FundRatesPbMsg.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) {
                            object.contractcode = "";
                            object.markprice = "";
                            object.indexprice = "";
                            object.feeRate = "";
                            object.estimateFeeRate = "";
                            if ($util.Long) {
                                var long = new $util.Long(0, 0, false);
                                object.nextLiquidationInterval = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                            } else
                                object.nextLiquidationInterval = options.longs === String ? "0" : 0;
                            object.totalPosition = "";
                            object.indexCny = "";
                            object.markCny = "";
                            object.env = 0;
                            object.base = "";
                            object.indexBase = "";
                            object.quote = "";
                            object.baseDisplayName = "";
                            object.indexBaseDisplayName = "";
                            object.quoteDisplayName = "";
                            object.preDeliveryPrice = "";
                            object.online = 0;
                        }
                        if (message.contractcode != null && message.hasOwnProperty("contractcode"))
                            object.contractcode = message.contractcode;
                        if (message.markprice != null && message.hasOwnProperty("markprice"))
                            object.markprice = message.markprice;
                        if (message.indexprice != null && message.hasOwnProperty("indexprice"))
                            object.indexprice = message.indexprice;
                        if (message.feeRate != null && message.hasOwnProperty("feeRate"))
                            object.feeRate = message.feeRate;
                        if (message.estimateFeeRate != null && message.hasOwnProperty("estimateFeeRate"))
                            object.estimateFeeRate = message.estimateFeeRate;
                        if (message.nextLiquidationInterval != null && message.hasOwnProperty("nextLiquidationInterval"))
                            if (typeof message.nextLiquidationInterval === "number")
                                object.nextLiquidationInterval = options.longs === String ? String(message.nextLiquidationInterval) : message.nextLiquidationInterval;
                            else
                                object.nextLiquidationInterval = options.longs === String ? $util.Long.prototype.toString.call(message.nextLiquidationInterval) : options.longs === Number ? new $util.LongBits(message.nextLiquidationInterval.low >>> 0, message.nextLiquidationInterval.high >>> 0).toNumber() : message.nextLiquidationInterval;
                        if (message.totalPosition != null && message.hasOwnProperty("totalPosition"))
                            object.totalPosition = message.totalPosition;
                        if (message.indexCny != null && message.hasOwnProperty("indexCny"))
                            object.indexCny = message.indexCny;
                        if (message.markCny != null && message.hasOwnProperty("markCny"))
                            object.markCny = message.markCny;
                        if (message.env != null && message.hasOwnProperty("env"))
                            object.env = message.env;
                        if (message.base != null && message.hasOwnProperty("base"))
                            object.base = message.base;
                        if (message.indexBase != null && message.hasOwnProperty("indexBase"))
                            object.indexBase = message.indexBase;
                        if (message.quote != null && message.hasOwnProperty("quote"))
                            object.quote = message.quote;
                        if (message.baseDisplayName != null && message.hasOwnProperty("baseDisplayName"))
                            object.baseDisplayName = message.baseDisplayName;
                        if (message.indexBaseDisplayName != null && message.hasOwnProperty("indexBaseDisplayName"))
                            object.indexBaseDisplayName = message.indexBaseDisplayName;
                        if (message.quoteDisplayName != null && message.hasOwnProperty("quoteDisplayName"))
                            object.quoteDisplayName = message.quoteDisplayName;
                        if (message.preDeliveryPrice != null && message.hasOwnProperty("preDeliveryPrice"))
                            object.preDeliveryPrice = message.preDeliveryPrice;
                        if (message.online != null && message.hasOwnProperty("online"))
                            object.online = message.online;
                        return object;
                    };

                    /**
                     * Converts this Body to JSON.
                     * @function toJSON
                     * @memberof type.googleapis.com.FundRatesPbMsg.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.FundRatesPbMsg.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.FundRatesPbMsg.Body";
                    };

                    return Body;
                })();

                return FundRatesPbMsg;
            })();

            return com;
        })();

        return googleapis;
    })();

    return type;
})();

module.exports = $root;
