[
  {
    "__docId__": 1,
    "kind": "external",
    "name": "Infinity",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Infinity",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 2,
    "kind": "external",
    "name": "NaN",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~NaN",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 3,
    "kind": "external",
    "name": "undefined",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~undefined",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 4,
    "kind": "external",
    "name": "null",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~null",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 5,
    "kind": "external",
    "name": "Object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Object",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 6,
    "kind": "external",
    "name": "object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~object",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 7,
    "kind": "external",
    "name": "Function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Function",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 8,
    "kind": "external",
    "name": "function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~function",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 9,
    "kind": "external",
    "name": "Boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Boolean",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 10,
    "kind": "external",
    "name": "boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~boolean",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 11,
    "kind": "external",
    "name": "Symbol",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Symbol",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 12,
    "kind": "external",
    "name": "Error",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Error",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 13,
    "kind": "external",
    "name": "EvalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~EvalError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 14,
    "kind": "external",
    "name": "InternalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~InternalError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 15,
    "kind": "external",
    "name": "RangeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~RangeError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 16,
    "kind": "external",
    "name": "ReferenceError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~ReferenceError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 17,
    "kind": "external",
    "name": "SyntaxError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~SyntaxError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 18,
    "kind": "external",
    "name": "TypeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~TypeError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 19,
    "kind": "external",
    "name": "URIError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~URIError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 20,
    "kind": "external",
    "name": "Number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Number",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 21,
    "kind": "external",
    "name": "number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~number",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 22,
    "kind": "external",
    "name": "Date",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Date",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 23,
    "kind": "external",
    "name": "String",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~String",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 24,
    "kind": "external",
    "name": "string",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~string",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 25,
    "kind": "external",
    "name": "RegExp",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~RegExp",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 26,
    "kind": "external",
    "name": "Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 27,
    "kind": "external",
    "name": "Int8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Int8Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 28,
    "kind": "external",
    "name": "Uint8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Uint8Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 29,
    "kind": "external",
    "name": "Uint8ClampedArray",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Uint8ClampedArray",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 30,
    "kind": "external",
    "name": "Int16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Int16Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 31,
    "kind": "external",
    "name": "Uint16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Uint16Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 32,
    "kind": "external",
    "name": "Int32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Int32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 33,
    "kind": "external",
    "name": "Uint32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Uint32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 34,
    "kind": "external",
    "name": "Float32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Float32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 35,
    "kind": "external",
    "name": "Float64Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Float64Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 36,
    "kind": "external",
    "name": "Map",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Map",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 37,
    "kind": "external",
    "name": "Set",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Set",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 38,
    "kind": "external",
    "name": "WeakMap",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~WeakMap",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 39,
    "kind": "external",
    "name": "WeakSet",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~WeakSet",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 40,
    "kind": "external",
    "name": "ArrayBuffer",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~ArrayBuffer",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 41,
    "kind": "external",
    "name": "DataView",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~DataView",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 42,
    "kind": "external",
    "name": "JSON",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~JSON",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 43,
    "kind": "external",
    "name": "Promise",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Promise",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 44,
    "kind": "external",
    "name": "Generator",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Generator",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 45,
    "kind": "external",
    "name": "GeneratorFunction",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~GeneratorFunction",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 46,
    "kind": "external",
    "name": "Reflect",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Reflect",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 47,
    "kind": "external",
    "name": "Proxy",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Proxy",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 48,
    "kind": "file",
    "name": "lib/browser.js",
    "content": "module.exports = {\n    PrivateKey: require(\"./ecc/src/PrivateKey\"),\n    PublicKey: require(\"./ecc/src/PublicKey\"),\n    Signature: require(\"./ecc/src/signature\"),\n    key: require(\"./ecc/src/KeyUtils\"),\n    TransactionBuilder: require(\"./chain/src/TransactionBuilder\"),\n    Login: require(\"./chain/src/AccountLogin\"),\n    bitshares_ws: require(\"bitsharesjs-ws\")\n}\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/browser.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 49,
    "kind": "file",
    "name": "lib/chain/index.js",
    "content": "import ChainStore from \"./src/ChainStore\";\nimport TransactionBuilder  from \"./src/TransactionBuilder\";\nimport ChainTypes from \"./src/ChainTypes\";\nimport ObjectId from \"./src/ObjectId\";\nimport NumberUtils from \"./src/NumberUtils\";\nimport TransactionHelper from \"./src/TransactionHelper\";\nimport ChainValidation from \"./src/ChainValidation\";\nimport EmitterInstance from \"./src/EmitterInstance\";\nimport Login from \"./src/AccountLogin\";\n\nconst {FetchChainObjects, FetchChain} = ChainStore;\n\nexport {ChainStore, TransactionBuilder, FetchChainObjects, ChainTypes,\n    ObjectId, NumberUtils, TransactionHelper, ChainValidation, FetchChain, Login }\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/index.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 50,
    "kind": "variable",
    "name": "FetchChainObjects",
    "memberof": "lib/chain/index.js",
    "static": true,
    "longname": "lib/chain/index.js~FetchChainObjects",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 51,
    "kind": "file",
    "name": "lib/chain/src/AccountLogin.js",
    "content": "import PrivateKey from \"../../ecc/src/PrivateKey\";\nimport key from \"../../ecc/src/KeyUtils\";\n\nimport {get, set} from \"./state\";\n\nvar _keyCachePriv = {};\nvar _keyCachePub = {};\n\nclass AccountLogin {\n    constructor() {\n        let state = {loggedIn: false, roles: [\"active\", \"owner\", \"memo\"]};\n        this.get = get(state);\n        this.set = set(state);\n\n        this.subs = {};\n    }\n\n    addSubscription(cb) {\n        this.subs[cb] = cb;\n    }\n\n    setRoles(roles) {\n        this.set(\"roles\", roles);\n    }\n\n    generateKeys(accountName, password, roles, prefix) {\n        var start = new Date().getTime();\n        if (!accountName || !password) {\n            throw new Error(\"Account name or password required\");\n        }\n        if (password.length < 12) {\n            throw new Error(\"Password must have at least 12 characters\");\n        }\n\n        let privKeys = {};\n        let pubKeys = {};\n\n        (roles || this.get(\"roles\")).forEach(role => {\n            let seed = accountName + role + password;\n            let pkey = _keyCachePriv[seed]\n                ? _keyCachePriv[seed]\n                : PrivateKey.fromSeed(key.normalize_brainKey(seed));\n            _keyCachePriv[seed] = pkey;\n\n            privKeys[role] = pkey;\n            pubKeys[role] = _keyCachePub[seed]\n                ? _keyCachePub[seed]\n                : pkey.toPublicKey().toString(prefix);\n\n            _keyCachePub[seed] = pubKeys[role];\n        });\n\n        return {privKeys, pubKeys};\n    }\n\n    checkKeys({accountName, password, auths}) {\n        if (!accountName || !password || !auths) {\n            throw new Error(\"checkKeys: Missing inputs\");\n        }\n        let hasKey = false;\n\n        for (let role in auths) {\n            let {privKeys, pubKeys} = this.generateKeys(accountName, password, [\n                role\n            ]);\n            auths[role].forEach(key => {\n                if (key[0] === pubKeys[role]) {\n                    hasKey = true;\n                    this.set(role, {priv: privKeys[role], pub: pubKeys[role]});\n                }\n            });\n        }\n\n        if (hasKey) {\n            this.set(\"name\", accountName);\n        }\n\n        this.set(\"loggedIn\", hasKey);\n\n        return hasKey;\n    }\n\n    signTransaction(tr) {\n        let myKeys = {};\n        let hasKey = false;\n\n        this.get(\"roles\").forEach(role => {\n            let myKey = this.get(role);\n            if (myKey) {\n                hasKey = true;\n                console.log(\"adding signer:\", myKey.pub);\n                tr.add_signer(myKey.priv, myKey.pub);\n            }\n        });\n\n        if (!hasKey) {\n            throw new Error(\n                \"You do not have any private keys to sign this transaction\"\n            );\n        }\n    }\n}\n\nlet accountLogin = new AccountLogin();\n\nexport default accountLogin;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/AccountLogin.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 52,
    "kind": "variable",
    "name": "_keyCachePriv",
    "memberof": "lib/chain/src/AccountLogin.js",
    "static": true,
    "longname": "lib/chain/src/AccountLogin.js~_keyCachePriv",
    "access": "private",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/AccountLogin.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 53,
    "kind": "variable",
    "name": "_keyCachePub",
    "memberof": "lib/chain/src/AccountLogin.js",
    "static": true,
    "longname": "lib/chain/src/AccountLogin.js~_keyCachePub",
    "access": "private",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/AccountLogin.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 54,
    "kind": "class",
    "name": "AccountLogin",
    "memberof": "lib/chain/src/AccountLogin.js",
    "static": true,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/AccountLogin.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 9,
    "pseudoExport": true,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 55,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 10,
    "undocument": true
  },
  {
    "__docId__": 56,
    "kind": "member",
    "name": "get",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#get",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 57,
    "kind": "member",
    "name": "set",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#set",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 58,
    "kind": "member",
    "name": "subs",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#subs",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 59,
    "kind": "method",
    "name": "addSubscription",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#addSubscription",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "params": [
      {
        "name": "cb",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 60,
    "kind": "method",
    "name": "setRoles",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#setRoles",
    "access": "public",
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "params": [
      {
        "name": "roles",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 61,
    "kind": "method",
    "name": "generateKeys",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#generateKeys",
    "access": "public",
    "description": null,
    "lineNumber": 26,
    "undocument": true,
    "params": [
      {
        "name": "accountName",
        "types": [
          "*"
        ]
      },
      {
        "name": "password",
        "types": [
          "*"
        ]
      },
      {
        "name": "roles",
        "types": [
          "*"
        ]
      },
      {
        "name": "prefix",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"privKeys\": *, \"pubKeys\": *}"
      ]
    }
  },
  {
    "__docId__": 62,
    "kind": "method",
    "name": "checkKeys",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#checkKeys",
    "access": "public",
    "description": null,
    "lineNumber": 56,
    "undocument": true,
    "params": [
      {
        "name": "objectPattern",
        "types": [
          "{\"accountName\": *, \"password\": *, \"auths\": *}"
        ],
        "defaultRaw": {
          "accountName": null,
          "password": null,
          "auths": null
        },
        "defaultValue": "{\"accountName\":null,\"password\":null,\"auths\":null}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 63,
    "kind": "method",
    "name": "signTransaction",
    "memberof": "lib/chain/src/AccountLogin.js~AccountLogin",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/AccountLogin.js~AccountLogin#signTransaction",
    "access": "public",
    "description": null,
    "lineNumber": 83,
    "undocument": true,
    "params": [
      {
        "name": "tr",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 64,
    "kind": "variable",
    "name": "accountLogin",
    "memberof": "lib/chain/src/AccountLogin.js",
    "static": true,
    "longname": "lib/chain/src/AccountLogin.js~accountLogin",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/AccountLogin.js",
    "importStyle": "accountLogin",
    "description": null,
    "lineNumber": 106,
    "undocument": true,
    "type": {
      "types": [
        "lib/chain/src/AccountLogin.js~AccountLogin"
      ]
    }
  },
  {
    "__docId__": 65,
    "kind": "file",
    "name": "lib/chain/src/ChainStore.js",
    "content": "import Immutable from \"immutable\";\nimport {Apis} from \"bitsharesjs-ws\";\nimport ChainTypes from \"./ChainTypes\";\nimport ChainValidation from \"./ChainValidation\";\nimport BigInteger from \"bigi\";\nimport ee from \"./EmitterInstance\";\nconst {object_type, impl_object_type} = ChainTypes;\nlet emitter = ee();\n\nlet op_history = parseInt(object_type.operation_history, 10);\nlet witness_object_type = parseInt(object_type.witness, 10);\nlet committee_member_object_type = parseInt(object_type.committee_member, 10);\nlet account_object_type = parseInt(object_type.account, 10);\nlet witness_prefix = \"1.\" + witness_object_type + \".\";\nlet committee_prefix = \"1.\" + committee_member_object_type + \".\";\nlet account_prefix = \"1.\" + account_object_type + \".\";\n\nconst DEBUG = JSON.parse(\n    process.env.npm_config__graphene_chain_chain_debug || false\n);\n\nconst objectTypesArray = Object.keys(object_type);\nconst implObjectTypesArray = Object.keys(impl_object_type);\n\nfunction getObjectType(id) {\n    let [one, two] = id.split(\".\");\n    two = parseInt(two, 10);\n    switch (one) {\n        case \"0\":\n            return \"unknown\";\n        case \"1\":\n            return objectTypesArray[two];\n        case \"2\":\n            return implObjectTypesArray[two];\n        case \"5\":\n            return \"market\";\n        default:\n    }\n}\n\n/**\n *  @brief maintains a local cache of blockchain state\n *\n *  The ChainStore maintains a local cache of blockchain state and exposes\n *  an API that makes it easy to query objects and receive updates when\n *  objects are available.\n */\nclass ChainStore {\n    constructor() {\n        /** tracks everyone who wants to receive updates when the cache changes */\n        this.subscribers = new Set();\n        this.subscribed = false;\n\n        this.clearCache();\n        // this.progress = 0;\n        // this.chain_time_offset is used to estimate the blockchain time\n        this.chain_time_offset = [];\n        this.dispatchFrequency = 40;\n    }\n\n    /**\n     * Clears all cached state.  This should be called any time the network connection is\n     * reset.\n     */\n    clearCache() {\n        /*\n        * Tracks specific objects such as accounts that can trigger additional\n        * fetching that should only happen if we're actually interested in the account\n        */\n        this.subbed_accounts = new Set();\n        this.subbed_witnesses = new Set();\n        this.subbed_committee = new Set();\n\n        this.objects_by_id = new Map();\n        this.accounts_by_name = new Map();\n        this.assets_by_symbol = new Map();\n        this.account_ids_by_key = Immutable.Map();\n        this.account_ids_by_account = Immutable.Map();\n\n        this.balance_objects_by_address = new Map();\n        this.get_account_refs_of_keys_calls = new Set();\n        this.get_account_refs_of_accounts_calls = new Set();\n        this.account_history_requests = new Map(); ///< tracks pending history requests\n        this.witness_by_account_id = new Map();\n        this.workers = new Set();\n        this.committee_by_account_id = new Map();\n        this.objects_by_vote_id = new Map();\n        this.fetching_get_full_accounts = new Map();\n        this.get_full_accounts_subscriptions = new Map();\n        clearTimeout(this.timeout);\n        this.dispatched = false;\n    }\n\n    resetCache(subscribe_to_new) {\n        this.subscribed = false;\n        this.subError = null;\n        this.clearCache();\n        this.head_block_time_string = null;\n        return this.init(subscribe_to_new).catch(err => {\n            console.log(\"resetCache init error:\", err());\n        });\n    }\n\n    setDispatchFrequency(freq) {\n        this.dispatchFrequency = freq;\n    }\n\n    init(subscribe_to_new = true) {\n        let reconnectCounter = 0;\n        var _init = (resolve, reject) => {\n            if (this.subscribed) return resolve();\n            let db_api = Apis.instance().db_api();\n            if (!db_api) {\n                return reject(\n                    new Error(\n                        \"Api not found, please initialize the api instance before calling the ChainStore\"\n                    )\n                );\n            }\n            return db_api\n                .exec(\"get_objects\", [[\"2.1.0\"]])\n                .then(optional_objects => {\n                    //if(DEBUG) console.log(\"... optional_objects\",optional_objects ? optional_objects[0].id : null)\n                    for (let i = 0; i < optional_objects.length; i++) {\n                        let optional_object = optional_objects[i];\n                        if (optional_object) {\n                            /*\n                        ** Because 2.1.0 gets fetched here before the set_subscribe_callback,\n                        ** the new witness_node subscription model makes it so we\n                        ** never get subscribed to that object, therefore\n                        ** this._updateObject is commented out here\n                        */\n                            // this._updateObject( optional_object, true );\n\n                            let head_time = new Date(\n                                optional_object.time + \"+00:00\"\n                            ).getTime();\n                            this.head_block_time_string = optional_object.time;\n                            this.chain_time_offset.push(\n                                new Date().getTime() -\n                                    timeStringToDate(\n                                        optional_object.time\n                                    ).getTime()\n                            );\n                            let now = new Date().getTime();\n                            let delta = (now - head_time) / 1000;\n                            // let start = Date.parse(\"Sep 1, 2015\");\n                            // let progress_delta = head_time - start;\n                            // this.progress = progress_delta / (now-start);\n\n                            if (delta < 60) {\n                                Apis.instance()\n                                    .db_api()\n                                    .exec(\"set_subscribe_callback\", [\n                                        this.onUpdate.bind(this),\n                                        subscribe_to_new\n                                    ])\n                                    .then(() => {\n                                        console.log(\n                                            \"synced and subscribed, chainstore ready\"\n                                        );\n                                        this.subscribed = true;\n                                        this.subError = null;\n                                        this.notifySubscribers();\n                                        resolve();\n                                    })\n                                    .catch(error => {\n                                        this.subscribed = false;\n                                        this.subError = error;\n                                        this.notifySubscribers();\n                                        reject(error);\n                                        console.log(\"Error: \", error);\n                                    });\n                            } else {\n                                console.log(\"not yet synced, retrying in 1s\");\n                                this.subscribed = false;\n                                reconnectCounter++;\n                                this.notifySubscribers();\n                                if (reconnectCounter > 5) {\n                                    this.subError = new Error(\n                                        \"ChainStore sync error, please check your system clock\"\n                                    );\n                                    return reject(this.subError);\n                                }\n                                setTimeout(\n                                    _init.bind(this, resolve, reject),\n                                    1000\n                                );\n                            }\n                        } else {\n                            setTimeout(_init.bind(this, resolve, reject), 1000);\n                        }\n                    }\n                })\n                .catch(error => {\n                    // in the event of an error clear the pending state for id\n                    console.log(\"!!! Chain API error\", error);\n                    this.objects_by_id.delete(\"2.1.0\");\n                    reject(error);\n                });\n        };\n\n        return new Promise((resolve, reject) => _init(resolve, reject));\n    }\n\n    _subTo(type, id) {\n        let key = \"subbed_\" + type;\n        if (!this[key].has(id)) this[key].add(id);\n    }\n\n    unSubFrom(type, id) {\n        let key = \"subbed_\" + type;\n        this[key].delete(id);\n        this.objects_by_id.delete(id);\n    }\n\n    _isSubbedTo(type, id) {\n        let key = \"subbed_\" + type;\n        return this[key].has(id);\n    }\n\n    onUpdate(\n        updated_objects /// map from account id to objects\n    ) {\n        let cancelledOrders = [];\n        let closedCallOrders = [];\n\n        for (let a = 0; a < updated_objects.length; ++a) {\n            for (let i = 0; i < updated_objects[a].length; ++i) {\n                let obj = updated_objects[a][i];\n                if (ChainValidation.is_object_id(obj)) {\n                    // An entry containing only an object ID means that object was removed\n\n                    // Check if the object exists in the ChainStore\n                    let old_obj = this.objects_by_id.get(obj);\n\n                    const objectType = getObjectType(obj);\n\n                    switch (objectType) {\n                        case \"limit_order\":\n                            cancelledOrders.push(obj);\n                            if (old_obj) {\n                                let account = this.objects_by_id.get(\n                                    old_obj.get(\"seller\")\n                                );\n                                if (account && account.has(\"orders\")) {\n                                    let limit_orders = account.get(\"orders\");\n                                    if (account.get(\"orders\").has(obj)) {\n                                        account = account.set(\n                                            \"orders\",\n                                            limit_orders.delete(obj)\n                                        );\n                                        this.objects_by_id.set(\n                                            account.get(\"id\"),\n                                            account\n                                        );\n                                    }\n                                }\n                            }\n                            break;\n\n                        case \"call_order\":\n                            closedCallOrders.push(obj);\n                            if (old_obj) {\n                                let account = this.objects_by_id.get(\n                                    old_obj.get(\"borrower\")\n                                );\n                                if (account && account.has(\"call_orders\")) {\n                                    let call_orders = account.get(\n                                        \"call_orders\"\n                                    );\n                                    if (account.get(\"call_orders\").has(obj)) {\n                                        account = account.set(\n                                            \"call_orders\",\n                                            call_orders.delete(obj)\n                                        );\n                                        this.objects_by_id.set(\n                                            account.get(\"id\"),\n                                            account\n                                        );\n                                    }\n                                }\n                            }\n                            break;\n\n                        case \"proposal\":\n                            this.subbed_accounts.forEach(acc => {\n                                let current = this.objects_by_id.get(acc);\n                                if (current) {\n                                    let proposals = current.get(\n                                        \"proposals\",\n                                        Immutable.Set()\n                                    );\n\n                                    if (proposals.includes(obj)) {\n                                        proposals = proposals.delete(obj);\n                                        current = current.set(\n                                            \"proposals\",\n                                            proposals\n                                        );\n                                        this.objects_by_id.set(\n                                            current.get(\"id\"),\n                                            current\n                                        );\n                                    }\n                                }\n                            });\n                            break;\n                    }\n\n                    // Remove the object (if it already exists), set to null to indicate it does not exist\n                    if (old_obj) this.objects_by_id.set(obj, null);\n                } else {\n                    this._updateObject(obj);\n                }\n            }\n        }\n\n        // Cancelled limit order(s), emit event for any listeners to update their state\n        if (cancelledOrders.length)\n            emitter.emit(\"cancel-order\", cancelledOrders);\n        // Closed call order, emit event for any listeners to update their state\n        if (closedCallOrders.length)\n            emitter.emit(\"close-call\", closedCallOrders);\n\n        // console.log(\"objects in store count:\", this.objects_by_id.size, updated_objects[0].reduce((final, o) => {\n        //     if (o && o.id) {\n        //         final.changed.push(o.id);\n        //     } else {\n        //         final.removed.push(o);\n        //     }\n        //     return final;\n        // }, {changed: [], removed: []}));\n        this.notifySubscribers();\n    }\n\n    notifySubscribers() {\n        // Dispatch at most only once every x milliseconds\n        if (!this.dispatched) {\n            this.dispatched = true;\n            this.timeout = setTimeout(() => {\n                this.dispatched = false;\n                this.subscribers.forEach(callback => {\n                    callback();\n                });\n            }, this.dispatchFrequency);\n        }\n    }\n\n    /**\n     *  Add a callback that will be called anytime any object in the cache is updated\n     */\n    subscribe(callback) {\n        if (this.subscribers.has(callback))\n            return console.error(\"Subscribe callback already exists\", callback);\n        this.subscribers.add(callback);\n    }\n\n    /**\n     *  Remove a callback that was previously added via subscribe\n     */\n    unsubscribe(callback) {\n        if (!this.subscribers.has(callback))\n            return console.error(\n                \"Unsubscribe callback does not exists\",\n                callback\n            );\n        this.subscribers.delete(callback);\n    }\n\n    /** Clear an object from the cache to force it to be fetched again. This may\n     * be useful if a query failed the first time and the wallet has reason to believe\n     * it may succeede the second time.\n     */\n    clearObjectCache(id) {\n        this.objects_by_id.delete(id);\n    }\n\n    /**\n     * There are three states an object id could be in:\n     *\n     * 1. undefined       - returned if a query is pending\n     * 3. defined         - return an object\n     * 4. null            - query return null\n     *\n     */\n    getObject(\n        id,\n        force = false,\n        autosubscribe = true,\n        no_full_account = false\n    ) {\n        if (!ChainValidation.is_object_id(id))\n            throw Error(\"argument is not an object id: \" + JSON.stringify(id));\n\n        let result = this.objects_by_id.get(id);\n        let subChange =\n            id.substring(0, account_prefix.length) == account_prefix &&\n            !this.get_full_accounts_subscriptions.get(id, false) &&\n            autosubscribe;\n\n        if (result === null && !force) return result;\n        if (result === undefined || force || subChange)\n            return this.fetchObject(id, force, autosubscribe, no_full_account);\n        if (result === true) return undefined;\n\n        return result;\n    }\n\n    /**\n     *  @return undefined if a query is pending\n     *  @return null if id_or_symbol has been queired and does not exist\n     *  @return object if the id_or_symbol exists\n     */\n    getAsset(id_or_symbol) {\n        if (!id_or_symbol) return null;\n\n        if (ChainValidation.is_object_id(id_or_symbol)) {\n            let asset = this.getObject(id_or_symbol);\n\n            if (\n                asset &&\n                (asset.get(\"bitasset\") &&\n                    !asset.getIn([\"bitasset\", \"current_feed\"]))\n            ) {\n                return undefined;\n            }\n            return asset;\n        }\n\n        /// TODO: verify id_or_symbol is a valid symbol name\n\n        let asset_id = this.assets_by_symbol.get(id_or_symbol);\n\n        if (ChainValidation.is_object_id(asset_id)) {\n            let asset = this.getObject(asset_id);\n\n            if (\n                asset &&\n                (asset.get(\"bitasset\") &&\n                    !asset.getIn([\"bitasset\", \"current_feed\"]))\n            ) {\n                return undefined;\n            }\n            return asset;\n        }\n\n        if (asset_id === null) return null;\n\n        if (asset_id === true) return undefined;\n\n        Apis.instance()\n            .db_api()\n            .exec(\"lookup_asset_symbols\", [[id_or_symbol]])\n            .then(asset_objects => {\n                if (asset_objects.length && asset_objects[0])\n                    this._updateObject(asset_objects[0], true);\n                else {\n                    this.assets_by_symbol.set(id_or_symbol, null);\n                    this.notifySubscribers();\n                }\n            })\n            .catch(error => {\n                console.log(\"Error: \", error);\n                this.assets_by_symbol.delete(id_or_symbol);\n            });\n\n        return undefined;\n    }\n\n    /**\n     *  @param the public key to find accounts that reference it\n     *\n     *  @return Set of account ids that reference the given key\n     *  @return a empty Set if no items are found\n     *  @return undefined if the result is unknown\n     *\n     *  If this method returns undefined, then it will send a request to\n     *  the server for the current set of accounts after which the\n     *  server will notify us of any accounts that reference these keys\n     */\n    getAccountRefsOfKey(key) {\n        if (this.get_account_refs_of_keys_calls.has(key))\n            return this.account_ids_by_key.get(key);\n        else {\n            this.get_account_refs_of_keys_calls.add(key);\n\n            Apis.instance()\n                .db_api()\n                .exec(\"get_key_references\", [[key]])\n                .then(vec_account_id => {\n                    let refs = Immutable.Set();\n                    vec_account_id = vec_account_id[0];\n                    refs = refs.withMutations(r => {\n                        for (let i = 0; i < vec_account_id.length; ++i) {\n                            r.add(vec_account_id[i]);\n                        }\n                    });\n                    this.account_ids_by_key = this.account_ids_by_key.set(\n                        key,\n                        refs\n                    );\n                    this.notifySubscribers();\n                })\n                .catch(err => {\n                    console.error(\"get_key_references\", err);\n                    this.account_ids_by_key = this.account_ids_by_key.delete(\n                        key\n                    );\n                    this.get_account_refs_of_keys_calls.delete(key);\n                });\n            return undefined;\n        }\n        return undefined;\n    }\n\n    /**\n     *  @param the account id to find accounts that reference it\n     *\n     *  @return Set of account ids that reference the given key\n     *  @return a empty Set if no items are found\n     *  @return undefined if the result is unknown\n     *\n     *  If this method returns undefined, then it will send a request to\n     *  the server for the current set of accounts after which the\n     *  server will notify us of any accounts that reference these keys\n     */\n    getAccountRefsOfAccount(account_id) {\n        if (this.get_account_refs_of_accounts_calls.has(account_id))\n            return this.account_ids_by_account.get(account_id);\n        else {\n            this.get_account_refs_of_accounts_calls.add(account_id);\n\n            Apis.instance()\n                .db_api()\n                .exec(\"get_account_references\", [account_id])\n                .then(vec_account_id => {\n                    let refs = Immutable.Set();\n                    refs = refs.withMutations(r => {\n                        for (let i = 0; i < vec_account_id.length; ++i) {\n                            r.add(vec_account_id[i]);\n                        }\n                    });\n                    this.account_ids_by_account = this.account_ids_by_account.set(\n                        account_id,\n                        refs\n                    );\n                    this.notifySubscribers();\n                })\n                .catch(err => {\n                    console.error(\"get_account_references\", err);\n                    this.account_ids_by_account = this.account_ids_by_account.delete(\n                        account_id\n                    );\n                    this.get_account_refs_of_accounts_calls.delete(account_id);\n                });\n            return undefined;\n        }\n        return undefined;\n    }\n\n    /**\n     * @return a Set of balance ids that are claimable with the given address\n     * @return undefined if a query is pending and the set is not known at this time\n     * @return a empty Set if no items are found\n     *\n     * If this method returns undefined, then it will send a request to the server for\n     * the current state after which it will be subscribed to changes to this set.\n     */\n    getBalanceObjects(address) {\n        let current = this.balance_objects_by_address.get(address);\n        if (current === undefined) {\n            /** because balance objects are simply part of the genesis state, there is no need to worry about\n             * having to update them / merge them or index them in updateObject.\n             */\n            this.balance_objects_by_address.set(address, Immutable.Set());\n            Apis.instance()\n                .db_api()\n                .exec(\"get_balance_objects\", [[address]])\n                .then(\n                    balance_objects => {\n                        let set = new Set();\n                        for (let i = 0; i < balance_objects.length; ++i) {\n                            this._updateObject(balance_objects[i]);\n                            set.add(balance_objects[i].id);\n                        }\n                        this.balance_objects_by_address.set(\n                            address,\n                            Immutable.Set(set)\n                        );\n                        this.notifySubscribers();\n                    },\n                    () => {\n                        this.balance_objects_by_address.delete(address);\n                    }\n                );\n        }\n        return this.balance_objects_by_address.get(address);\n    }\n\n    /**\n     *  If there is not already a pending request to fetch this object, a new\n     *  request will be made.\n     *\n     *  @return null if the object does not exist,\n     *  @return undefined if the object might exist but is not in cache\n     *  @return the object if it does exist and is in our cache\n     */\n    fetchObject(\n        id,\n        force = false,\n        autosubscribe = true,\n        no_full_account = false\n    ) {\n        if (typeof id !== \"string\") {\n            let result = [];\n            for (let i = 0; i < id.length; ++i)\n                result.push(this.fetchObject(id[i], force, autosubscribe));\n            return result;\n        }\n\n        if (DEBUG)\n            console.log(\n                \"!!! fetchObject: \",\n                id,\n                this.subscribed,\n                !this.subscribed && !force\n            );\n        if (!this.subscribed && !force) return undefined;\n\n        if (DEBUG) console.log(\"maybe fetch object: \", id);\n        if (!ChainValidation.is_object_id(id))\n            throw Error(\"argument is not an object id: \" + id);\n\n        if (id.search(\"1.2.\") === 0 && !no_full_account)\n            return this.fetchFullAccount(id, autosubscribe);\n        if (id.search(witness_prefix) === 0) this._subTo(\"witnesses\", id);\n        if (id.search(committee_prefix) === 0) this._subTo(\"committee\", id);\n\n        let result = this.objects_by_id.get(id);\n        if (result === undefined) {\n            // the fetch\n            if (DEBUG) console.log(\"fetching object: \", id);\n            this.objects_by_id.set(id, true);\n            if (!Apis.instance().db_api()) return null;\n            Apis.instance()\n                .db_api()\n                .exec(\"get_objects\", [[id]])\n                .then(optional_objects => {\n                    //if(DEBUG) console.log(\"... optional_objects\",optional_objects ? optional_objects[0].id : null)\n                    for (let i = 0; i < optional_objects.length; i++) {\n                        let optional_object = optional_objects[i];\n                        if (optional_object) {\n                            this._updateObject(optional_object, true);\n                        } else {\n                            this.objects_by_id.set(id, null);\n                            this.notifySubscribers();\n                        }\n                    }\n                })\n                .catch(error => {\n                    // in the event of an error clear the pending state for id\n                    console.log(\"!!! Chain API error\", error);\n                    this.objects_by_id.delete(id);\n                });\n        } else if (result === true)\n            // then we are waiting a response\n            return undefined;\n        return result; // we have a response, return it\n    }\n\n    /**\n     *  @return null if no such account exists\n     *  @return undefined if such an account may exist, and fetch the the full account if not already pending\n     *  @return the account object if it does exist\n     */\n    getAccount(name_or_id, autosubscribe = true) {\n        if (!name_or_id) return null;\n\n        if (typeof name_or_id === \"object\") {\n            if (name_or_id.id)\n                return this.getAccount(name_or_id.id, autosubscribe);\n            else if (name_or_id.get)\n                return this.getAccount(name_or_id.get(\"id\"), autosubscribe);\n            else return undefined;\n        }\n\n        if (ChainValidation.is_object_id(name_or_id)) {\n            let account = this.getObject(name_or_id, false, autosubscribe);\n            if (account === null) {\n                return null;\n            }\n            /* If sub status changes from false to true, force full fetch */\n            const currentSub = this.get_full_accounts_subscriptions.get(\n                name_or_id,\n                false\n            );\n            if (\n                (!currentSub && autosubscribe) ||\n                account === undefined ||\n                account.get(\"name\") === undefined\n            ) {\n                return this.fetchFullAccount(name_or_id, autosubscribe);\n            }\n            return account;\n        } else if (ChainValidation.is_account_name(name_or_id, true)) {\n            let account_id = this.accounts_by_name.get(name_or_id);\n            if (account_id === null) return null; // already fetched and it wasn't found\n            if (account_id === undefined)\n                // then no query, fetch it\n                return this.fetchFullAccount(name_or_id, autosubscribe);\n\n            return this.getObject(account_id, false, autosubscribe); // return it\n        } else {\n            console.log(\"!is_object_id && !is_account_name\");\n            return null;\n        }\n        //throw Error( `Argument is not an account name or id: ${name_or_id}` )\n    }\n\n    /**\n     *  @return undefined if the account name is not yet cached, and fetch the the full account if not already pending\n     *  @return null if the account name or id are unvalid, or the account does not exist\n     *  @return the account name\n     */\n    getAccountName(id) {\n        let account = this.objects_by_id.get(id);\n        if (account === true) return undefined;\n        if (!account) {\n            this.getObject(id, false, false, true);\n            return undefined;\n        }\n        return account.get(\"name\");\n    }\n\n    /**\n     * This method will attempt to lookup witness by account_id.\n     * If witness doesn't exist it will return null, if witness is found it will return witness object,\n     * if it's not fetched yet it will return undefined.\n     * @param account_id - account id\n     */\n    getWitnessById(account_id) {\n        let witness_id = this.witness_by_account_id.get(account_id);\n        if (witness_id === undefined) {\n            this.fetchWitnessByAccount(account_id);\n            return undefined;\n        } else if (witness_id) {\n            this._subTo(\"witnesses\", witness_id);\n        }\n\n        return witness_id ? this.getObject(witness_id) : null;\n    }\n\n    /**\n     * This method will attempt to lookup committee member by account_id.\n     * If committee member doesn't exist it will return null, if committee member is found it will return committee member object,\n     * if it's not fetched yet it will return undefined.\n     * @param account_id - account id\n     */\n    getCommitteeMemberById(account_id) {\n        let cm_id = this.committee_by_account_id.get(account_id);\n        if (cm_id === undefined) {\n            this.fetchCommitteeMemberByAccount(account_id);\n            return undefined;\n        } else if (cm_id) {\n            this._subTo(\"committee\", cm_id);\n        }\n        return cm_id ? this.getObject(cm_id) : null;\n    }\n\n    /**\n     *\n     * @return a promise with the workers array\n     */\n    fetchAllWorkers() {\n        return new Promise((resolve, reject) => {\n            Apis.instance()\n                .db_api()\n                .exec(\"get_all_workers\", [])\n                .then(workers_array => {\n                    if (workers_array && workers_array.length) {\n                        workers_array.forEach(worker => {\n                            this._updateObject(worker, false);\n                        });\n                        resolve(workers_array);\n                        this.notifySubscribers();\n                    } else {\n                        resolve([]);\n                    }\n                }, reject);\n        });\n    }\n\n    /**\n     *\n     * @return a promise with the witness object\n     */\n    fetchWitnessByAccount(account_id) {\n        return new Promise((resolve, reject) => {\n            Apis.instance()\n                .db_api()\n                .exec(\"get_witness_by_account\", [account_id])\n                .then(optional_witness_object => {\n                    if (optional_witness_object) {\n                        this._subTo(\"witnesses\", optional_witness_object.id);\n                        this.witness_by_account_id = this.witness_by_account_id.set(\n                            optional_witness_object.witness_account,\n                            optional_witness_object.id\n                        );\n                        let witness_object = this._updateObject(\n                            optional_witness_object,\n                            true\n                        );\n                        resolve(witness_object);\n                    } else {\n                        this.witness_by_account_id = this.witness_by_account_id.set(\n                            account_id,\n                            null\n                        );\n                        this.notifySubscribers();\n                        resolve(null);\n                    }\n                }, reject);\n        });\n    }\n    /**\n     *\n     * @return a promise with the witness object\n     */\n    fetchCommitteeMemberByAccount(account_id) {\n        return new Promise((resolve, reject) => {\n            Apis.instance()\n                .db_api()\n                .exec(\"get_committee_member_by_account\", [account_id])\n                .then(optional_committee_object => {\n                    if (optional_committee_object) {\n                        this._subTo(\"committee\", optional_committee_object.id);\n                        this.committee_by_account_id = this.committee_by_account_id.set(\n                            optional_committee_object.committee_member_account,\n                            optional_committee_object.id\n                        );\n                        let committee_object = this._updateObject(\n                            optional_committee_object,\n                            true\n                        );\n                        resolve(committee_object);\n                    } else {\n                        this.committee_by_account_id = this.committee_by_account_id.set(\n                            account_id,\n                            null\n                        );\n                        this.notifySubscribers();\n                        resolve(null);\n                    }\n                }, reject);\n        });\n    }\n\n    /**\n     *  Fetches an account and all of its associated data in a single query\n     *\n     *  @param an account name or account id\n     *\n     *  @return undefined if the account in question is in the process of being fetched\n     *  @return the object if it has already been fetched\n     *  @return null if the object has been queried and was not found\n     */\n    fetchFullAccount(name_or_id, autosubscribe = true) {\n        if (DEBUG) console.log(\"Fetch full account: \", name_or_id);\n\n        let fetch_account = false;\n        const subChanged =\n            this.get_full_accounts_subscriptions.has(name_or_id) &&\n            (this.get_full_accounts_subscriptions.get(name_or_id) === false &&\n                autosubscribe);\n\n        const is_object_id = ChainValidation.is_object_id(name_or_id);\n        const is_account_name =\n            !is_object_id && ChainValidation.is_account_name(name_or_id, true);\n\n        if (is_object_id && !subChanged) {\n            let current = this.objects_by_id.get(name_or_id);\n            fetch_account = current === undefined;\n            if (\n                !fetch_account &&\n                (current && current.get(\"name\") && current.has(\"balances\"))\n            )\n                return current;\n        } else if (!subChanged) {\n            if (!is_account_name)\n                throw Error(\"argument is not an account name: \" + name_or_id);\n\n            let account_id = this.accounts_by_name.get(name_or_id);\n            if (ChainValidation.is_object_id(account_id))\n                return this.getAccount(account_id, autosubscribe);\n        }\n\n        /// only fetch once every 5 seconds if it wasn't found, or if the subscribe status changed to true\n        if (\n            subChanged ||\n            !this.fetching_get_full_accounts.has(name_or_id) ||\n            Date.now() - this.fetching_get_full_accounts.get(name_or_id) > 5000\n        ) {\n            this.fetching_get_full_accounts.set(name_or_id, Date.now());\n            Apis.instance()\n                .db_api()\n                .exec(\"get_full_accounts\", [[name_or_id], autosubscribe])\n                .then(results => {\n                    if (results.length === 0) {\n                        if (is_object_id) {\n                            this.objects_by_id.set(name_or_id, null);\n                            this.notifySubscribers();\n                        } else if (is_account_name) {\n                            this.accounts_by_name.set(name_or_id, null);\n                            this.notifySubscribers();\n                        }\n                        return;\n                    }\n                    let full_account = results[0][1];\n                    this.get_full_accounts_subscriptions.set(\n                        full_account.account.name,\n                        autosubscribe\n                    );\n                    this.get_full_accounts_subscriptions.set(\n                        full_account.account.id,\n                        autosubscribe\n                    );\n                    if (DEBUG) console.log(\"full_account: \", full_account);\n                    /* Add this account to list of subbed accounts */\n                    this._subTo(\"accounts\", full_account.account.id);\n                    let {\n                        account,\n                        assets,\n                        vesting_balances,\n                        statistics,\n                        call_orders,\n                        limit_orders,\n                        referrer_name,\n                        registrar_name,\n                        lifetime_referrer_name,\n                        votes,\n                        proposals\n                    } = full_account;\n\n                    this.accounts_by_name.set(account.name, account.id);\n                    account.assets = new Immutable.List(assets || []);\n                    account.referrer_name = referrer_name;\n                    account.lifetime_referrer_name = lifetime_referrer_name;\n                    account.registrar_name = registrar_name;\n                    account.balances = {};\n                    account.orders = new Immutable.Set();\n                    account.vesting_balances = new Immutable.Set();\n                    account.balances = new Immutable.Map();\n                    account.call_orders = new Immutable.Set();\n                    account.proposals = new Immutable.Set();\n                    account.vesting_balances = account.vesting_balances.withMutations(\n                        set => {\n                            vesting_balances.forEach(vb => {\n                                this._updateObject(vb);\n                                set.add(vb.id);\n                            });\n                        }\n                    );\n\n                    let sub_to_objects = [];\n\n                    votes.forEach(v => this._updateObject(v));\n\n                    account.balances = account.balances.withMutations(map => {\n                        full_account.balances.forEach(b => {\n                            this._updateObject(b);\n                            map.set(b.asset_type, b.id);\n                            if (autosubscribe) sub_to_objects.push(b.id);\n                        });\n                    });\n                    account.orders = account.orders.withMutations(set => {\n                        limit_orders.forEach(order => {\n                            this._updateObject(order);\n                            set.add(order.id);\n                            if (autosubscribe) sub_to_objects.push(order.id);\n                        });\n                    });\n                    account.call_orders = account.call_orders.withMutations(\n                        set => {\n                            call_orders.forEach(co => {\n                                this._updateObject(co);\n                                set.add(co.id);\n                                if (autosubscribe) sub_to_objects.push(co.id);\n                            });\n                        }\n                    );\n\n                    account.proposals = account.proposals.withMutations(set => {\n                        proposals.forEach(p => {\n                            this._updateObject(p);\n                            set.add(p.id);\n                            if (autosubscribe) sub_to_objects.push(p.id);\n                        });\n                    });\n\n                    /*\n                        * In order to receive notifications for these objects\n                        * we need to manually fetch them with get_objects. This\n                        * is only done if autosubscribe is true\n                        */\n                    if (sub_to_objects.length)\n                        Apis.instance()\n                            .db_api()\n                            .exec(\"get_objects\", [sub_to_objects]);\n\n                    this._updateObject(statistics);\n                    let updated_account = this._updateObject(account);\n                    this.fetchRecentHistory(updated_account);\n                    this.notifySubscribers();\n                })\n                .catch(error => {\n                    console.log(\"Error: \", error);\n                    if (ChainValidation.is_object_id(name_or_id))\n                        this.objects_by_id.delete(name_or_id);\n                    else this.accounts_by_name.delete(name_or_id);\n                });\n        }\n        return undefined;\n    }\n\n    getAccountMemberStatus(account) {\n        if (account === undefined) return undefined;\n        if (account === null) return \"unknown\";\n        if (account.get(\"lifetime_referrer\") == account.get(\"id\"))\n            return \"lifetime\";\n        let exp = new Date(account.get(\"membership_expiration_date\")).getTime();\n        let now = new Date().getTime();\n        if (exp < now) return \"basic\";\n        return \"annual\";\n    }\n\n    getAccountBalance(account, asset_type) {\n        let balances = account.get(\"balances\");\n        if (!balances) return 0;\n\n        let balance_obj_id = balances.get(asset_type);\n        if (balance_obj_id) {\n            let bal_obj = this.objects_by_id.get(balance_obj_id);\n            if (bal_obj) return bal_obj.get(\"balance\");\n        }\n        return 0;\n    }\n\n    /**\n     * There are two ways to extend the account history, add new more\n     * recent history, and extend historic hstory. This method will fetch\n     * the most recent account history and prepend it to the list of\n     * historic operations.\n     *\n     *  @param account immutable account object\n     *  @return a promise with the account history\n     */\n    fetchRecentHistory(account, limit = 100) {\n        // console.log( \"get account history: \", account )\n        /// TODO: make sure we do not submit a query if there is already one\n        /// in flight...\n        let account_id = account;\n        if (!ChainValidation.is_object_id(account_id) && account.toJS)\n            account_id = account.get(\"id\");\n\n        if (!ChainValidation.is_object_id(account_id)) return;\n\n        account = this.objects_by_id.get(account_id);\n        if (!account) return;\n\n        let pending_request = this.account_history_requests.get(account_id);\n        if (pending_request) {\n            pending_request.requests++;\n            return pending_request.promise;\n        } else pending_request = {requests: 0};\n\n        let most_recent = \"1.\" + op_history + \".0\";\n        let history = account.get(\"history\");\n\n        if (history && history.size) most_recent = history.first().get(\"id\");\n\n        /// starting at 0 means start at NOW, set this to something other than 0\n        /// to skip recent transactions and fetch the tail\n        let start = \"1.\" + op_history + \".0\";\n\n        pending_request.promise = new Promise((resolve, reject) => {\n            Apis.instance()\n                .history_api()\n                .exec(\"get_account_history\", [\n                    account_id,\n                    most_recent,\n                    limit,\n                    start\n                ])\n                .then(operations => {\n                    let current_account = this.objects_by_id.get(account_id);\n                    if (!current_account) return;\n                    let current_history = current_account.get(\"history\");\n                    if (!current_history) current_history = Immutable.List();\n                    let updated_history = Immutable.fromJS(operations);\n                    updated_history = updated_history.withMutations(list => {\n                        for (let i = 0; i < current_history.size; ++i)\n                            list.push(current_history.get(i));\n                    });\n                    let updated_account = current_account.set(\n                        \"history\",\n                        updated_history\n                    );\n                    this.objects_by_id.set(account_id, updated_account);\n\n                    //if( current_history != updated_history )\n                    //   this._notifyAccountSubscribers( account_id )\n\n                    let pending_request = this.account_history_requests.get(\n                        account_id\n                    );\n                    this.account_history_requests.delete(account_id);\n                    if (pending_request.requests > 0) {\n                        // it looks like some more history may have come in while we were\n                        // waiting on the result, lets fetch anything new before we resolve\n                        // this query.\n                        this.fetchRecentHistory(updated_account, limit).then(\n                            resolve,\n                            reject\n                        );\n                    } else resolve(updated_account);\n                }); // end then\n        });\n\n        this.account_history_requests.set(account_id, pending_request);\n        return pending_request.promise;\n    }\n\n    /**\n     *  Updates the object in place by only merging the set\n     *  properties of object.\n     *\n     *  This method will create an immutable object with the given ID if\n     *  it does not already exist.\n     *\n     *  This is a \"private\" method called when data is received from the\n     *  server and should not be used by others.\n     *\n     *  @pre object.id must be a valid object ID\n     *  @return an Immutable constructed from object and deep merged with the current state\n     */\n    _updateObject(object, notify_subscribers = false, emit = true) {\n        if (!(\"id\" in object)) {\n            console.log(\"object with no id:\", object);\n            /* Settle order updates look different and need special handling */\n            if (\n                \"balance\" in object &&\n                \"owner\" in object &&\n                \"settlement_date\" in object\n            ) {\n                // Settle order object\n                emitter.emit(\"settle-order-update\", object);\n            }\n            return;\n        }\n\n        const objectType = getObjectType(object.id);\n\n        /*\n        * A lot of objects get spammed by the API that we don't care about, filter these out here\n        */\n        // Transaction object\n\n        switch (objectType) {\n            case \"transaction\":\n            case \"operation_history\":\n            case \"block_summary\":\n                return; // console.log(\"not interested in:\", objectType, object);\n                break;\n\n            case \"account_transaction_history\":\n            case \"limit_order\":\n            case \"call_order\":\n            case \"account_balance\":\n            case \"account_stats\":\n                if (\n                    !this._isSubbedTo(\n                        \"accounts\",\n                        object.account ||\n                            object.seller ||\n                            object.borrower ||\n                            object.owner\n                    )\n                ) {\n                    return; // console.log(\"not interested in\", objectType, object.account || object.seller || object.borrower || object.owner);\n                }\n                break;\n\n            case \"witness\":\n                if (!this._isSubbedTo(\"witnesses\", object.id)) {\n                    return;\n                }\n                break;\n\n            case \"committee_member\":\n                if (!this._isSubbedTo(\"committee\", object.id)) {\n                    return;\n                }\n                break;\n\n            case \"unknown\":\n            case \"market\":\n                return;\n                break;\n\n            default:\n        }\n\n        // DYNAMIC GLOBAL OBJECT\n        if (object.id == \"2.1.0\") {\n            object.participation =\n                100 *\n                (BigInteger(object.recent_slots_filled).bitCount() / 128.0);\n            this.head_block_time_string = object.time;\n            this.chain_time_offset.push(\n                Date.now() - timeStringToDate(object.time).getTime()\n            );\n            if (this.chain_time_offset.length > 10)\n                this.chain_time_offset.shift(); // remove first\n        }\n\n        let current = this.objects_by_id.get(object.id);\n        if (!current) {\n            // console.log(\"add object:\", object.id);\n            current = Immutable.Map();\n        }\n        let prior = current;\n\n        /* New object */\n        if (current === undefined || current === true)\n            this.objects_by_id.set(\n                object.id,\n                (current = Immutable.fromJS(object))\n            );\n        /* Existing object */ else {\n            switch (objectType) {\n                /*\n                * These cases have additional data attached inside the chainstore,\n                * so we need to use mergeDeep to keep that data\n                */\n                case \"account\":\n                case \"asset\":\n                case \"asset_bitasset_data\":\n                    this.objects_by_id.set(\n                        object.id,\n                        (current = current.mergeDeep(Immutable.fromJS(object)))\n                    );\n                    break;\n\n                /* Don't use merge deep to improve performance */\n                default:\n                    this.objects_by_id.set(\n                        object.id,\n                        (current = Immutable.fromJS(object))\n                    );\n            }\n        }\n\n        /* Special handling for various objects */\n\n        // BALANCE OBJECT\n\n        switch (objectType) {\n            case \"account_balance\":\n                let owner = this.objects_by_id.get(object.owner);\n                if (owner === undefined || owner === null || owner === true) {\n                    return;\n                } else {\n                    let balances = owner.get(\"balances\");\n                    if (!balances)\n                        owner = owner.set(\"balances\", Immutable.Map());\n                    owner = owner.setIn(\n                        [\"balances\", object.asset_type],\n                        object.id\n                    );\n                }\n                this.objects_by_id.set(object.owner, owner);\n                break;\n\n            case \"account_statistics\":\n                try {\n                    let prior_most_recent_op = prior.get(\n                        \"most_recent_op\",\n                        \"2.9.0\"\n                    );\n\n                    if (prior_most_recent_op != object.most_recent_op) {\n                        this.fetchRecentHistory(object.owner);\n                    }\n                } catch (err) {\n                    console.log(\n                        \"prior error:\",\n                        \"object:\",\n                        obj,\n                        \"prior\",\n                        prior,\n                        \"err:\",\n                        err\n                    );\n                }\n                break;\n\n            case \"witness\":\n                if (this._isSubbedTo(\"witnesses\", object.id)) {\n                    this.witness_by_account_id.set(\n                        object.witness_account,\n                        object.id\n                    );\n                    this.objects_by_vote_id.set(object.vote_id, object.id);\n                } else {\n                    return;\n                }\n                break;\n\n            case \"committee_member\":\n                if (this._isSubbedTo(\"committee\", object.id)) {\n                    this.committee_by_account_id.set(\n                        object.committee_member_account,\n                        object.id\n                    );\n                    this.objects_by_vote_id.set(object.vote_id, object.id);\n                } else {\n                    return;\n                }\n                break;\n\n            case \"worker\":\n                this.objects_by_vote_id.set(object.vote_for, object.id);\n                this.objects_by_vote_id.set(object.vote_against, object.id);\n\n                if (!this.workers.has(object.id)) this.workers.add(object.id);\n                break;\n\n            case \"account\":\n                current = current.set(\n                    \"active\",\n                    Immutable.fromJS(object.active)\n                );\n                current = current.set(\"owner\", Immutable.fromJS(object.owner));\n                current = current.set(\n                    \"options\",\n                    Immutable.fromJS(object.options)\n                );\n                current = current.set(\n                    \"whitelisting_accounts\",\n                    Immutable.fromJS(object.whitelisting_accounts)\n                );\n                current = current.set(\n                    \"blacklisting_accounts\",\n                    Immutable.fromJS(object.blacklisting_accounts)\n                );\n                current = current.set(\n                    \"whitelisted_accounts\",\n                    Immutable.fromJS(object.whitelisted_accounts)\n                );\n                current = current.set(\n                    \"blacklisted_accounts\",\n                    Immutable.fromJS(object.blacklisted_accounts)\n                );\n                this.objects_by_id.set(object.id, current);\n                this.accounts_by_name.set(object.name, object.id);\n\n                break;\n\n            case \"asset\":\n                this.assets_by_symbol.set(object.symbol, object.id);\n\n                // make sure we fetch the bitasset data object\n                let bitasset = current.get(\"bitasset\");\n                if (!bitasset && \"bitasset_data_id\" in object) {\n                    let bad = this.getObject(object.bitasset_data_id, true);\n                    if (!bad) bad = Immutable.Map();\n\n                    if (!bad.get(\"asset_id\")) {\n                        bad = bad.set(\"asset_id\", object.id);\n                    }\n                    this.objects_by_id.set(object.bitasset_data_id, bad);\n\n                    current = current.set(\"bitasset\", bad);\n                    this.objects_by_id.set(object.id, current);\n                }\n                break;\n\n            case \"asset_bitasset_data\":\n                let asset_id = current.get(\"asset_id\");\n                if (asset_id) {\n                    let asset = this.getObject(asset_id);\n                    if (asset) {\n                        asset = asset.set(\"bitasset\", current);\n                        emitter.emit(\"bitasset-update\", asset);\n                        this.objects_by_id.set(asset_id, asset);\n                    }\n                }\n                break;\n\n            case \"call_order\":\n                if (emit) {\n                    emitter.emit(\"call-order-update\", object);\n                }\n\n                let call_account = this.objects_by_id.get(object.borrower);\n                if (call_account) {\n                    if (!call_account.has(\"call_orders\"))\n                        call_account = call_account.set(\n                            \"call_orders\",\n                            new Immutable.Set()\n                        );\n                    let call_orders = call_account.get(\"call_orders\");\n                    if (!call_orders.has(object.id)) {\n                        call_account = call_account.set(\n                            \"call_orders\",\n                            call_orders.add(object.id)\n                        );\n                        this.objects_by_id.set(\n                            call_account.get(\"id\"),\n                            call_account\n                        );\n                        Apis.instance()\n                            .db_api()\n                            .exec(\"get_objects\", [[object.id]]); // Force subscription to the object in the witness node by calling get_objects\n                    }\n                }\n                break;\n\n            case \"limit_order\":\n                let limit_account = this.objects_by_id.get(object.seller);\n                if (limit_account) {\n                    if (!limit_account.has(\"orders\"))\n                        limit_account = limit_account.set(\n                            \"orders\",\n                            new Immutable.Set()\n                        );\n                    let limit_orders = limit_account.get(\"orders\");\n                    if (!limit_orders.has(object.id)) {\n                        limit_account = limit_account.set(\n                            \"orders\",\n                            limit_orders.add(object.id)\n                        );\n                        this.objects_by_id.set(\n                            limit_account.get(\"id\"),\n                            limit_account\n                        );\n                        Apis.instance()\n                            .db_api()\n                            .exec(\"get_objects\", [[object.id]]); // Force subscription to the object in the witness node by calling get_objects\n                    }\n                }\n                break;\n\n            case \"proposal\":\n                /*\n                * Make sure notify_subscribers is set to true if a proposal is\n                * added to an account\n                */\n                notify_subscribers =\n                    notify_subscribers ||\n                    this.addProposalData(\n                        object.required_active_approvals,\n                        object.id\n                    );\n                notify_subscribers =\n                    notify_subscribers ||\n                    this.addProposalData(\n                        object.required_owner_approvals,\n                        object.id\n                    );\n                break;\n\n            default:\n        }\n\n        if (notify_subscribers) {\n            this.notifySubscribers();\n        }\n        return current;\n    }\n\n    getObjectsByVoteIds(vote_ids) {\n        let result = [];\n        let missing = [];\n        for (let i = 0; i < vote_ids.length; ++i) {\n            let obj = this.objects_by_vote_id.get(vote_ids[i]);\n            if (obj) result.push(this.getObject(obj));\n            else {\n                result.push(null);\n                missing.push(vote_ids[i]);\n            }\n        }\n\n        if (missing.length) {\n            // we may need to fetch some objects\n            Apis.instance()\n                .db_api()\n                .exec(\"lookup_vote_ids\", [missing])\n                .then(vote_obj_array => {\n                    // console.log(\"missing ===========> \", missing);\n                    // console.log(\n                    //     \"vote objects ===========> \",\n                    //     vote_obj_array\n                    // );\n                    for (let i = 0; i < vote_obj_array.length; ++i) {\n                        if (vote_obj_array[i]) {\n                            let isWitness =\n                                vote_obj_array[i].id.substring(\n                                    0,\n                                    witness_prefix.length\n                                ) == witness_prefix;\n                            this._subTo(\n                                isWitness ? \"witnesses\" : \"committee\",\n                                vote_obj_array[i].id\n                            );\n                            this._updateObject(vote_obj_array[i]);\n                        }\n                    }\n                })\n                .catch(error => {\n                    console.log(\"Error looking up vote ids: \", error);\n                });\n        }\n        return result;\n    }\n\n    getObjectByVoteID(vote_id) {\n        let obj_id = this.objects_by_vote_id.get(vote_id);\n        if (obj_id) return this.getObject(obj_id);\n        return undefined;\n    }\n\n    getHeadBlockDate() {\n        return timeStringToDate(this.head_block_time_string);\n    }\n\n    getEstimatedChainTimeOffset() {\n        if (this.chain_time_offset.length === 0) return 0;\n        // Immutable is fast, sorts numbers correctly, and leaves the original unmodified\n        // This will fix itself if the user changes their clock\n        var median_offset = Immutable.List(this.chain_time_offset)\n            .sort()\n            .get(Math.floor((this.chain_time_offset.length - 1) / 2));\n        // console.log(\"median_offset\", median_offset)\n        return median_offset;\n    }\n\n    addProposalData(approvals, objectId) {\n        let didImpact = false;\n        approvals.forEach(id => {\n            let impactedAccount = this.objects_by_id.get(id);\n            if (impactedAccount) {\n                didImpact = true;\n                let proposals = impactedAccount.get(\n                    \"proposals\",\n                    Immutable.Set()\n                );\n\n                if (!proposals.includes(objectId)) {\n                    proposals = proposals.add(objectId);\n                    impactedAccount = impactedAccount.set(\n                        \"proposals\",\n                        proposals\n                    );\n                    this.objects_by_id.set(\n                        impactedAccount.get(\"id\"),\n                        impactedAccount\n                    );\n                }\n            }\n        });\n        return didImpact;\n    }\n}\n\nlet chain_store = new ChainStore();\n\nfunction FetchChainObjects(method, object_ids, timeout, subMap) {\n    let get_object = method.bind(chain_store);\n\n    return new Promise((resolve, reject) => {\n        let timeout_handle = null;\n\n        function onUpdate(not_subscribed_yet = false) {\n            let res = object_ids.map(id => {\n                if (method.name === \"getAccount\")\n                    return get_object(id, subMap[id]);\n                if (method.name === \"getObject\")\n                    return get_object(id, false, subMap[id]);\n                return get_object(id);\n            });\n            if (res.findIndex(o => o === undefined) === -1) {\n                if (timeout_handle) clearTimeout(timeout_handle);\n                if (!not_subscribed_yet) chain_store.unsubscribe(onUpdate);\n                resolve(res);\n                return true;\n            }\n            return false;\n        }\n\n        let resolved = onUpdate(true);\n        if (!resolved) chain_store.subscribe(onUpdate);\n\n        if (timeout && !resolved)\n            timeout_handle = setTimeout(() => {\n                chain_store.unsubscribe(onUpdate);\n                reject(\n                    `${\n                        method.name\n                    } request timed out after ${timeout}ms with object ids: ${JSON.stringify(\n                        object_ids\n                    )}`\n                );\n            }, timeout);\n    });\n}\nchain_store.FetchChainObjects = FetchChainObjects;\n\nfunction FetchChain(methodName, objectIds, timeout = 3000, subMap = {}) {\n    let method = chain_store[methodName];\n    if (!method)\n        throw new Error(\"ChainStore does not have method \" + methodName);\n\n    let arrayIn = Array.isArray(objectIds);\n    if (!arrayIn) objectIds = [objectIds];\n\n    return chain_store\n        .FetchChainObjects(method, Immutable.List(objectIds), timeout, subMap)\n        .then(res => (arrayIn ? res : res.get(0)));\n}\n\nchain_store.FetchChain = FetchChain;\n\nfunction timeStringToDate(time_string) {\n    if (!time_string) return new Date(\"1970-01-01T00:00:00.000Z\");\n    if (!/Z$/.test(time_string)) {\n        //does not end in Z\n        // https://github.com/cryptonomex/graphene/issues/368\n        time_string = time_string + \"Z\";\n    }\n    return new Date(time_string);\n}\n\nexport default chain_store;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/ChainStore.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 66,
    "kind": "variable",
    "name": "object_type",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~object_type",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 67,
    "kind": "variable",
    "name": "emitter",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~emitter",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 68,
    "kind": "variable",
    "name": "op_history",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~op_history",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 69,
    "kind": "variable",
    "name": "witness_object_type",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~witness_object_type",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 70,
    "kind": "variable",
    "name": "committee_member_object_type",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~committee_member_object_type",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 71,
    "kind": "variable",
    "name": "account_object_type",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~account_object_type",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 72,
    "kind": "variable",
    "name": "witness_prefix",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~witness_prefix",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 73,
    "kind": "variable",
    "name": "committee_prefix",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~committee_prefix",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 74,
    "kind": "variable",
    "name": "account_prefix",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~account_prefix",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 75,
    "kind": "variable",
    "name": "DEBUG",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~DEBUG",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 76,
    "kind": "variable",
    "name": "objectTypesArray",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~objectTypesArray",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 77,
    "kind": "variable",
    "name": "implObjectTypesArray",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~implObjectTypesArray",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 78,
    "kind": "function",
    "name": "getObjectType",
    "memberof": "lib/chain/src/ChainStore.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~getObjectType",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 25,
    "undocument": true,
    "params": [
      {
        "name": "id",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "string"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 79,
    "kind": "function",
    "name": "FetchChainObjects",
    "memberof": "lib/chain/src/ChainStore.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~FetchChainObjects",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 1579,
    "undocument": true,
    "params": [
      {
        "name": "method",
        "types": [
          "*"
        ]
      },
      {
        "name": "object_ids",
        "types": [
          "*"
        ]
      },
      {
        "name": "timeout",
        "types": [
          "*"
        ]
      },
      {
        "name": "subMap",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 80,
    "kind": "function",
    "name": "FetchChain",
    "memberof": "lib/chain/src/ChainStore.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~FetchChain",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 1620,
    "undocument": true,
    "params": [
      {
        "name": "methodName",
        "types": [
          "*"
        ]
      },
      {
        "name": "objectIds",
        "types": [
          "*"
        ]
      },
      {
        "name": "timeout",
        "optional": true,
        "types": [
          "number"
        ],
        "defaultRaw": 3000,
        "defaultValue": "3000"
      },
      {
        "name": "subMap",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 81,
    "kind": "function",
    "name": "timeStringToDate",
    "memberof": "lib/chain/src/ChainStore.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~timeStringToDate",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 1635,
    "undocument": true,
    "params": [
      {
        "name": "time_string",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 82,
    "kind": "class",
    "name": "ChainStore",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~ChainStore",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": null,
    "description": "",
    "lineNumber": 48,
    "pseudoExport": true,
    "unknown": [
      {
        "tagName": "@brief",
        "tagValue": "maintains a local cache of blockchain state\n\n The ChainStore maintains a local cache of blockchain state and exposes\n an API that makes it easy to query objects and receive updates when\n objects are available."
      }
    ],
    "interface": false
  },
  {
    "__docId__": 83,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 49,
    "undocument": true
  },
  {
    "__docId__": 84,
    "kind": "member",
    "name": "subscribers",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#subscribers",
    "access": "public",
    "description": "tracks everyone who wants to receive updates when the cache changes",
    "lineNumber": 51,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 85,
    "kind": "member",
    "name": "subscribed",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#subscribed",
    "access": "public",
    "description": null,
    "lineNumber": 52,
    "undocument": true,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 86,
    "kind": "member",
    "name": "chain_time_offset",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#chain_time_offset",
    "access": "public",
    "description": null,
    "lineNumber": 57,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 87,
    "kind": "member",
    "name": "dispatchFrequency",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#dispatchFrequency",
    "access": "public",
    "description": null,
    "lineNumber": 58,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 88,
    "kind": "method",
    "name": "clearCache",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#clearCache",
    "access": "public",
    "description": "Clears all cached state.  This should be called any time the network connection is\nreset.",
    "lineNumber": 65,
    "params": [],
    "return": null
  },
  {
    "__docId__": 89,
    "kind": "member",
    "name": "subbed_accounts",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#subbed_accounts",
    "access": "public",
    "description": null,
    "lineNumber": 70,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 90,
    "kind": "member",
    "name": "subbed_witnesses",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#subbed_witnesses",
    "access": "public",
    "description": null,
    "lineNumber": 71,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 91,
    "kind": "member",
    "name": "subbed_committee",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#subbed_committee",
    "access": "public",
    "description": null,
    "lineNumber": 72,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 92,
    "kind": "member",
    "name": "objects_by_id",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#objects_by_id",
    "access": "public",
    "description": null,
    "lineNumber": 74,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 93,
    "kind": "member",
    "name": "accounts_by_name",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#accounts_by_name",
    "access": "public",
    "description": null,
    "lineNumber": 75,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 94,
    "kind": "member",
    "name": "assets_by_symbol",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#assets_by_symbol",
    "access": "public",
    "description": null,
    "lineNumber": 76,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 95,
    "kind": "member",
    "name": "account_ids_by_key",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#account_ids_by_key",
    "access": "public",
    "description": null,
    "lineNumber": 77,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 96,
    "kind": "member",
    "name": "account_ids_by_account",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#account_ids_by_account",
    "access": "public",
    "description": null,
    "lineNumber": 78,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 97,
    "kind": "member",
    "name": "balance_objects_by_address",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#balance_objects_by_address",
    "access": "public",
    "description": null,
    "lineNumber": 80,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 98,
    "kind": "member",
    "name": "get_account_refs_of_keys_calls",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#get_account_refs_of_keys_calls",
    "access": "public",
    "description": null,
    "lineNumber": 81,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 99,
    "kind": "member",
    "name": "get_account_refs_of_accounts_calls",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#get_account_refs_of_accounts_calls",
    "access": "public",
    "description": null,
    "lineNumber": 82,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 100,
    "kind": "member",
    "name": "account_history_requests",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#account_history_requests",
    "access": "public",
    "description": null,
    "lineNumber": 83,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 101,
    "kind": "member",
    "name": "witness_by_account_id",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#witness_by_account_id",
    "access": "public",
    "description": null,
    "lineNumber": 84,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 102,
    "kind": "member",
    "name": "workers",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#workers",
    "access": "public",
    "description": null,
    "lineNumber": 85,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 103,
    "kind": "member",
    "name": "committee_by_account_id",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#committee_by_account_id",
    "access": "public",
    "description": null,
    "lineNumber": 86,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 104,
    "kind": "member",
    "name": "objects_by_vote_id",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#objects_by_vote_id",
    "access": "public",
    "description": null,
    "lineNumber": 87,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 105,
    "kind": "member",
    "name": "fetching_get_full_accounts",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#fetching_get_full_accounts",
    "access": "public",
    "description": null,
    "lineNumber": 88,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 106,
    "kind": "member",
    "name": "get_full_accounts_subscriptions",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#get_full_accounts_subscriptions",
    "access": "public",
    "description": null,
    "lineNumber": 89,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 107,
    "kind": "member",
    "name": "dispatched",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#dispatched",
    "access": "public",
    "description": null,
    "lineNumber": 91,
    "undocument": true,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 108,
    "kind": "method",
    "name": "resetCache",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#resetCache",
    "access": "public",
    "description": null,
    "lineNumber": 94,
    "undocument": true,
    "params": [
      {
        "name": "subscribe_to_new",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 110,
    "kind": "member",
    "name": "subError",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#subError",
    "access": "public",
    "description": null,
    "lineNumber": 96,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 111,
    "kind": "member",
    "name": "head_block_time_string",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#head_block_time_string",
    "access": "public",
    "description": null,
    "lineNumber": 98,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 112,
    "kind": "method",
    "name": "setDispatchFrequency",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#setDispatchFrequency",
    "access": "public",
    "description": null,
    "lineNumber": 104,
    "undocument": true,
    "params": [
      {
        "name": "freq",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 114,
    "kind": "method",
    "name": "init",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#init",
    "access": "public",
    "description": null,
    "lineNumber": 108,
    "undocument": true,
    "params": [
      {
        "name": "subscribe_to_new",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 122,
    "kind": "method",
    "name": "_subTo",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#_subTo",
    "access": "private",
    "description": null,
    "lineNumber": 206,
    "undocument": true,
    "params": [
      {
        "name": "type",
        "types": [
          "*"
        ]
      },
      {
        "name": "id",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 123,
    "kind": "method",
    "name": "unSubFrom",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#unSubFrom",
    "access": "public",
    "description": null,
    "lineNumber": 211,
    "undocument": true,
    "params": [
      {
        "name": "type",
        "types": [
          "*"
        ]
      },
      {
        "name": "id",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 124,
    "kind": "method",
    "name": "_isSubbedTo",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#_isSubbedTo",
    "access": "private",
    "description": null,
    "lineNumber": 217,
    "undocument": true,
    "params": [
      {
        "name": "type",
        "types": [
          "*"
        ]
      },
      {
        "name": "id",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 125,
    "kind": "method",
    "name": "onUpdate",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#onUpdate",
    "access": "public",
    "description": null,
    "lineNumber": 222,
    "undocument": true,
    "params": [
      {
        "name": "updated_objects",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 126,
    "kind": "method",
    "name": "notifySubscribers",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#notifySubscribers",
    "access": "public",
    "description": null,
    "lineNumber": 337,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 128,
    "kind": "member",
    "name": "timeout",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#timeout",
    "access": "public",
    "description": null,
    "lineNumber": 341,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 130,
    "kind": "method",
    "name": "subscribe",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#subscribe",
    "access": "public",
    "description": " Add a callback that will be called anytime any object in the cache is updated",
    "lineNumber": 353,
    "params": [
      {
        "name": "callback",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 131,
    "kind": "method",
    "name": "unsubscribe",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#unsubscribe",
    "access": "public",
    "description": " Remove a callback that was previously added via subscribe",
    "lineNumber": 362,
    "params": [
      {
        "name": "callback",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 132,
    "kind": "method",
    "name": "clearObjectCache",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#clearObjectCache",
    "access": "public",
    "description": "Clear an object from the cache to force it to be fetched again. This may\nbe useful if a query failed the first time and the wallet has reason to believe\nit may succeede the second time.",
    "lineNumber": 375,
    "params": [
      {
        "name": "id",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 133,
    "kind": "method",
    "name": "getObject",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getObject",
    "access": "public",
    "description": "There are three states an object id could be in:\n\n1. undefined       - returned if a query is pending\n3. defined         - return an object\n4. null            - query return null",
    "lineNumber": 387,
    "params": [
      {
        "name": "id",
        "types": [
          "*"
        ]
      },
      {
        "name": "force",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      },
      {
        "name": "autosubscribe",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      },
      {
        "name": "no_full_account",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 134,
    "kind": "method",
    "name": "getAsset",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getAsset",
    "access": "public",
    "description": "",
    "lineNumber": 415,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "object if the id_or_symbol exists"
    },
    "params": [
      {
        "name": "id_or_symbol",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 135,
    "kind": "method",
    "name": "getAccountRefsOfKey",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getAccountRefsOfKey",
    "access": "public",
    "description": "",
    "lineNumber": 482,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "the",
        "description": "public key to find accounts that reference it"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "undefined if the result is unknown\n\n If this method returns undefined, then it will send a request to\n the server for the current set of accounts after which the\n server will notify us of any accounts that reference these keys"
    }
  },
  {
    "__docId__": 138,
    "kind": "method",
    "name": "getAccountRefsOfAccount",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getAccountRefsOfAccount",
    "access": "public",
    "description": "",
    "lineNumber": 528,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "the",
        "description": "account id to find accounts that reference it"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "undefined if the result is unknown\n\n If this method returns undefined, then it will send a request to\n the server for the current set of accounts after which the\n server will notify us of any accounts that reference these keys"
    }
  },
  {
    "__docId__": 141,
    "kind": "method",
    "name": "getBalanceObjects",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getBalanceObjects",
    "access": "public",
    "description": "",
    "lineNumber": 570,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "a empty Set if no items are found\n\nIf this method returns undefined, then it will send a request to the server for\nthe current state after which it will be subscribed to changes to this set."
    },
    "params": [
      {
        "name": "address",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 142,
    "kind": "method",
    "name": "fetchObject",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#fetchObject",
    "access": "public",
    "description": " If there is not already a pending request to fetch this object, a new\n request will be made.",
    "lineNumber": 609,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "the object if it does exist and is in our cache"
    },
    "params": [
      {
        "name": "id",
        "types": [
          "*"
        ]
      },
      {
        "name": "force",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      },
      {
        "name": "autosubscribe",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      },
      {
        "name": "no_full_account",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ]
  },
  {
    "__docId__": 143,
    "kind": "method",
    "name": "getAccount",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getAccount",
    "access": "public",
    "description": "",
    "lineNumber": 677,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "the account object if it does exist"
    },
    "params": [
      {
        "name": "name_or_id",
        "types": [
          "*"
        ]
      },
      {
        "name": "autosubscribe",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ]
  },
  {
    "__docId__": 144,
    "kind": "method",
    "name": "getAccountName",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getAccountName",
    "access": "public",
    "description": "",
    "lineNumber": 726,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "the account name"
    },
    "params": [
      {
        "name": "id",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 145,
    "kind": "method",
    "name": "getWitnessById",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getWitnessById",
    "access": "public",
    "description": "This method will attempt to lookup witness by account_id.\nIf witness doesn't exist it will return null, if witness is found it will return witness object,\nif it's not fetched yet it will return undefined.",
    "lineNumber": 742,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "account_id",
        "description": "account id"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 146,
    "kind": "method",
    "name": "getCommitteeMemberById",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getCommitteeMemberById",
    "access": "public",
    "description": "This method will attempt to lookup committee member by account_id.\nIf committee member doesn't exist it will return null, if committee member is found it will return committee member object,\nif it's not fetched yet it will return undefined.",
    "lineNumber": 760,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "account_id",
        "description": "account id"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 147,
    "kind": "method",
    "name": "fetchAllWorkers",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#fetchAllWorkers",
    "access": "public",
    "description": "",
    "lineNumber": 775,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "a promise with the workers array"
    },
    "params": []
  },
  {
    "__docId__": 148,
    "kind": "method",
    "name": "fetchWitnessByAccount",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#fetchWitnessByAccount",
    "access": "public",
    "description": "",
    "lineNumber": 798,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "a promise with the witness object"
    },
    "params": [
      {
        "name": "account_id",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 151,
    "kind": "method",
    "name": "fetchCommitteeMemberByAccount",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#fetchCommitteeMemberByAccount",
    "access": "public",
    "description": "",
    "lineNumber": 830,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "a promise with the witness object"
    },
    "params": [
      {
        "name": "account_id",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 154,
    "kind": "method",
    "name": "fetchFullAccount",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#fetchFullAccount",
    "access": "public",
    "description": " Fetches an account and all of its associated data in a single query",
    "lineNumber": 868,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "an",
        "description": "account name or account id"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "null if the object has been queried and was not found"
    }
  },
  {
    "__docId__": 155,
    "kind": "method",
    "name": "getAccountMemberStatus",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getAccountMemberStatus",
    "access": "public",
    "description": null,
    "lineNumber": 1026,
    "undocument": true,
    "params": [
      {
        "name": "account",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 156,
    "kind": "method",
    "name": "getAccountBalance",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getAccountBalance",
    "access": "public",
    "description": null,
    "lineNumber": 1037,
    "undocument": true,
    "params": [
      {
        "name": "account",
        "types": [
          "*"
        ]
      },
      {
        "name": "asset_type",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 157,
    "kind": "method",
    "name": "fetchRecentHistory",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#fetchRecentHistory",
    "access": "public",
    "description": "There are two ways to extend the account history, add new more\nrecent history, and extend historic hstory. This method will fetch\nthe most recent account history and prepend it to the list of\nhistoric operations.",
    "lineNumber": 1058,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "account",
        "description": "immutable account object"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "a promise with the account history"
    }
  },
  {
    "__docId__": 158,
    "kind": "method",
    "name": "_updateObject",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#_updateObject",
    "access": "private",
    "description": " Updates the object in place by only merging the set\n properties of object.\n\n This method will create an immutable object with the given ID if\n it does not already exist.\n\n This is a \"private\" method called when data is received from the\n server and should not be used by others.",
    "lineNumber": 1147,
    "unknown": [
      {
        "tagName": "@pre",
        "tagValue": "object.id must be a valid object ID"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "an Immutable constructed from object and deep merged with the current state"
    },
    "params": [
      {
        "name": "object",
        "types": [
          "*"
        ]
      },
      {
        "name": "notify_subscribers",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      },
      {
        "name": "emit",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ]
  },
  {
    "__docId__": 160,
    "kind": "method",
    "name": "getObjectsByVoteIds",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getObjectsByVoteIds",
    "access": "public",
    "description": null,
    "lineNumber": 1483,
    "undocument": true,
    "params": [
      {
        "name": "vote_ids",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 161,
    "kind": "method",
    "name": "getObjectByVoteID",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getObjectByVoteID",
    "access": "public",
    "description": null,
    "lineNumber": 1528,
    "undocument": true,
    "params": [
      {
        "name": "vote_id",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 162,
    "kind": "method",
    "name": "getHeadBlockDate",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getHeadBlockDate",
    "access": "public",
    "description": null,
    "lineNumber": 1534,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 163,
    "kind": "method",
    "name": "getEstimatedChainTimeOffset",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#getEstimatedChainTimeOffset",
    "access": "public",
    "description": null,
    "lineNumber": 1538,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 164,
    "kind": "method",
    "name": "addProposalData",
    "memberof": "lib/chain/src/ChainStore.js~ChainStore",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ChainStore.js~ChainStore#addProposalData",
    "access": "public",
    "description": null,
    "lineNumber": 1549,
    "undocument": true,
    "params": [
      {
        "name": "approvals",
        "types": [
          "*"
        ]
      },
      {
        "name": "objectId",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 165,
    "kind": "variable",
    "name": "chain_store",
    "memberof": "lib/chain/src/ChainStore.js",
    "static": true,
    "longname": "lib/chain/src/ChainStore.js~chain_store",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/ChainStore.js",
    "importStyle": "chain_store",
    "description": null,
    "lineNumber": 1645,
    "undocument": true,
    "type": {
      "types": [
        "lib/chain/src/ChainStore.js~ChainStore"
      ]
    }
  },
  {
    "__docId__": 166,
    "kind": "file",
    "name": "lib/chain/src/ChainTypes.js",
    "content": "let ChainTypes = {};\n\nChainTypes.reserved_spaces = {\n    relative_protocol_ids: 0,\n    protocol_ids: 1,\n    implementation_ids: 2\n};\n\nChainTypes.object_type = {\n    null: 0,\n    base: 1,\n    account: 2,\n    asset: 3,\n    force_settlement: 4,\n    committee_member: 5,\n    witness: 6,\n    limit_order: 7,\n    call_order: 8,\n    custom: 9,\n    proposal: 10,\n    operation_history: 11,\n    withdraw_permission: 12,\n    vesting_balance: 13,\n    worker: 14,\n    balance: 15\n};\n\nChainTypes.impl_object_type = {\n    global_property: 0,\n    dynamic_global_property: 1,\n    index_meta: 2,\n    asset_dynamic_data: 3,\n    asset_bitasset_data: 4,\n    account_balance: 5,\n    account_statistics: 6,\n    transaction: 7,\n    block_summary: 8,\n    account_transaction_history: 9,\n    blinded_balance: 10,\n    chain_property: 11,\n    witness_schedule: 12,\n    budget_record: 13\n};\n\nChainTypes.vote_type = {\n    committee: 0,\n    witness: 1,\n    worker: 2\n};\n\nChainTypes.operations = {\n    transfer: 0,\n    limit_order_create: 1,\n    limit_order_cancel: 2,\n    call_order_update: 3,\n    fill_order: 4,\n    account_create: 5,\n    account_update: 6,\n    account_whitelist: 7,\n    account_upgrade: 8,\n    account_transfer: 9,\n    asset_create: 10,\n    asset_update: 11,\n    asset_update_bitasset: 12,\n    asset_update_feed_producers: 13,\n    asset_issue: 14,\n    asset_reserve: 15,\n    asset_fund_fee_pool: 16,\n    asset_settle: 17,\n    asset_global_settle: 18,\n    asset_publish_feed: 19,\n    witness_create: 20,\n    witness_update: 21,\n    proposal_create: 22,\n    proposal_update: 23,\n    proposal_delete: 24,\n    withdraw_permission_create: 25,\n    withdraw_permission_update: 26,\n    withdraw_permission_claim: 27,\n    withdraw_permission_delete: 28,\n    committee_member_create: 29,\n    committee_member_update: 30,\n    committee_member_update_global_parameters: 31,\n    vesting_balance_create: 32,\n    vesting_balance_withdraw: 33,\n    worker_create: 34,\n    custom: 35,\n    assert: 36,\n    balance_claim: 37,\n    override_transfer: 38,\n    transfer_to_blind: 39,\n    blind_transfer: 40,\n    transfer_from_blind: 41,\n    asset_settle_cancel: 42,\n    asset_claim_fees: 43,\n    fba_distribute: 44,\n    bid_collateral: 45,\n    execute_bid: 46,\n    asset_claim_pool: 47,\n    asset_update_issuer: 48\n};\n\nexport default ChainTypes;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/ChainTypes.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 167,
    "kind": "variable",
    "name": "ChainTypes",
    "memberof": "lib/chain/src/ChainTypes.js",
    "static": true,
    "longname": "lib/chain/src/ChainTypes.js~ChainTypes",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/ChainTypes.js",
    "importStyle": "ChainTypes",
    "description": null,
    "lineNumber": 1,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 168,
    "kind": "file",
    "name": "lib/chain/src/ChainValidation.js",
    "content": "/**\n    Account names may contain one or more names separated by a dot.\n    Each name needs to start with a letter and may contain\n    numbers, or well placed dashes.\n    @see is_valid_name graphene/libraries/chain/protocol/account.cpp\n*/\nlet id_regex = /\\b\\d+\\.\\d+\\.(\\d+)\\b/;\n\nvar chainValidation = {\n    is_account_name: function(value, allow_too_short = false) {\n        var i, label, len, length, ref;\n\n        if (this.is_empty(value)) {\n            return false;\n        }\n\n        length = value.length;\n\n        if ((!allow_too_short && length < 3) || length > 63) {\n            return false;\n        }\n\n        ref = value.split(\".\");\n\n        for (i = 0, len = ref.length; i < len; i++) {\n            label = ref[i];\n\n            if (\n                !(\n                    /^[a-z][a-z0-9-]*$/.test(label) &&\n                    !/--/.test(label) &&\n                    /[a-z0-9]$/.test(label)\n                )\n            ) {\n                return false;\n            }\n        }\n        return true;\n    },\n\n    is_object_id: function(obj_id) {\n        if (\"string\" != typeof obj_id) return false;\n\n        let match = id_regex.exec(obj_id);\n        return match !== null && obj_id.split(\".\").length === 3;\n    },\n\n    is_empty: function(value) {\n        return value == null || value.length === 0;\n    },\n\n    is_account_name_error: function(value, allow_too_short) {\n        var i, label, len, length, ref, suffix;\n        if (allow_too_short == null) {\n            allow_too_short = false;\n        }\n        suffix = \"Account name should \";\n        if (this.is_empty(value)) {\n            return suffix + \"not be empty.\";\n        }\n        length = value.length;\n        if (!allow_too_short && length < 3) {\n            return suffix + \"be longer.\";\n        }\n        if (length > 63) {\n            return suffix + \"be shorter.\";\n        }\n        if (/\\./.test(value)) {\n            suffix = \"Each account segment should \";\n        }\n        ref = value.split(\".\");\n        for (i = 0, len = ref.length; i < len; i++) {\n            label = ref[i];\n            if (!/^[~a-z]/.test(label)) {\n                return suffix + \"start with a letter.\";\n            }\n            if (!/^[~a-z0-9-]*$/.test(label)) {\n                return suffix + \"have only letters, digits, or dashes.\";\n            }\n            if (/--/.test(label)) {\n                return suffix + \"have only one dash in a row.\";\n            }\n            if (!/[a-z0-9]$/.test(label)) {\n                return suffix + \"end with a letter or digit.\";\n            }\n            if (!(label.length >= 3)) {\n                return suffix + \"be longer\";\n            }\n        }\n        return null;\n    },\n\n    is_cheap_name: function(account_name) {\n        return /[0-9-]/.test(account_name) || !/[aeiouy]/.test(account_name);\n    },\n\n    is_empty_user_input: function(value) {\n        if (this.is_empty(value)) {\n            return true;\n        }\n        if ((value + \"\").trim() === \"\") {\n            return true;\n        }\n        return false;\n    },\n\n    required: function(value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            throw new Error(\"value required for \" + field_name + \": \" + value);\n        }\n        return value;\n    },\n\n    /** @see is_valid_symbol graphene/libraries/chain/protocol/asset_ops.cpp */\n    is_valid_symbol_error: function(value) {\n        var suffix = \"Asset name should \";\n        if (this.is_empty(value)) {\n            return suffix + \"not be empty.\";\n        }\n        if (value.split(\".\").length > 2) {\n            return suffix + \"have only one dot.\";\n        }\n        if (value.length < 3) {\n            return suffix + \"be longer.\";\n        }\n        if (value.length > 16) {\n            return suffix + \"be shorter.\";\n        }\n        if (!/^[A-Z]/.test(value)) {\n            return suffix + \"start with a letter\";\n        }\n        if (!/[A-Z]$/.test(value)) {\n            return suffix + \"end with a letter\";\n        }\n        if (/^[A-Z0-9\\.]$/.test(value)) {\n            return suffix + \"contain only letters numbers and perhaps a dot.\";\n        }\n        return null;\n    }\n};\n\nexport default chainValidation;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/ChainValidation.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 169,
    "kind": "variable",
    "name": "id_regex",
    "memberof": "lib/chain/src/ChainValidation.js",
    "static": true,
    "longname": "lib/chain/src/ChainValidation.js~id_regex",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ChainValidation.js",
    "importStyle": null,
    "description": "Account names may contain one or more names separated by a dot.\nEach name needs to start with a letter and may contain\nnumbers, or well placed dashes.",
    "see": [
      "is_valid_name graphene/libraries/chain/protocol/account.cpp"
    ],
    "lineNumber": 7,
    "type": {
      "types": [
        "undefined"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 170,
    "kind": "variable",
    "name": "chainValidation",
    "memberof": "lib/chain/src/ChainValidation.js",
    "static": true,
    "longname": "lib/chain/src/ChainValidation.js~chainValidation",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/ChainValidation.js",
    "importStyle": "chainValidation",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "{\"is_account_name\": *, \"is_object_id\": *, \"is_empty\": *, \"is_account_name_error\": *, \"is_cheap_name\": *, \"is_empty_user_input\": *, \"required\": *, \"is_valid_symbol_error\": *}"
      ]
    }
  },
  {
    "__docId__": 171,
    "kind": "file",
    "name": "lib/chain/src/EmitterInstance.js",
    "content": "import ee from \"event-emitter\";\nvar _emitter;\nexport default function emitter() {\n    if (!_emitter) {\n        _emitter = ee({});\n    }\n    return _emitter;\n}\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/EmitterInstance.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 172,
    "kind": "function",
    "name": "emitter",
    "memberof": "lib/chain/src/EmitterInstance.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/EmitterInstance.js~emitter",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/EmitterInstance.js",
    "importStyle": "emitter",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 173,
    "kind": "file",
    "name": "lib/chain/src/NumberUtils.js",
    "content": "import assert from \"assert\";\n\n/**\n    Convert 12.34 with a precision of 3 into 12340\n\n    @arg {number|string} number - Use strings for large numbers.  This may contain one decimal but no sign\n    @arg {number} precision - number of implied decimal places (usually causes right zero padding)\n    @return {string} -\n*/\n\nconst NumberUtils = {\n    toImpliedDecimal: function toImpliedDecimal(number, precision) {\n        if (typeof number === \"number\") {\n            assert(number <= 9007199254740991, \"overflow\");\n            number = \"\" + number;\n        } else if (number.toString) number = number.toString();\n\n        assert(\n            typeof number === \"string\",\n            \"number should be an actual number or string: \" + typeof number\n        );\n        number = number.trim();\n        assert(\n            /^[0-9]*\\.?[0-9]*$/.test(number),\n            \"Invalid decimal number \" + number\n        );\n\n        let [whole = \"\", decimal = \"\"] = number.split(\".\");\n\n        let padding = precision - decimal.length;\n        assert(\n            padding >= 0,\n            \"Too many decimal digits in \" +\n                number +\n                \" to create an implied decimal of \" +\n                precision\n        );\n\n        for (let i = 0; i < padding; i++) decimal += \"0\";\n\n        while (whole.charAt(0) === \"0\") whole = whole.substring(1);\n\n        return whole + decimal;\n    }\n};\n\nexport default NumberUtils;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/NumberUtils.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 174,
    "kind": "variable",
    "name": "NumberUtils",
    "memberof": "lib/chain/src/NumberUtils.js",
    "static": true,
    "longname": "lib/chain/src/NumberUtils.js~NumberUtils",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/NumberUtils.js",
    "importStyle": "NumberUtils",
    "description": "Convert 12.34 with a precision of 3 into 12340",
    "lineNumber": 11,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{number|string} number - Use strings for large numbers.  This may contain one decimal but no sign"
      },
      {
        "tagName": "@arg",
        "tagValue": "{number} precision - number of implied decimal places (usually causes right zero padding)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "{\"toImpliedDecimal\": *}"
      ]
    }
  },
  {
    "__docId__": 175,
    "kind": "file",
    "name": "lib/chain/src/ObjectId.js",
    "content": "import {Long} from \"bytebuffer\";\n\nimport v from \"../../serializer/src/SerializerValidation\";\n\nvar DB_MAX_INSTANCE_ID = Long.fromNumber(Math.pow(2, 48) - 1);\n\nclass ObjectId {\n    constructor(space, type, instance) {\n        this.space = space;\n        this.type = type;\n        this.instance = instance;\n        var instance_string = this.instance.toString();\n        var ObjectId = `${this.space}.${this.type}.${instance_string}`;\n        if (!v.is_digits(instance_string)) {\n            throw new `Invalid object id ${ObjectId}`();\n        }\n    }\n\n    static fromString(value) {\n        if (\n            value.space !== undefined &&\n            value.type !== undefined &&\n            value.instance !== undefined\n        ) {\n            return value;\n        }\n\n        var params = v.require_match(\n            /^([0-9]+)\\.([0-9]+)\\.([0-9]+)$/,\n            v.required(value, \"ObjectId\"),\n            \"ObjectId\"\n        );\n        return new ObjectId(\n            parseInt(params[1]),\n            parseInt(params[2]),\n            Long.fromString(params[3])\n        );\n    }\n\n    static fromLong(long) {\n        var space = long.shiftRight(56).toInt();\n        var type = long.shiftRight(48).toInt() & 0x00ff;\n        var instance = long.and(DB_MAX_INSTANCE_ID);\n        return new ObjectId(space, type, instance);\n    }\n\n    static fromByteBuffer(b) {\n        return ObjectId.fromLong(b.readUint64());\n    }\n\n    toLong() {\n        return Long.fromNumber(this.space)\n            .shiftLeft(56)\n            .or(\n                Long.fromNumber(this.type)\n                    .shiftLeft(48)\n                    .or(this.instance)\n            );\n    }\n\n    appendByteBuffer(b) {\n        return b.writeUint64(this.toLong());\n    }\n\n    toString() {\n        return `${this.space}.${this.type}.${this.instance.toString()}`;\n    }\n}\n\nexport default ObjectId;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/ObjectId.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 176,
    "kind": "variable",
    "name": "DB_MAX_INSTANCE_ID",
    "memberof": "lib/chain/src/ObjectId.js",
    "static": true,
    "longname": "lib/chain/src/ObjectId.js~DB_MAX_INSTANCE_ID",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/ObjectId.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 177,
    "kind": "class",
    "name": "ObjectId",
    "memberof": "lib/chain/src/ObjectId.js",
    "static": true,
    "longname": "lib/chain/src/ObjectId.js~ObjectId",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/ObjectId.js",
    "importStyle": "ObjectId",
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 178,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ObjectId.js~ObjectId#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 8,
    "undocument": true
  },
  {
    "__docId__": 179,
    "kind": "member",
    "name": "space",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "static": false,
    "longname": "lib/chain/src/ObjectId.js~ObjectId#space",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 180,
    "kind": "member",
    "name": "type",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "static": false,
    "longname": "lib/chain/src/ObjectId.js~ObjectId#type",
    "access": "public",
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 181,
    "kind": "member",
    "name": "instance",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "static": false,
    "longname": "lib/chain/src/ObjectId.js~ObjectId#instance",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 182,
    "kind": "method",
    "name": "fromString",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/ObjectId.js~ObjectId.fromString",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "params": [
      {
        "name": "value",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 183,
    "kind": "method",
    "name": "fromLong",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/ObjectId.js~ObjectId.fromLong",
    "access": "public",
    "description": null,
    "lineNumber": 40,
    "undocument": true,
    "params": [
      {
        "name": "long",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 184,
    "kind": "method",
    "name": "fromByteBuffer",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/ObjectId.js~ObjectId.fromByteBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 47,
    "undocument": true,
    "params": [
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 185,
    "kind": "method",
    "name": "toLong",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ObjectId.js~ObjectId#toLong",
    "access": "public",
    "description": null,
    "lineNumber": 51,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 186,
    "kind": "method",
    "name": "appendByteBuffer",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ObjectId.js~ObjectId#appendByteBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 61,
    "undocument": true,
    "params": [
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 187,
    "kind": "method",
    "name": "toString",
    "memberof": "lib/chain/src/ObjectId.js~ObjectId",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/ObjectId.js~ObjectId#toString",
    "access": "public",
    "description": null,
    "lineNumber": 65,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 188,
    "kind": "file",
    "name": "lib/chain/src/TransactionBuilder.js",
    "content": "import assert from \"assert\";\nimport {Signature, PublicKey, hash} from \"../../ecc\";\nimport {ops} from \"../../serializer\";\nimport {Apis, ChainConfig} from \"bitsharesjs-ws\";\nimport ChainTypes from \"./ChainTypes\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\nvar head_block_time_string, committee_min_review;\n\nclass TransactionBuilder {\n    constructor() {\n        this.ref_block_num = 0;\n        this.ref_block_prefix = 0;\n        this.expiration = 0;\n        this.operations = [];\n        this.signatures = [];\n        this.signer_private_keys = [];\n\n        // semi-private method bindings\n        this._broadcast = _broadcast.bind(this);\n    }\n\n    /**\n        @arg {string} name - like \"transfer\"\n        @arg {object} operation - JSON matchching the operation's format\n    */\n    add_type_operation(name, operation) {\n        this.add_operation(this.get_type_operation(name, operation));\n        return;\n    }\n\n    /**\n        This does it all: set fees, finalize, sign, and broadcast (if wanted).\n\n        @arg {ConfidentialWallet} cwallet - must be unlocked, used to gather signing keys\n\n        @arg {array<string>} [signer_pubkeys = null] - Optional [\"GPHAbc9Def0...\", ...].  These are additional signing keys.  Some balance claims require propritary address formats, the witness node can't tell us which ones are needed so they must be passed in.  If the witness node can figure out a signing key (mostly all other transactions), it should not be passed in here.\n\n        @arg {boolean} [broadcast = false]\n    */\n    process_transaction(cwallet, signer_pubkeys = null, broadcast = false) {\n        let wallet_object = cwallet.wallet.wallet_object;\n        if (Apis.instance().chain_id !== wallet_object.get(\"chain_id\"))\n            return Promise.reject(\n                \"Mismatched chain_id; expecting \" +\n                    wallet_object.get(\"chain_id\") +\n                    \", but got \" +\n                    Apis.instance().chain_id\n            );\n\n        return this.set_required_fees().then(() => {\n            var signer_pubkeys_added = {};\n            if (signer_pubkeys) {\n                // Balance claims are by address, only the private\n                // key holder can know about these additional\n                // potential keys.\n                var pubkeys = cwallet.getPubkeys_having_PrivateKey(\n                    signer_pubkeys\n                );\n                if (!pubkeys.length) throw new Error(\"Missing signing key\");\n\n                for (let pubkey_string of pubkeys) {\n                    var private_key = cwallet.getPrivateKey(pubkey_string);\n                    this.add_signer(private_key, pubkey_string);\n                    signer_pubkeys_added[pubkey_string] = true;\n                }\n            }\n\n            return this.get_potential_signatures()\n                .then(({pubkeys, addys}) => {\n                    var my_pubkeys = cwallet.getPubkeys_having_PrivateKey(\n                        pubkeys,\n                        addys\n                    );\n\n                    //{//Testing only, don't send All public keys!\n                    //    var pubkeys_all = PrivateKeyStore.getPubkeys() // All public keys\n                    //    this.get_required_signatures(pubkeys_all).then( required_pubkey_strings =>\n                    //        console.log('get_required_signatures all\\t',required_pubkey_strings.sort(), pubkeys_all))\n                    //    this.get_required_signatures(my_pubkeys).then( required_pubkey_strings =>\n                    //        console.log('get_required_signatures normal\\t',required_pubkey_strings.sort(), pubkeys))\n                    //}\n\n                    return this.get_required_signatures(my_pubkeys).then(\n                        required_pubkeys => {\n                            for (let pubkey_string of required_pubkeys) {\n                                if (signer_pubkeys_added[pubkey_string])\n                                    continue;\n                                var private_key = cwallet.getPrivateKey(\n                                    pubkey_string\n                                );\n                                if (!private_key)\n                                    // This should not happen, get_required_signatures will only\n                                    // returned keys from my_pubkeys\n                                    throw new Error(\n                                        \"Missing signing key for \" +\n                                            pubkey_string\n                                    );\n                                this.add_signer(private_key, pubkey_string);\n                            }\n                        }\n                    );\n                })\n                .then(() => (broadcast ? this.broadcast() : this.serialize()));\n        });\n    }\n\n    /** Typically this is called automatically just prior to signing.  Once finalized this transaction can not be changed. */\n    finalize() {\n        return new Promise((resolve, reject) => {\n            if (this.tr_buffer) {\n                throw new Error(\"already finalized\");\n            }\n\n            resolve(\n                Apis.instance()\n                    .db_api()\n                    .exec(\"get_objects\", [[\"2.1.0\"]])\n                    .then(r => {\n                        head_block_time_string = r[0].time;\n                        if (this.expiration === 0)\n                            this.expiration =\n                                base_expiration_sec() +\n                                ChainConfig.expire_in_secs;\n                        this.ref_block_num = r[0].head_block_number & 0xffff;\n                        this.ref_block_prefix = new Buffer(\n                            r[0].head_block_id,\n                            \"hex\"\n                        ).readUInt32LE(4);\n                        //DEBUG console.log(\"ref_block\",@ref_block_num,@ref_block_prefix,r)\n\n                        var iterable = this.operations;\n                        for (var i = 0, op; i < iterable.length; i++) {\n                            op = iterable[i];\n                            if (op[1][\"finalize\"]) {\n                                op[1].finalize();\n                            }\n                        }\n                        this.tr_buffer = ops.transaction.toBuffer(this);\n                    })\n            );\n        });\n    }\n\n    /** @return {string} hex transaction ID */\n    id() {\n        if (!this.tr_buffer) {\n            throw new Error(\"not finalized\");\n        }\n        return hash\n            .sha256(this.tr_buffer)\n            .toString(\"hex\")\n            .substring(0, 40);\n    }\n\n    /**\n        Typically one will use {@link this.add_type_operation} instead.\n        @arg {array} operation - [operation_id, operation]\n    */\n    add_operation(operation) {\n        if (this.tr_buffer) {\n            throw new Error(\"already finalized\");\n        }\n        assert(operation, \"operation\");\n        if (!Array.isArray(operation)) {\n            throw new Error(\"Expecting array [operation_id, operation]\");\n        }\n        this.operations.push(operation);\n        return;\n    }\n\n    get_type_operation(name, operation) {\n        if (this.tr_buffer) {\n            throw new Error(\"already finalized\");\n        }\n        assert(name, \"name\");\n        assert(operation, \"operation\");\n        var _type = ops[name];\n        assert(_type, `Unknown operation ${name}`);\n        var operation_id = ChainTypes.operations[_type.operation_name];\n        if (operation_id === undefined) {\n            throw new Error(`unknown operation: ${_type.operation_name}`);\n        }\n        if (!operation.fee) {\n            operation.fee = {amount: 0, asset_id: 0};\n        }\n        if (name === \"proposal_create\") {\n            /*\n            * Proposals involving the committee account require a review\n            * period to be set, look for them here\n            */\n            let requiresReview = false,\n                extraReview = 0;\n            operation.proposed_ops.forEach(op => {\n                const COMMITTE_ACCOUNT = 0;\n                let key;\n\n                switch (op.op[0]) {\n                    case 0: // transfer\n                        key = \"from\";\n                        break;\n\n                    case 6: //account_update\n                    case 17: // asset_settle\n                        key = \"account\";\n                        break;\n\n                    case 10: // asset_create\n                    case 11: // asset_update\n                    case 12: // asset_update_bitasset\n                    case 13: // asset_update_feed_producers\n                    case 14: // asset_issue\n                    case 18: // asset_global_settle\n                    case 43: // asset_claim_fees\n                        key = \"issuer\";\n                        break;\n\n                    case 15: // asset_reserve\n                        key = \"payer\";\n                        break;\n\n                    case 16: // asset_fund_fee_pool\n                        key = \"from_account\";\n                        break;\n\n                    case 22: // proposal_create\n                    case 23: // proposal_update\n                    case 24: // proposal_delete\n                        key = \"fee_paying_account\";\n                        break;\n\n                    case 31: // committee_member_update_global_parameters\n                        requiresReview = true;\n                        extraReview = 60 * 60 * 24 * 13; // Make the review period 2 weeks total\n                        break;\n                }\n                if (key in op.op[1] && op.op[1][key] === COMMITTE_ACCOUNT) {\n                    requiresReview = true;\n                }\n            });\n            operation.expiration_time ||\n                (operation.expiration_time =\n                    base_expiration_sec() +\n                    ChainConfig.expire_in_secs_proposal);\n            if (requiresReview) {\n                operation.review_period_seconds =\n                    extraReview +\n                    Math.max(\n                        committee_min_review,\n                        24 * 60 * 60 || ChainConfig.review_in_secs_committee\n                    );\n                /*\n                * Expiration time must be at least equal to\n                * now + review_period_seconds, so we add one hour to make sure\n                */\n                operation.expiration_time += 60 * 60 + extraReview;\n            }\n        }\n        var operation_instance = _type.fromObject(operation);\n        return [operation_id, operation_instance];\n    }\n\n    /* optional: fetch the current head block */\n\n    update_head_block() {\n        return Promise.all([\n            Apis.instance()\n                .db_api()\n                .exec(\"get_objects\", [[\"2.0.0\"]]),\n            Apis.instance()\n                .db_api()\n                .exec(\"get_objects\", [[\"2.1.0\"]])\n        ]).then(function(res) {\n            let [g, r] = res;\n            head_block_time_string = r[0].time;\n            committee_min_review =\n                g[0].parameters.committee_proposal_review_period;\n        });\n    }\n\n    /** optional: there is a deafult expiration */\n    set_expire_seconds(sec) {\n        if (this.tr_buffer) {\n            throw new Error(\"already finalized\");\n        }\n        return (this.expiration = base_expiration_sec() + sec);\n    }\n\n    /* Wraps this transaction in a proposal_create transaction */\n    propose(proposal_create_options) {\n        if (this.tr_buffer) {\n            throw new Error(\"already finalized\");\n        }\n        if (!this.operations.length) {\n            throw new Error(\"add operation first\");\n        }\n\n        assert(proposal_create_options, \"proposal_create_options\");\n        assert(\n            proposal_create_options.fee_paying_account,\n            \"proposal_create_options.fee_paying_account\"\n        );\n\n        let proposed_ops = this.operations.map(op => {\n            return {op: op};\n        });\n\n        this.operations = [];\n        this.signatures = [];\n        this.signer_private_keys = [];\n        proposal_create_options.proposed_ops = proposed_ops;\n        this.add_type_operation(\"proposal_create\", proposal_create_options);\n        return this;\n    }\n\n    has_proposed_operation() {\n        let hasProposed = false;\n        for (var i = 0; i < this.operations.length; i++) {\n            if (\"proposed_ops\" in this.operations[i][1]) {\n                hasProposed = true;\n                break;\n            }\n        }\n\n        return hasProposed;\n    }\n\n    /** optional: the fees can be obtained from the witness node */\n    set_required_fees(asset_id, removeDuplicates) {\n        if (this.tr_buffer) {\n            throw new Error(\"already finalized\");\n        }\n        if (!this.operations.length) {\n            throw new Error(\"add operations first\");\n        }\n\n        function isProposal(op) {\n            return op[0] === 22;\n        }\n\n        let operations = [];\n        let proposed_ops = [];\n        let feeAssets = [];\n        let proposalFeeAssets = [];\n        let potentialDuplicates = {};\n        function getDuplicateOriginalIndex(op, index) {\n            let key = getOperationKey(op);\n            let duplicate = potentialDuplicates[key];\n            if (!!duplicate) {\n                if (duplicate.original === index) return index;\n                else if (duplicate.duplicates.indexOf(index) !== -1) {\n                    return duplicate.original;\n                }\n            }\n        }\n        function getOperationKey(op) {\n            let key = null;\n            switch (op[0]) {\n                case 0: // transfer\n                    let memoDummy = new Array(\n                        op[1].memo.message.length + 1\n                    ).join(\"a\");\n                    key = `${op[0]}_${op[1].amount.asset_id}_${memoDummy}`;\n                    break;\n                default:\n            }\n            return key;\n        }\n        for (let i = 0, op; i < this.operations.length; i++) {\n            op = this.operations[i];\n            let opObject = ops.operation.toObject(op);\n            let isDuplicate = false;\n            if (removeDuplicates) {\n                let key = getOperationKey(opObject);\n                if (key) {\n                    if (!potentialDuplicates[key])\n                        potentialDuplicates[key] = {\n                            original: i,\n                            duplicates: []\n                        };\n                    else {\n                        potentialDuplicates[key].duplicates.push(i);\n                        isDuplicate = true;\n                    }\n                }\n            }\n            /*\n            * If the operation creates a proposal, we should check the fee pool\n            * of the suggested proposal fee assets to prevent users from creating\n            * proposals that will most likely fail due to empty fee pools\n            */\n            if (isProposal(op)) {\n                op[1].proposed_ops.forEach(prop => {\n                    // console.log(\"proposed op\", prop.op[1].fee);\n                    proposed_ops.push(prop);\n                    if (\n                        proposalFeeAssets.indexOf(prop.op[1].fee.asset_id) ===\n                        -1\n                    )\n                        proposalFeeAssets.push(\n                            \"1.3.\" + prop.op[1].fee.asset_id\n                        );\n                });\n            }\n            if (!isDuplicate) {\n                operations.push(opObject);\n                if (feeAssets.indexOf(operations[i][1].fee.asset_id) === -1)\n                    feeAssets.push(operations[i][1].fee.asset_id);\n            }\n        }\n\n        if (!asset_id) {\n            let op1_fee = operations[0][1].fee;\n            if (op1_fee && op1_fee.asset_id !== null) {\n                asset_id = op1_fee.asset_id;\n            } else {\n                asset_id = \"1.3.0\";\n            }\n        }\n\n        let promises = [];\n        promises.push(\n            Promise.all(\n                feeAssets.map(id => {\n                    return Apis.instance()\n                        .db_api()\n                        .exec(\"get_required_fees\", [operations, id]);\n                })\n            ).catch(err => {\n                console.error(\"get_required_fees API error: \", err.message);\n            })\n        );\n\n        /*\n        * Add the proposal fee asset ids to feeAssets here to fetch their\n        * dynamic objects without calling get_required_fees with them as well\n        */\n        if (proposalFeeAssets.length) {\n            proposalFeeAssets.forEach(id => {\n                if (feeAssets.indexOf(id) === -1) feeAssets.push(id);\n            });\n        }\n\n        if (feeAssets.length > 1 || feeAssets[0] !== \"1.3.0\") {\n            /*\n            * If we're paying with any assets other than CORE, we need to fetch\n            * the dynamic asset object and check the fee pool of those assets.\n            * The dynamic asset object id is equal to the asset id but with\n            * 2.3.x instead of 1.3.x\n            */\n            let dynamicObjectIds = feeAssets.map(a => a.replace(/^1\\./, \"2.\"));\n            promises.push(\n                Apis.instance()\n                    .db_api()\n                    .exec(\"get_required_fees\", [operations, \"1.3.0\"])\n            );\n            promises.push(\n                Apis.instance()\n                    .db_api()\n                    .exec(\"get_objects\", [dynamicObjectIds])\n            );\n        }\n\n        return Promise.all(promises).then(results => {\n            /*\n            * allFees and coreFees are arrays containg fee amounts grouped by\n            * asset and for each operation in operations\n            */\n            let [allFees, coreFees, dynamicObjects] = results;\n            /*\n            * If one of the desired fee assets has an invalid core exchange rate\n            * get_required_signatures will fail and the result for all assets\n            * will be undefined, if so we just default to coreFees\n            */\n            if (allFees === undefined) {\n                allFees = coreFees;\n            }\n            /*\n            * If the only desired fee asset is CORE, coreFees are not fetched\n            * but are equal to allFees\n            */\n            if (!coreFees) {\n                coreFees = allFees[0];\n            }\n\n            /* Create a map of fees and proposal fees by asset id */\n            let feesByAsset = {};\n            let proposalFeesByAsset = {};\n            allFees.forEach(feeSet => {\n                let filteredFeeSet = feeSet.map(f => {\n                    if (Array.isArray(f)) {\n                        // This operation includes a proposal\n                        proposalFeesByAsset[f[1][0].asset_id] = f[1];\n                        return f[0];\n                    }\n                    return f;\n                });\n                let currentAssetId = filteredFeeSet[0].asset_id;\n\n                feesByAsset[currentAssetId] = filteredFeeSet;\n            }, {});\n\n            /* Create a map of fee pools by asset id*/\n            let feePoolMap = !!dynamicObjects\n                ? dynamicObjects.reduce((map, object) => {\n                      map[object.id.replace(/^2\\./, \"1.\")] = object;\n                      return map;\n                  }, {})\n                : {};\n\n            let feeMap = {};\n            let proposalFeeMap = {};\n            function updateFeeMap(map, asset_id, opIndex, core_fees) {\n                if (!map[asset_id]) map[asset_id] = {total: 0, ops: []};\n                if (map[asset_id].propIdx) map[asset_id].propIdx.push(opIndex);\n                else map[asset_id].ops.push(opIndex);\n\n                if (asset_id !== \"1.3.0\") {\n                    map[asset_id].total += core_fees.length\n                        ? core_fees[opIndex].amount\n                        : core_fees.amount;\n                }\n                return map;\n            }\n\n            for (let i = 0; i < operations.length; i++) {\n                let op = operations[i];\n                let feeAssetId = op[1].fee.asset_id;\n\n                if (isProposal(op)) {\n                    feeMap = updateFeeMap(\n                        feeMap,\n                        feeAssetId,\n                        i,\n                        coreFees[i][0]\n                    );\n\n                    op[1].proposed_ops.forEach((prop, y) => {\n                        let propFeeAsset = prop.op[1].fee.asset_id;\n                        if (!proposalFeeMap[i]) proposalFeeMap[i] = {};\n                        if (!proposalFeeMap[i][propFeeAsset])\n                            proposalFeeMap[i][propFeeAsset] = {\n                                total: 0,\n                                ops: [i],\n                                propIdx: []\n                            };\n\n                        proposalFeeMap[i] = updateFeeMap(\n                            proposalFeeMap[i],\n                            propFeeAsset,\n                            y,\n                            coreFees[i][1]\n                        );\n                    });\n                } else {\n                    feeMap = updateFeeMap(feeMap, feeAssetId, i, coreFees[i]);\n                }\n            }\n\n            /* Check fee pool balances for regular ops */\n            function checkPoolBalance(map) {\n                if (!Object.keys(map).length) return [];\n                let final_fees = [];\n                for (let asset in map) {\n                    let feePool = feePoolMap[asset]\n                        ? parseInt(feePoolMap[asset].fee_pool, 10)\n                        : 0;\n                    /* Fee pool balance insufficient, default to core*/\n                    if (map[asset].total > feePool) {\n                        map[asset].ops.forEach(opIndex => {\n                            if (\n                                coreFees[opIndex].length === 2 &&\n                                \"propIdx\" in map[asset]\n                            ) {\n                                /* Proposal op */\n                                map[asset].propIdx.forEach(prop_idx => {\n                                    final_fees[prop_idx] =\n                                        coreFees[opIndex][1][prop_idx];\n                                });\n                            } else if (coreFees[opIndex].length === 2) {\n                                final_fees[opIndex] = coreFees[opIndex][0];\n                            } else {\n                                final_fees[opIndex] = coreFees[opIndex];\n                            }\n                        });\n                        /* Use the desired fee asset */\n                    } else {\n                        map[asset].ops.forEach(opIndex => {\n                            if (\n                                coreFees[opIndex].length === 2 &&\n                                \"propIdx\" in map[asset]\n                            ) {\n                                map[asset].propIdx.forEach(prop_idx => {\n                                    final_fees[prop_idx] =\n                                        proposalFeesByAsset[asset][prop_idx];\n                                });\n                            } else {\n                                final_fees[opIndex] =\n                                    feesByAsset[asset][opIndex];\n                            }\n                        });\n                    }\n                }\n                return final_fees;\n            }\n\n            let finalFees = checkPoolBalance(feeMap);\n\n            let finalProposalFees = {};\n            for (let key in proposalFeeMap) {\n                finalProposalFees[key] = checkPoolBalance(proposalFeeMap[key]);\n            }\n\n            let set_fee = (operation, opIndex) => {\n                if (\n                    !operation.fee ||\n                    operation.fee.amount === 0 ||\n                    (operation.fee.amount.toString &&\n                        operation.fee.amount.toString() === \"0\") // Long\n                ) {\n                    if (removeDuplicates) {\n                        let op = ops.operation.toObject(\n                            this.operations[opIndex]\n                        );\n                        let originalIndex = getDuplicateOriginalIndex(\n                            op,\n                            opIndex\n                        );\n                        if (originalIndex >= 0) {\n                            // it's a duplicate\n                            operation.fee = finalFees[originalIndex];\n                        } else {\n                            operation.fee = finalFees[opIndex];\n                        }\n                    } else {\n                        operation.fee = finalFees[opIndex];\n                    }\n                }\n                if (operation.proposed_ops) {\n                    let result = [];\n                    /*\n                    * Loop over proposed_ops and assign fee asset ids as\n                    * determined by the fee pool balance check. If the balance\n                    * is sufficient the asset_id is kept, if not it defaults to\n                    * \"1.3.0\"\n                    */\n                    for (let y = 0; y < operation.proposed_ops.length; y++) {\n                        operation.proposed_ops[y].op[1].fee.asset_id =\n                            finalProposalFees[opIndex][y].asset_id;\n                    }\n\n                    return result;\n                }\n            };\n            /* We apply the final fees the the operations */\n            for (let i = 0; i < this.operations.length; i++) {\n                set_fee(this.operations[i][1], i);\n            }\n        });\n        //DEBUG console.log('... get_required_fees',operations,asset_id,flat_fees)\n    }\n\n    get_potential_signatures() {\n        var tr_object = ops.signed_transaction.toObject(this);\n        return Promise.all([\n            Apis.instance()\n                .db_api()\n                .exec(\"get_potential_signatures\", [tr_object]),\n            Apis.instance()\n                .db_api()\n                .exec(\"get_potential_address_signatures\", [tr_object])\n        ]).then(function(results) {\n            return {pubkeys: results[0], addys: results[1]};\n        });\n    }\n\n    get_required_signatures(available_keys) {\n        if (!available_keys.length) {\n            return Promise.resolve([]);\n        }\n        var tr_object = ops.signed_transaction.toObject(this);\n        //DEBUG console.log('... tr_object',tr_object)\n        return Apis.instance()\n            .db_api()\n            .exec(\"get_required_signatures\", [tr_object, available_keys])\n            .then(function(required_public_keys) {\n                //DEBUG console.log('... get_required_signatures',required_public_keys)\n                return required_public_keys;\n            });\n    }\n\n    add_signer(private_key, public_key = private_key.toPublicKey()) {\n        assert(private_key.d, \"required PrivateKey object\");\n\n        if (this.signed) {\n            throw new Error(\"already signed\");\n        }\n        if (!public_key.Q) {\n            public_key = PublicKey.fromPublicKeyString(public_key);\n        }\n        // prevent duplicates\n        let spHex = private_key.toHex();\n        for (let sp of this.signer_private_keys) {\n            if (sp[0].toHex() === spHex) return;\n        }\n        this.signer_private_keys.push([private_key, public_key]);\n    }\n\n    sign(chain_id = Apis.instance().chain_id) {\n        if (!this.tr_buffer) {\n            throw new Error(\"not finalized\");\n        }\n        if (this.signed) {\n            throw new Error(\"already signed\");\n        }\n        if (!this.signer_private_keys.length) {\n            throw new Error(\n                \"Transaction was not signed. Do you have a private key? [no_signers]\"\n            );\n        }\n        var end = this.signer_private_keys.length;\n        for (var i = 0; 0 < end ? i < end : i > end; 0 < end ? i++ : i++) {\n            var [private_key, public_key] = this.signer_private_keys[i];\n            var sig = Signature.signBuffer(\n                Buffer.concat([new Buffer(chain_id, \"hex\"), this.tr_buffer]),\n                private_key,\n                public_key\n            );\n            this.signatures.push(sig.toBuffer());\n        }\n        this.signer_private_keys = [];\n        this.signed = true;\n        return;\n    }\n\n    serialize() {\n        return ops.signed_transaction.toObject(this);\n    }\n\n    toObject() {\n        return ops.signed_transaction.toObject(this);\n    }\n\n    broadcast(was_broadcast_callback) {\n        if (this.tr_buffer) {\n            return this._broadcast(was_broadcast_callback);\n        } else {\n            return this.finalize().then(() => {\n                return this._broadcast(was_broadcast_callback);\n            });\n        }\n    }\n}\n\nvar base_expiration_sec = () => {\n    var head_block_sec = Math.ceil(getHeadBlockDate().getTime() / 1000);\n    var now_sec = Math.ceil(Date.now() / 1000);\n    // The head block time should be updated every 3 seconds.  If it isn't\n    // then help the transaction to expire (use head_block_sec)\n    if (now_sec - head_block_sec > 30) {\n        return head_block_sec;\n    }\n    // If the user's clock is very far behind, use the head block time.\n    return Math.max(now_sec, head_block_sec);\n};\n\nfunction _broadcast(was_broadcast_callback) {\n    return new Promise((resolve, reject) => {\n        if (!this.signed) {\n            this.sign();\n        }\n        if (!this.tr_buffer) {\n            throw new Error(\"not finalized\");\n        }\n        if (!this.signatures.length) {\n            throw new Error(\"not signed\");\n        }\n        if (!this.operations.length) {\n            throw new Error(\"no operations\");\n        }\n\n        var tr_object = ops.signed_transaction.toObject(this);\n        // console.log('... broadcast_transaction_with_callback !!!')\n        Apis.instance()\n            .network_api()\n            .exec(\"broadcast_transaction_with_callback\", [\n                function(res) {\n                    return resolve(res);\n                },\n                tr_object\n            ])\n            .then(function() {\n                //console.log('... broadcast success, waiting for callback')\n                if (was_broadcast_callback) was_broadcast_callback();\n                return;\n            })\n            .catch(error => {\n                // console.log may be redundant for network errors, other errors could occur\n                console.log(error);\n                var message = error.message;\n                if (!message) {\n                    message = \"\";\n                }\n                reject(\n                    new Error(\n                        message +\n                            \"\\n\" +\n                            \"bitshares-crypto \" +\n                            \" digest \" +\n                            hash.sha256(this.tr_buffer).toString(\"hex\") +\n                            \" transaction \" +\n                            this.tr_buffer.toString(\"hex\") +\n                            \" \" +\n                            JSON.stringify(tr_object)\n                    )\n                );\n                return;\n            });\n        return;\n    });\n}\n\nfunction getHeadBlockDate() {\n    return timeStringToDate(head_block_time_string);\n}\n\nfunction timeStringToDate(time_string) {\n    if (!time_string) return new Date(\"1970-01-01T00:00:00.000Z\");\n    if (!/Z$/.test(time_string))\n        //does not end in Z\n        // https://github.com/cryptonomex/graphene/issues/368\n        time_string = time_string + \"Z\";\n    return new Date(time_string);\n}\n\nexport default TransactionBuilder;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/TransactionBuilder.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 189,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/chain/src/TransactionBuilder.js",
    "static": true,
    "longname": "lib/chain/src/TransactionBuilder.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionBuilder.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 190,
    "kind": "function",
    "name": "base_expiration_sec",
    "memberof": "lib/chain/src/TransactionBuilder.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionBuilder.js~base_expiration_sec",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionBuilder.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 755,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 191,
    "kind": "function",
    "name": "_broadcast",
    "memberof": "lib/chain/src/TransactionBuilder.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionBuilder.js~_broadcast",
    "access": "private",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionBuilder.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 767,
    "undocument": true,
    "params": [
      {
        "name": "was_broadcast_callback",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 192,
    "kind": "function",
    "name": "getHeadBlockDate",
    "memberof": "lib/chain/src/TransactionBuilder.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionBuilder.js~getHeadBlockDate",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionBuilder.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 823,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 193,
    "kind": "function",
    "name": "timeStringToDate",
    "memberof": "lib/chain/src/TransactionBuilder.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionBuilder.js~timeStringToDate",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionBuilder.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 827,
    "undocument": true,
    "params": [
      {
        "name": "time_string",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 194,
    "kind": "class",
    "name": "TransactionBuilder",
    "memberof": "lib/chain/src/TransactionBuilder.js",
    "static": true,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/TransactionBuilder.js",
    "importStyle": "TransactionBuilder",
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 195,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true
  },
  {
    "__docId__": 196,
    "kind": "member",
    "name": "ref_block_num",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#ref_block_num",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 197,
    "kind": "member",
    "name": "ref_block_prefix",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#ref_block_prefix",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 198,
    "kind": "member",
    "name": "expiration",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#expiration",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 199,
    "kind": "member",
    "name": "operations",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#operations",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 200,
    "kind": "member",
    "name": "signatures",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#signatures",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 201,
    "kind": "member",
    "name": "signer_private_keys",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#signer_private_keys",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 202,
    "kind": "member",
    "name": "_broadcast",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#_broadcast",
    "access": "private",
    "description": null,
    "lineNumber": 20,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 203,
    "kind": "method",
    "name": "add_type_operation",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#add_type_operation",
    "access": "public",
    "description": "",
    "lineNumber": 27,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} name - like \"transfer\""
      },
      {
        "tagName": "@arg",
        "tagValue": "{object} operation - JSON matchching the operation's format"
      }
    ],
    "params": [
      {
        "name": "name",
        "types": [
          "*"
        ]
      },
      {
        "name": "operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 204,
    "kind": "method",
    "name": "process_transaction",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#process_transaction",
    "access": "public",
    "description": "This does it all: set fees, finalize, sign, and broadcast (if wanted).",
    "lineNumber": 41,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{ConfidentialWallet} cwallet - must be unlocked, used to gather signing keys"
      },
      {
        "tagName": "@arg",
        "tagValue": "{array<string>} [signer_pubkeys = null] - Optional [\"GPHAbc9Def0...\", ...].  These are additional signing keys.  Some balance claims require propritary address formats, the witness node can't tell us which ones are needed so they must be passed in.  If the witness node can figure out a signing key (mostly all other transactions), it should not be passed in here."
      },
      {
        "tagName": "@arg",
        "tagValue": "{boolean} [broadcast = false]"
      }
    ],
    "params": [
      {
        "name": "cwallet",
        "types": [
          "*"
        ]
      },
      {
        "name": "signer_pubkeys",
        "optional": true,
        "types": [
          "undefined"
        ],
        "defaultValue": "undefined"
      },
      {
        "name": "broadcast",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 205,
    "kind": "method",
    "name": "finalize",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#finalize",
    "access": "public",
    "description": "Typically this is called automatically just prior to signing.  Once finalized this transaction can not be changed.",
    "lineNumber": 109,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 209,
    "kind": "member",
    "name": "tr_buffer",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#tr_buffer",
    "access": "public",
    "description": null,
    "lineNumber": 139,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 210,
    "kind": "method",
    "name": "id",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#id",
    "access": "public",
    "description": null,
    "lineNumber": 146,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": "hex transaction ID"
    },
    "params": []
  },
  {
    "__docId__": 211,
    "kind": "method",
    "name": "add_operation",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#add_operation",
    "access": "public",
    "description": "Typically one will use {@link this.add_type_operation} instead.",
    "lineNumber": 160,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{array} operation - [operation_id, operation]"
      }
    ],
    "params": [
      {
        "name": "operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 212,
    "kind": "method",
    "name": "get_type_operation",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#get_type_operation",
    "access": "public",
    "description": null,
    "lineNumber": 172,
    "undocument": true,
    "params": [
      {
        "name": "name",
        "types": [
          "*"
        ]
      },
      {
        "name": "operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 213,
    "kind": "method",
    "name": "update_head_block",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#update_head_block",
    "access": "public",
    "description": null,
    "lineNumber": 265,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 214,
    "kind": "method",
    "name": "set_expire_seconds",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#set_expire_seconds",
    "access": "public",
    "description": "optional: there is a deafult expiration",
    "lineNumber": 282,
    "params": [
      {
        "name": "sec",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 215,
    "kind": "method",
    "name": "propose",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#propose",
    "access": "public",
    "description": null,
    "lineNumber": 290,
    "undocument": true,
    "params": [
      {
        "name": "proposal_create_options",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 219,
    "kind": "method",
    "name": "has_proposed_operation",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#has_proposed_operation",
    "access": "public",
    "description": null,
    "lineNumber": 316,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 220,
    "kind": "method",
    "name": "set_required_fees",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#set_required_fees",
    "access": "public",
    "description": "optional: the fees can be obtained from the witness node",
    "lineNumber": 329,
    "params": [
      {
        "name": "asset_id",
        "types": [
          "*"
        ]
      },
      {
        "name": "removeDuplicates",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 221,
    "kind": "method",
    "name": "get_potential_signatures",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#get_potential_signatures",
    "access": "public",
    "description": null,
    "lineNumber": 663,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 222,
    "kind": "method",
    "name": "get_required_signatures",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#get_required_signatures",
    "access": "public",
    "description": null,
    "lineNumber": 677,
    "undocument": true,
    "params": [
      {
        "name": "available_keys",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 223,
    "kind": "method",
    "name": "add_signer",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#add_signer",
    "access": "public",
    "description": null,
    "lineNumber": 692,
    "undocument": true,
    "params": [
      {
        "name": "private_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "public_key",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 224,
    "kind": "method",
    "name": "sign",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#sign",
    "access": "public",
    "description": null,
    "lineNumber": 709,
    "undocument": true,
    "params": [
      {
        "name": "chain_id",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 226,
    "kind": "member",
    "name": "signed",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#signed",
    "access": "public",
    "description": null,
    "lineNumber": 732,
    "undocument": true,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 227,
    "kind": "method",
    "name": "serialize",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#serialize",
    "access": "public",
    "description": null,
    "lineNumber": 736,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 228,
    "kind": "method",
    "name": "toObject",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#toObject",
    "access": "public",
    "description": null,
    "lineNumber": 740,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 229,
    "kind": "method",
    "name": "broadcast",
    "memberof": "lib/chain/src/TransactionBuilder.js~TransactionBuilder",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/chain/src/TransactionBuilder.js~TransactionBuilder#broadcast",
    "access": "public",
    "description": null,
    "lineNumber": 744,
    "undocument": true,
    "params": [
      {
        "name": "was_broadcast_callback",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 230,
    "kind": "file",
    "name": "lib/chain/src/TransactionHelper.js",
    "content": "var helper = {};\n\nimport secureRandom from \"secure-random\";\n\nimport {Long} from \"bytebuffer\";\n\nimport {Signature} from \"../../ecc\";\nimport {ops} from \"../../serializer\";\nimport {Apis} from \"bitsharesjs-ws\";\n\nhelper.unique_nonce_entropy = null;\nhelper.unique_nonce_uint64 = function() {\n    var entropy = (helper.unique_nonce_entropy = (() => {\n        if (helper.unique_nonce_entropy === null) {\n            //console.log('... secureRandom.randomUint8Array(1)[0]',secureRandom.randomUint8Array(1)[0])\n            return parseInt(secureRandom.randomUint8Array(1)[0]);\n        } else {\n            return ++helper.unique_nonce_entropy % 256;\n        }\n    })());\n    var long = Long.fromNumber(Date.now());\n    //console.log('unique_nonce_uint64 date\\t',ByteBuffer.allocate(8).writeUint64(long).toHex(0))\n    //console.log('unique_nonce_uint64 entropy\\t',ByteBuffer.allocate(8).writeUint64(Long.fromNumber(entropy)).toHex(0))\n    long = long.shiftLeft(8).or(Long.fromNumber(entropy));\n    //console.log('unique_nonce_uint64 shift8\\t',ByteBuffer.allocate(8).writeUint64(long).toHex(0))\n    return long.toString();\n};\n\n/* Todo, set fees */\nhelper.to_json = function(tr, broadcast = false) {\n    return (function(tr, broadcast) {\n        var tr_object = ops.signed_transaction.toObject(tr);\n        if (broadcast) {\n            var net = Apis.instance().network_api();\n            console.log(\"... tr_object\", JSON.stringify(tr_object));\n            return net.exec(\"broadcast_transaction\", [tr_object]);\n        } else {\n            return tr_object;\n        }\n    })(tr, broadcast);\n};\n\nhelper.signed_tr_json = function(tr, private_keys) {\n    var tr_buffer = ops.transaction.toBuffer(tr);\n    tr = ops.transaction.toObject(tr);\n    tr.signatures = (() => {\n        var result = [];\n        for (\n            var i = 0;\n            0 < private_keys.length\n                ? i < private_keys.length\n                : i > private_keys.length;\n            0 < private_keys.length ? i++ : i++\n        ) {\n            var private_key = private_keys[i];\n            result.push(Signature.signBuffer(tr_buffer, private_key).toHex());\n        }\n        return result;\n    })();\n    return tr;\n};\n\nhelper.expire_in_min = function(min) {\n    return Math.round(Date.now() / 1000) + min * 60;\n};\n\nhelper.seconds_from_now = function(timeout_sec) {\n    return Math.round(Date.now() / 1000) + timeout_sec;\n};\n\n/**\n    Print to the console a JSON representation of any object in\n    @graphene/serializer { types }\n*/\nhelper.template = function(\n    serializer_operation_type_name,\n    debug = {use_default: true, annotate: true}\n) {\n    var so = ops[serializer_operation_type_name];\n    if (!so) {\n        throw new Error(\n            `unknown serializer_operation_type ${serializer_operation_type_name}`\n        );\n    }\n    return so.toObject(undefined, debug);\n};\n\nhelper.new_operation = function(serializer_operation_type_name) {\n    var so = ops[serializer_operation_type_name];\n    if (!so) {\n        throw new Error(\n            `unknown serializer_operation_type ${serializer_operation_type_name}`\n        );\n    }\n    var object = so.toObject(undefined, {use_default: true, annotate: true});\n    return so.fromObject(object);\n};\n\nhelper.instance = function(ObjectId) {\n    return ObjectId.substring(\"0.0.\".length);\n};\n\nexport default helper;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/TransactionHelper.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 231,
    "kind": "function",
    "name": "unique_nonce_uint64",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~unique_nonce_uint64",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 232,
    "kind": "function",
    "name": "to_json",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~to_json",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 30,
    "undocument": true,
    "params": [
      {
        "name": "tr",
        "types": [
          "*"
        ]
      },
      {
        "name": "broadcast",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 233,
    "kind": "function",
    "name": "signed_tr_json",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~signed_tr_json",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 43,
    "undocument": true,
    "params": [
      {
        "name": "tr",
        "types": [
          "*"
        ]
      },
      {
        "name": "private_keys",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 234,
    "kind": "function",
    "name": "expire_in_min",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~expire_in_min",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 63,
    "undocument": true,
    "params": [
      {
        "name": "min",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 235,
    "kind": "function",
    "name": "seconds_from_now",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~seconds_from_now",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 67,
    "undocument": true,
    "params": [
      {
        "name": "timeout_sec",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 236,
    "kind": "function",
    "name": "template",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~template",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": null,
    "description": "Print to the console a JSON representation of any object in\n@graphene/serializer { types }",
    "lineNumber": 75,
    "params": [
      {
        "name": "serializer_operation_type_name",
        "types": [
          "*"
        ]
      },
      {
        "name": "debug",
        "optional": true,
        "types": [
          "{\"use_default\": boolean, \"annotate\": boolean}"
        ],
        "defaultRaw": {
          "use_default": true,
          "annotate": true
        },
        "defaultValue": "{\"use_default\":true,\"annotate\":true}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 237,
    "kind": "function",
    "name": "new_operation",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~new_operation",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 88,
    "undocument": true,
    "params": [
      {
        "name": "serializer_operation_type_name",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 238,
    "kind": "function",
    "name": "instance",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~instance",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 99,
    "undocument": true,
    "params": [
      {
        "name": "ObjectId",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 239,
    "kind": "variable",
    "name": "helper",
    "memberof": "lib/chain/src/TransactionHelper.js",
    "static": true,
    "longname": "lib/chain/src/TransactionHelper.js~helper",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/TransactionHelper.js",
    "importStyle": "helper",
    "description": null,
    "lineNumber": 1,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 240,
    "kind": "file",
    "name": "lib/chain/src/state.js",
    "content": "function get(state) {\n    return function(key) {\n        return state[key] || \"\";\n    };\n}\n\nfunction set(state) {\n    return function(key, value) {\n        state[key] = value;\n        return this;\n    };\n}\n\nexport {get, set};\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/chain/src/state.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 241,
    "kind": "function",
    "name": "get",
    "memberof": "lib/chain/src/state.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/state.js~get",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/state.js",
    "importStyle": "{get}",
    "description": null,
    "lineNumber": 1,
    "undocument": true,
    "params": [
      {
        "name": "state",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 242,
    "kind": "function",
    "name": "set",
    "memberof": "lib/chain/src/state.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/chain/src/state.js~set",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/chain/src/state.js",
    "importStyle": "{set}",
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "params": [
      {
        "name": "state",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 243,
    "kind": "file",
    "name": "lib/ecc/index.js",
    "content": "import Address from \"./src/address\";\nimport Aes from \"./src/aes\";\nimport PrivateKey from \"./src/PrivateKey\";\nimport PublicKey from \"./src/PublicKey\";\nimport Signature from \"./src/signature\";\nimport brainKey from \"./src/BrainKey\";\nimport * as hash from \"./src/hash\";\nimport key from \"./src/KeyUtils\";\n\nexport { Address, Aes, PrivateKey, PublicKey, Signature, brainKey, hash, key };\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/index.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 244,
    "kind": "file",
    "name": "lib/ecc/src/BrainKey.js",
    "content": "export default function normalize(brainKey) {\n    if (typeof brainKey !== \"string\") {\n        throw new Error(\"string required for brainKey\");\n    }\n    brainKey = brainKey.trim();\n    return brainKey.split(/[\\t\\n\\v\\f\\r ]+/).join(\" \");\n}\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/BrainKey.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 245,
    "kind": "function",
    "name": "normalize",
    "memberof": "lib/ecc/src/BrainKey.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/BrainKey.js~normalize",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/BrainKey.js",
    "importStyle": "normalize",
    "description": null,
    "lineNumber": 1,
    "undocument": true,
    "params": [
      {
        "name": "brainKey",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 246,
    "kind": "file",
    "name": "lib/ecc/src/KeyUtils.js",
    "content": "import PrivateKey from \"./PrivateKey\";\nimport PublicKey from \"./PublicKey\";\nimport Address from \"./address\";\nimport Aes from \"./aes\";\nimport {sha256, sha512} from \"./hash\";\n// import dictionary from './dictionary_en';\nimport secureRandom from \"secure-random\";\nimport {ChainConfig} from \"bitsharesjs-ws\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\n// hash for .25 second\nvar HASH_POWER_MILLS = 250;\n\nconst key = {\n    /** Uses 1 second of hashing power to create a key/password checksum.  An\n    implementation can re-call this method with the same password to re-match\n    the strength of the CPU (either after moving from a desktop to a mobile,\n    mobile to desktop, or N years from now when CPUs are presumably stronger).\n\n    A salt is used for all the normal reasons...\n\n    @return object {\n        aes_private: Aes,\n        checksum: \"{hash_iteration_count},{salt},{checksum}\"\n    }\n    */\n    aes_checksum(password) {\n        if (!(typeof password === \"string\")) {\n            throw new \"password string required\"();\n        }\n        var salt = secureRandom.randomBuffer(4).toString(\"hex\");\n        var iterations = 0;\n        var secret = salt + password;\n        // hash for .1 second\n        var start_t = Date.now();\n        while (Date.now() - start_t < HASH_POWER_MILLS) {\n            secret = sha256(secret);\n            iterations += 1;\n        }\n\n        var checksum = sha256(secret);\n        var checksum_string = [\n            iterations,\n            salt.toString(\"hex\"),\n            checksum.slice(0, 4).toString(\"hex\")\n        ].join(\",\");\n\n        return {\n            aes_private: Aes.fromSeed(secret),\n            checksum: checksum_string\n        };\n    },\n\n    /** Provide a matching password and key_checksum.  A \"wrong password\"\n    error is thrown if the password does not match.  If this method takes\n    much more or less than 1 second to return, one should consider updating\n    all encyrpted fields using a new key.key_checksum.\n    */\n    aes_private(password, key_checksum) {\n        var [iterations, salt, checksum] = key_checksum.split(\",\");\n        var secret = salt + password;\n        for (\n            var i = 0;\n            0 < iterations ? i < iterations : i > iterations;\n            0 < iterations ? i++ : i++\n        ) {\n            secret = sha256(secret);\n        }\n        var new_checksum = sha256(secret);\n        if (!(new_checksum.slice(0, 4).toString(\"hex\") === checksum)) {\n            throw new Error(\"wrong password\");\n        }\n        return Aes.fromSeed(secret);\n    },\n\n    /**\n        A week random number generator can run out of entropy.  This should ensure even the worst random number implementation will be reasonably safe.\n\n        @param1 string entropy of at least 32 bytes\n    */\n    random32ByteBuffer(entropy = this.browserEntropy()) {\n        if (!(typeof entropy === \"string\")) {\n            throw new Error(\"string required for entropy\");\n        }\n\n        if (entropy.length < 32) {\n            throw new Error(\"expecting at least 32 bytes of entropy\");\n        }\n\n        var start_t = Date.now();\n\n        while (Date.now() - start_t < HASH_POWER_MILLS)\n            entropy = sha256(entropy);\n\n        var hash_array = [];\n        hash_array.push(entropy);\n\n        // Hashing for 1 second may helps the computer is not low on entropy (this method may be called back-to-back).\n        hash_array.push(secureRandom.randomBuffer(32));\n\n        return sha256(Buffer.concat(hash_array));\n    },\n\n    suggest_brain_key: function(\n        dictionary = \",\",\n        entropy = this.browserEntropy()\n    ) {\n        var randomBuffer = this.random32ByteBuffer(entropy);\n\n        var word_count = 16;\n        var dictionary_lines = dictionary.split(\",\");\n\n        if (!(dictionary_lines.length === 49744)) {\n            throw new Error(\n                `expecting ${49744} but got ${\n                    dictionary_lines.length\n                } dictionary words`\n            );\n        }\n\n        var brainkey = [];\n        var end = word_count * 2;\n\n        for (let i = 0; i < end; i += 2) {\n            // randomBuffer has 256 bits / 16 bits per word == 16 words\n            var num = (randomBuffer[i] << 8) + randomBuffer[i + 1];\n\n            // convert into a number between 0 and 1 (inclusive)\n            var rndMultiplier = num / Math.pow(2, 16);\n            var wordIndex = Math.round(dictionary_lines.length * rndMultiplier);\n\n            brainkey.push(dictionary_lines[wordIndex]);\n        }\n        return this.normalize_brainKey(brainkey.join(\" \"));\n    },\n\n    get_random_key(entropy) {\n        return PrivateKey.fromBuffer(this.random32ByteBuffer(entropy));\n    },\n\n    get_brainPrivateKey(brainKey, sequence = 0) {\n        if (sequence < 0) {\n            throw new Error(\"invalid sequence\");\n        }\n        brainKey = key.normalize_brainKey(brainKey);\n        return PrivateKey.fromBuffer(sha256(sha512(brainKey + \" \" + sequence)));\n    },\n\n    // Turn invisible space like characters into a single space\n    normalize_brainKey(brainKey) {\n        if (!(typeof brainKey === \"string\")) {\n            throw new Error(\"string required for brainKey\");\n        }\n\n        brainKey = brainKey.trim();\n        return brainKey.split(/[\\t\\n\\v\\f\\r ]+/).join(\" \");\n    },\n\n    browserEntropy() {\n        var entropyStr = \"\";\n        try {\n            entropyStr =\n                new Date().toString() +\n                \" \" +\n                window.screen.height +\n                \" \" +\n                window.screen.width +\n                \" \" +\n                window.screen.colorDepth +\n                \" \" +\n                \" \" +\n                window.screen.availHeight +\n                \" \" +\n                window.screen.availWidth +\n                \" \" +\n                window.screen.pixelDepth +\n                navigator.language +\n                \" \" +\n                window.location +\n                \" \" +\n                window.history.length;\n\n            for (var i = 0, mimeType; i < navigator.mimeTypes.length; i++) {\n                mimeType = navigator.mimeTypes[i];\n                entropyStr +=\n                    mimeType.description +\n                    \" \" +\n                    mimeType.type +\n                    \" \" +\n                    mimeType.suffixes +\n                    \" \";\n            }\n            console.log(\"INFO\\tbrowserEntropy gathered\");\n        } catch (error) {\n            //nodejs:ReferenceError: window is not defined\n            entropyStr = sha256(new Date().toString());\n        }\n\n        var b = Buffer.from(entropyStr);\n        entropyStr += b.toString(\"binary\") + \" \" + new Date().toString();\n        return entropyStr;\n    },\n\n    // @return array of 5 legacy addresses for a pubkey string parameter.\n    addresses(pubkey, address_prefix = ChainConfig.address_prefix) {\n        var public_key = PublicKey.fromPublicKeyString(pubkey, address_prefix);\n        // S L O W\n        var address_string = [\n            Address.fromPublic(public_key, false, 0).toString(address_prefix), // btc_uncompressed\n            Address.fromPublic(public_key, true, 0).toString(address_prefix), // btc_compressed\n            Address.fromPublic(public_key, false, 56).toString(address_prefix), // pts_uncompressed\n            Address.fromPublic(public_key, true, 56).toString(address_prefix), // pts_compressed\n            public_key.toAddressString(address_prefix) // bts_short, most recent format\n        ];\n        return address_string;\n    }\n};\n\nexport default key;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/KeyUtils.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 247,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/ecc/src/KeyUtils.js",
    "static": true,
    "longname": "lib/ecc/src/KeyUtils.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/KeyUtils.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 248,
    "kind": "variable",
    "name": "HASH_POWER_MILLS",
    "memberof": "lib/ecc/src/KeyUtils.js",
    "static": true,
    "longname": "lib/ecc/src/KeyUtils.js~HASH_POWER_MILLS",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/KeyUtils.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 249,
    "kind": "variable",
    "name": "key",
    "memberof": "lib/ecc/src/KeyUtils.js",
    "static": true,
    "longname": "lib/ecc/src/KeyUtils.js~key",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/KeyUtils.js",
    "importStyle": "key",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "{\"aes_checksum\": function, \"aes_private\": function, \"random32ByteBuffer\": function, \"suggest_brain_key\": *, \"get_random_key\": function, \"get_brainPrivateKey\": function, \"normalize_brainKey\": function, \"browserEntropy\": function, \"addresses\": function}"
      ]
    }
  },
  {
    "__docId__": 250,
    "kind": "file",
    "name": "lib/ecc/src/PrivateKey.js",
    "content": "import {Point, getCurveByName} from \"ecurve\";\nimport BigInteger from \"bigi\";\nimport {encode, decode} from \"bs58\";\nimport {sha256, sha512} from \"./hash\";\nimport PublicKey from \"./PublicKey\";\nimport deepEqual from \"deep-equal\";\nimport assert from \"assert\";\n\nconst secp256k1 = getCurveByName(\"secp256k1\");\nconst {n} = secp256k1;\nconst Buffer = require(\"safe-buffer\").Buffer;\n\nclass PrivateKey {\n    /**\n        @private see static functions\n        @param {BigInteger}\n    */\n    constructor(d) {\n        this.d = d;\n    }\n\n    static fromBuffer(buf) {\n        if (!Buffer.isBuffer(buf)) {\n            throw new Error(\"Expecting paramter to be a Buffer type\");\n        }\n        if (32 !== buf.length) {\n            console.log(\n                `WARN: Expecting 32 bytes, instead got ${\n                    buf.length\n                }, stack trace:`,\n                new Error().stack\n            );\n        }\n        if (buf.length === 0) {\n            throw new Error(\"Empty buffer\");\n        }\n        return new PrivateKey(BigInteger.fromBuffer(buf));\n    }\n\n    /** @arg {string} seed - any length string.  This is private, the same seed produces the same private key every time.  */\n    static fromSeed(seed) {\n        // generate_private_key\n        if (!(typeof seed === \"string\")) {\n            throw new Error(\"seed must be of type string\");\n        }\n        return PrivateKey.fromBuffer(sha256(seed));\n    }\n\n    /** @return {string} Wallet Import Format (still a secret, Not encrypted) */\n    static fromWif(_private_wif) {\n        var private_wif = Buffer.from(decode(_private_wif));\n        var version = private_wif.readUInt8(0);\n        assert.equal(\n            0x80,\n            version,\n            `Expected version ${0x80}, instead got ${version}`\n        );\n        // checksum includes the version\n        var private_key = private_wif.slice(0, -4);\n        var checksum = private_wif.slice(-4);\n        var new_checksum = sha256(private_key);\n        new_checksum = sha256(new_checksum);\n        new_checksum = new_checksum.slice(0, 4);\n        var isEqual = deepEqual(checksum, new_checksum); //, 'Invalid checksum'\n        if (!isEqual) {\n            throw new Error(\"Checksum did not match\");\n        }\n        private_key = private_key.slice(1);\n        return PrivateKey.fromBuffer(private_key);\n    }\n\n    toWif() {\n        var private_key = this.toBuffer();\n        // checksum includes the version\n        private_key = Buffer.concat([Buffer.from([0x80]), private_key]);\n        var checksum = sha256(private_key);\n        checksum = sha256(checksum);\n        checksum = checksum.slice(0, 4);\n        var private_wif = Buffer.concat([private_key, checksum]);\n        return encode(private_wif);\n    }\n\n    /**\n        @return {Point}\n    */\n    toPublicKeyPoint() {\n        return secp256k1.G.multiply(this.d);\n    }\n\n    toPublicKey() {\n        if (this.public_key) {\n            return this.public_key;\n        }\n        return (this.public_key = PublicKey.fromPoint(this.toPublicKeyPoint()));\n    }\n\n    toBuffer() {\n        return this.d.toBuffer(32);\n    }\n\n    /** ECIES */\n    get_shared_secret(public_key, legacy = false) {\n        public_key = toPublic(public_key);\n        let KB = public_key.toUncompressed().toBuffer();\n        let KBP = Point.fromAffine(\n            secp256k1,\n            BigInteger.fromBuffer(KB.slice(1, 33)), // x\n            BigInteger.fromBuffer(KB.slice(33, 65)) // y\n        );\n        let r = this.toBuffer();\n        let P = KBP.multiply(BigInteger.fromBuffer(r));\n        let S = P.affineX.toBuffer({size: 32});\n        /*\n        the input to sha512 must be exactly 32-bytes, to match the c++ implementation\n        of get_shared_secret.  Right now S will be shorter if the most significant\n        byte(s) is zero.  Pad it back to the full 32-bytes\n        */\n        if (!legacy && S.length < 32) {\n            let pad = Buffer.alloc(32 - S.length).fill(0);\n            S = Buffer.concat([pad, S]);\n        }\n\n        // SHA512 used in ECIES\n        return sha512(S);\n    }\n\n    // /** ECIES (does not always match the Point.fromAffine version above) */\n    // get_shared_secret(public_key){\n    //     public_key = toPublic(public_key)\n    //     var P = public_key.Q.multiply( this.d );\n    //     var S = P.affineX.toBuffer({size: 32});\n    //     // ECIES, adds an extra sha512\n    //     return sha512(S);\n    // }\n\n    /** @throws {Error} - overflow of the key could not be derived */\n    child(offset) {\n        offset = Buffer.concat([this.toPublicKey().toBuffer(), offset]);\n        offset = sha256(offset);\n        let c = BigInteger.fromBuffer(offset);\n\n        if (c.compareTo(n) >= 0)\n            throw new Error(\"Child offset went out of bounds, try again\");\n\n        let derived = this.d.add(c); //.mod(n)\n\n        if (derived.signum() === 0)\n            throw new Error(\n                \"Child offset derived to an invalid key, try again\"\n            );\n\n        return new PrivateKey(derived);\n    }\n\n    /* <helper_functions> */\n\n    toByteBuffer() {\n        var b = new ByteBuffer(\n            ByteBuffer.DEFAULT_CAPACITY,\n            ByteBuffer.LITTLE_ENDIAN\n        );\n        this.appendByteBuffer(b);\n        return b.copy(0, b.offset);\n    }\n\n    static fromHex(hex) {\n        return PrivateKey.fromBuffer(new Buffer(hex, \"hex\"));\n    }\n\n    toHex() {\n        return this.toBuffer().toString(\"hex\");\n    }\n\n    /* </helper_functions> */\n}\n\nexport default PrivateKey;\n\nlet toPublic = data =>\n    data == null ? data : data.Q ? data : PublicKey.fromStringOrThrow(data);\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/PrivateKey.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 251,
    "kind": "variable",
    "name": "secp256k1",
    "memberof": "lib/ecc/src/PrivateKey.js",
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~secp256k1",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/PrivateKey.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 252,
    "kind": "variable",
    "name": "n",
    "memberof": "lib/ecc/src/PrivateKey.js",
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~n",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/PrivateKey.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 253,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/ecc/src/PrivateKey.js",
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/PrivateKey.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 254,
    "kind": "function",
    "name": "toPublic",
    "memberof": "lib/ecc/src/PrivateKey.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~toPublic",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/PrivateKey.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 179,
    "undocument": true,
    "params": [
      {
        "name": "data",
        "types": [
          "*"
        ]
      }
    ],
    "return": null,
    "ignore": true
  },
  {
    "__docId__": 255,
    "kind": "class",
    "name": "PrivateKey",
    "memberof": "lib/ecc/src/PrivateKey.js",
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/PrivateKey.js",
    "importStyle": "PrivateKey",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 256,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#constructor",
    "access": "private",
    "description": "",
    "lineNumber": 18,
    "params": []
  },
  {
    "__docId__": 257,
    "kind": "member",
    "name": "d",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#d",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 258,
    "kind": "method",
    "name": "fromBuffer",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey.fromBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "params": [
      {
        "name": "buf",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 259,
    "kind": "method",
    "name": "fromSeed",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey.fromSeed",
    "access": "public",
    "description": null,
    "lineNumber": 41,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} seed - any length string.  This is private, the same seed produces the same private key every time."
      }
    ],
    "params": [
      {
        "name": "seed",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 260,
    "kind": "method",
    "name": "fromWif",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey.fromWif",
    "access": "public",
    "description": null,
    "lineNumber": 50,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": "Wallet Import Format (still a secret, Not encrypted)"
    },
    "params": [
      {
        "name": "_private_wif",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 261,
    "kind": "method",
    "name": "toWif",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#toWif",
    "access": "public",
    "description": null,
    "lineNumber": 72,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 262,
    "kind": "method",
    "name": "toPublicKeyPoint",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#toPublicKeyPoint",
    "access": "public",
    "description": "",
    "lineNumber": 86,
    "return": {
      "nullable": null,
      "types": [
        "Point"
      ],
      "spread": false,
      "description": ""
    },
    "params": []
  },
  {
    "__docId__": 263,
    "kind": "method",
    "name": "toPublicKey",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#toPublicKey",
    "access": "public",
    "description": null,
    "lineNumber": 90,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 264,
    "kind": "method",
    "name": "toBuffer",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#toBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 97,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 265,
    "kind": "method",
    "name": "get_shared_secret",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#get_shared_secret",
    "access": "public",
    "description": "ECIES",
    "lineNumber": 102,
    "params": [
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "legacy",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 266,
    "kind": "method",
    "name": "child",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#child",
    "access": "public",
    "description": null,
    "lineNumber": 137,
    "throws": [
      {
        "types": [
          "Error"
        ],
        "description": "overflow of the key could not be derived"
      }
    ],
    "params": [
      {
        "name": "offset",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 267,
    "kind": "method",
    "name": "toByteBuffer",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#toByteBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 157,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 268,
    "kind": "method",
    "name": "fromHex",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey.fromHex",
    "access": "public",
    "description": null,
    "lineNumber": 166,
    "undocument": true,
    "params": [
      {
        "name": "hex",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 269,
    "kind": "method",
    "name": "toHex",
    "memberof": "lib/ecc/src/PrivateKey.js~PrivateKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PrivateKey.js~PrivateKey#toHex",
    "access": "public",
    "description": null,
    "lineNumber": 170,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 270,
    "kind": "file",
    "name": "lib/ecc/src/PublicKey.js",
    "content": "import BigInteger from \"bigi\";\nimport {Point, getCurveByName} from \"ecurve\";\nconst secp256k1 = getCurveByName(\"secp256k1\");\nimport {encode, decode} from \"bs58\";\nimport {sha256, sha512, ripemd160} from \"./hash\";\nimport {ChainConfig} from \"bitsharesjs-ws\";\nimport assert from \"assert\";\nimport deepEqual from \"deep-equal\";\nconst Buffer = require(\"safe-buffer\").Buffer;\nconst {G, n} = secp256k1;\n\nclass PublicKey {\n    /** @param {Point} public key */\n    constructor(Q) {\n        this.Q = Q;\n    }\n\n    static fromBinary(bin) {\n        return PublicKey.fromBuffer(Buffer.from(bin, \"binary\"));\n    }\n\n    static fromBuffer(buffer) {\n        if (\n            buffer.toString(\"hex\") ===\n            \"000000000000000000000000000000000000000000000000000000000000000000\"\n        )\n            return new PublicKey(null);\n        return new PublicKey(Point.decodeFrom(secp256k1, buffer));\n    }\n\n    toBuffer(compressed = this.Q ? this.Q.compressed : null) {\n        if (this.Q === null)\n            return Buffer.from(\n                \"000000000000000000000000000000000000000000000000000000000000000000\",\n                \"hex\"\n            );\n        return this.Q.getEncoded(compressed);\n    }\n\n    static fromPoint(point) {\n        return new PublicKey(point);\n    }\n\n    toUncompressed() {\n        var buf = this.Q.getEncoded(false);\n        var point = Point.decodeFrom(secp256k1, buf);\n        return PublicKey.fromPoint(point);\n    }\n\n    /** bts::blockchain::address (unique but not a full public key) */\n    toBlockchainAddress() {\n        var pub_buf = this.toBuffer();\n        var pub_sha = sha512(pub_buf);\n        return ripemd160(pub_sha);\n    }\n\n    /** Alias for {@link toPublicKeyString} */\n    toString(address_prefix = ChainConfig.address_prefix) {\n        return this.toPublicKeyString(address_prefix);\n    }\n\n    /**\n        Full public key\n        {return} string\n    */\n    toPublicKeyString(address_prefix = ChainConfig.address_prefix) {\n        var pub_buf = this.toBuffer();\n        var checksum = ripemd160(pub_buf);\n        var addy = Buffer.concat([pub_buf, checksum.slice(0, 4)]);\n        return address_prefix + encode(addy);\n    }\n\n    /**\n        @arg {string} public_key - like GPHXyz...\n        @arg {string} address_prefix - like GPH\n        @return PublicKey or `null` (if the public_key string is invalid)\n    */\n    static fromPublicKeyString(\n        public_key,\n        address_prefix = ChainConfig.address_prefix\n    ) {\n        try {\n            return PublicKey.fromStringOrThrow(public_key, address_prefix);\n        } catch (e) {\n            return null;\n        }\n    }\n\n    /**\n        @arg {string} public_key - like GPHXyz...\n        @arg {string} address_prefix - like GPH\n        @throws {Error} if public key is invalid\n        @return PublicKey\n    */\n    static fromStringOrThrow(\n        public_key,\n        address_prefix = ChainConfig.address_prefix\n    ) {\n        if (public_key.Q === null)\n            public_key =\n                address_prefix + \"1111111111111111111111111111111114T1Anm\"; // null key\n        var prefix = public_key.slice(0, address_prefix.length);\n        assert.equal(\n            address_prefix,\n            prefix,\n            `Expecting key to begin with ${address_prefix}, instead got ${prefix}`\n        );\n        public_key = public_key.slice(address_prefix.length);\n\n        public_key = Buffer.from(decode(public_key), \"binary\");\n        var checksum = public_key.slice(-4);\n        public_key = public_key.slice(0, -4);\n        var new_checksum = ripemd160(public_key);\n        new_checksum = new_checksum.slice(0, 4);\n        var isEqual = deepEqual(checksum, new_checksum); //, 'Invalid checksum'\n        if (!isEqual) {\n            throw new Error(\"Checksum did not match\");\n        }\n        return PublicKey.fromBuffer(public_key);\n    }\n\n    toAddressString(address_prefix = ChainConfig.address_prefix) {\n        var pub_buf = this.toBuffer();\n        var pub_sha = sha512(pub_buf);\n        var addy = ripemd160(pub_sha);\n        var checksum = ripemd160(addy);\n        addy = Buffer.concat([addy, checksum.slice(0, 4)]);\n        return address_prefix + encode(addy);\n    }\n\n    toPtsAddy() {\n        var pub_buf = this.toBuffer();\n        var pub_sha = sha256(pub_buf);\n        var addy = ripemd160(pub_sha);\n        addy = Buffer.concat([Buffer.from([0x38]), addy]); //version 56(decimal)\n\n        var checksum = sha256(addy);\n        checksum = sha256(checksum);\n\n        addy = Buffer.concat([addy, checksum.slice(0, 4)]);\n        return encode(addy);\n    }\n\n    child(offset) {\n        assert(Buffer.isBuffer(offset), \"Buffer required: offset\");\n        assert.equal(offset.length, 32, \"offset length\");\n\n        offset = Buffer.concat([this.toBuffer(), offset]);\n        offset = sha256(offset);\n\n        let c = BigInteger.fromBuffer(offset);\n\n        if (c.compareTo(n) >= 0)\n            throw new Error(\"Child offset went out of bounds, try again\");\n\n        let cG = G.multiply(c);\n        let Qprime = this.Q.add(cG);\n\n        if (secp256k1.isInfinity(Qprime))\n            throw new Error(\n                \"Child offset derived to an invalid key, try again\"\n            );\n\n        return PublicKey.fromPoint(Qprime);\n    }\n\n    /* <HEX> */\n\n    toByteBuffer() {\n        var b = new ByteBuffer(\n            ByteBuffer.DEFAULT_CAPACITY,\n            ByteBuffer.LITTLE_ENDIAN\n        );\n        this.appendByteBuffer(b);\n        return b.copy(0, b.offset);\n    }\n\n    static fromHex(hex) {\n        return PublicKey.fromBuffer(Buffer.from(hex, \"hex\"));\n    }\n\n    toHex() {\n        return this.toBuffer().toString(\"hex\");\n    }\n\n    static fromPublicKeyStringHex(hex) {\n        return PublicKey.fromPublicKeyString(Buffer.from(hex, \"hex\"));\n    }\n\n    /* </HEX> */\n}\n\nexport default PublicKey;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/PublicKey.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 271,
    "kind": "variable",
    "name": "secp256k1",
    "memberof": "lib/ecc/src/PublicKey.js",
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~secp256k1",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/PublicKey.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 272,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/ecc/src/PublicKey.js",
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/PublicKey.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 273,
    "kind": "variable",
    "name": "G",
    "memberof": "lib/ecc/src/PublicKey.js",
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~G",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/PublicKey.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 274,
    "kind": "class",
    "name": "PublicKey",
    "memberof": "lib/ecc/src/PublicKey.js",
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/PublicKey.js",
    "importStyle": "PublicKey",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 275,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "public",
        "description": "key"
      }
    ]
  },
  {
    "__docId__": 276,
    "kind": "member",
    "name": "Q",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#Q",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 277,
    "kind": "method",
    "name": "fromBinary",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey.fromBinary",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "params": [
      {
        "name": "bin",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 278,
    "kind": "method",
    "name": "fromBuffer",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey.fromBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "params": [
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 279,
    "kind": "method",
    "name": "toBuffer",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 31,
    "undocument": true,
    "params": [
      {
        "name": "compressed",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 280,
    "kind": "method",
    "name": "fromPoint",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey.fromPoint",
    "access": "public",
    "description": null,
    "lineNumber": 40,
    "undocument": true,
    "params": [
      {
        "name": "point",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 281,
    "kind": "method",
    "name": "toUncompressed",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toUncompressed",
    "access": "public",
    "description": null,
    "lineNumber": 44,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 282,
    "kind": "method",
    "name": "toBlockchainAddress",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toBlockchainAddress",
    "access": "public",
    "description": "bts::blockchain::address (unique but not a full public key)",
    "lineNumber": 51,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 283,
    "kind": "method",
    "name": "toString",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toString",
    "access": "public",
    "description": "Alias for {@link toPublicKeyString}",
    "lineNumber": 58,
    "params": [
      {
        "name": "address_prefix",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 284,
    "kind": "method",
    "name": "toPublicKeyString",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toPublicKeyString",
    "access": "public",
    "description": "Full public key\n{return} string",
    "lineNumber": 66,
    "params": [
      {
        "name": "address_prefix",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 285,
    "kind": "method",
    "name": "fromPublicKeyString",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey.fromPublicKeyString",
    "access": "public",
    "description": "",
    "lineNumber": 78,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} public_key - like GPHXyz..."
      },
      {
        "tagName": "@arg",
        "tagValue": "{string} address_prefix - like GPH"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "PublicKey or `null` (if the public_key string is invalid)"
    },
    "params": [
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "address_prefix",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 286,
    "kind": "method",
    "name": "fromStringOrThrow",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey.fromStringOrThrow",
    "access": "public",
    "description": "",
    "lineNumber": 95,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} public_key - like GPHXyz..."
      },
      {
        "tagName": "@arg",
        "tagValue": "{string} address_prefix - like GPH"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "PublicKey"
    },
    "throws": [
      {
        "types": [
          "Error"
        ],
        "description": "if public key is invalid"
      }
    ],
    "params": [
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "address_prefix",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 287,
    "kind": "method",
    "name": "toAddressString",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toAddressString",
    "access": "public",
    "description": null,
    "lineNumber": 122,
    "undocument": true,
    "params": [
      {
        "name": "address_prefix",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 288,
    "kind": "method",
    "name": "toPtsAddy",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toPtsAddy",
    "access": "public",
    "description": null,
    "lineNumber": 131,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 289,
    "kind": "method",
    "name": "child",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#child",
    "access": "public",
    "description": null,
    "lineNumber": 144,
    "undocument": true,
    "params": [
      {
        "name": "offset",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 290,
    "kind": "method",
    "name": "toByteBuffer",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toByteBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 169,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 291,
    "kind": "method",
    "name": "fromHex",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey.fromHex",
    "access": "public",
    "description": null,
    "lineNumber": 178,
    "undocument": true,
    "params": [
      {
        "name": "hex",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 292,
    "kind": "method",
    "name": "toHex",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey#toHex",
    "access": "public",
    "description": null,
    "lineNumber": 182,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 293,
    "kind": "method",
    "name": "fromPublicKeyStringHex",
    "memberof": "lib/ecc/src/PublicKey.js~PublicKey",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/PublicKey.js~PublicKey.fromPublicKeyStringHex",
    "access": "public",
    "description": null,
    "lineNumber": 186,
    "undocument": true,
    "params": [
      {
        "name": "hex",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 294,
    "kind": "file",
    "name": "lib/ecc/src/address.js",
    "content": "import assert from \"assert\";\nimport {ChainConfig} from \"bitsharesjs-ws\";\nimport {sha256, sha512, ripemd160} from \"./hash\";\nimport {encode, decode} from \"bs58\";\nimport deepEqual from \"deep-equal\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\n/** Addresses are shortened non-reversable hashes of a public key.  The full PublicKey is preferred.\n */\nclass Address {\n    constructor(addy) {\n        this.addy = addy;\n    }\n\n    static fromBuffer(buffer) {\n        var _hash = sha512(buffer);\n        var addy = ripemd160(_hash);\n        return new Address(addy);\n    }\n\n    static fromString(string, address_prefix = ChainConfig.address_prefix) {\n        var prefix = string.slice(0, address_prefix.length);\n        assert.equal(\n            address_prefix,\n            prefix,\n            `Expecting key to begin with ${address_prefix}, instead got ${prefix}`\n        );\n        var addy = string.slice(address_prefix.length);\n        addy = new Buffer(decode(addy), \"binary\");\n        var checksum = addy.slice(-4);\n        addy = addy.slice(0, -4);\n        var new_checksum = ripemd160(addy);\n        new_checksum = new_checksum.slice(0, 4);\n        var isEqual = deepEqual(checksum, new_checksum); //, 'Invalid checksum'\n        if (!isEqual) {\n            throw new Error(\"Checksum did not match\");\n        }\n        return new Address(addy);\n    }\n\n    /** @return Address - Compressed PTS format (by default) */\n    static fromPublic(public_key, compressed = true, version = 56) {\n        var sha2 = sha256(public_key.toBuffer(compressed));\n        var rep = ripemd160(sha2);\n        var versionBuffer = Buffer.alloc(1);\n        versionBuffer.writeUInt8(0xff & version, 0);\n        var addr = Buffer.concat([versionBuffer, rep]);\n        var check = sha256(addr);\n        check = sha256(check);\n        var buffer = Buffer.concat([addr, check.slice(0, 4)]);\n        return new Address(ripemd160(buffer));\n    }\n\n    toBuffer() {\n        return this.addy;\n    }\n\n    toString(address_prefix = ChainConfig.address_prefix) {\n        var checksum = ripemd160(this.addy);\n        var addy = Buffer.concat([this.addy, checksum.slice(0, 4)]);\n        return address_prefix + encode(addy);\n    }\n}\n\nexport default Address;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/address.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 295,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/ecc/src/address.js",
    "static": true,
    "longname": "lib/ecc/src/address.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/address.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 296,
    "kind": "class",
    "name": "Address",
    "memberof": "lib/ecc/src/address.js",
    "static": true,
    "longname": "lib/ecc/src/address.js~Address",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/address.js",
    "importStyle": "Address",
    "description": "Addresses are shortened non-reversable hashes of a public key.  The full PublicKey is preferred.",
    "lineNumber": 10,
    "interface": false
  },
  {
    "__docId__": 297,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/ecc/src/address.js~Address",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/address.js~Address#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true
  },
  {
    "__docId__": 298,
    "kind": "member",
    "name": "addy",
    "memberof": "lib/ecc/src/address.js~Address",
    "static": false,
    "longname": "lib/ecc/src/address.js~Address#addy",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 299,
    "kind": "method",
    "name": "fromBuffer",
    "memberof": "lib/ecc/src/address.js~Address",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/address.js~Address.fromBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "params": [
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 300,
    "kind": "method",
    "name": "fromString",
    "memberof": "lib/ecc/src/address.js~Address",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/address.js~Address.fromString",
    "access": "public",
    "description": null,
    "lineNumber": 21,
    "undocument": true,
    "params": [
      {
        "name": "string",
        "types": [
          "*"
        ]
      },
      {
        "name": "address_prefix",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 301,
    "kind": "method",
    "name": "fromPublic",
    "memberof": "lib/ecc/src/address.js~Address",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/address.js~Address.fromPublic",
    "access": "public",
    "description": null,
    "lineNumber": 42,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "Address - Compressed PTS format (by default)"
    },
    "params": [
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "compressed",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      },
      {
        "name": "version",
        "optional": true,
        "types": [
          "number"
        ],
        "defaultRaw": 56,
        "defaultValue": "56"
      }
    ]
  },
  {
    "__docId__": 302,
    "kind": "method",
    "name": "toBuffer",
    "memberof": "lib/ecc/src/address.js~Address",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/address.js~Address#toBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 54,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 303,
    "kind": "method",
    "name": "toString",
    "memberof": "lib/ecc/src/address.js~Address",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/address.js~Address#toString",
    "access": "public",
    "description": null,
    "lineNumber": 58,
    "undocument": true,
    "params": [
      {
        "name": "address_prefix",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 304,
    "kind": "file",
    "name": "lib/ecc/src/aes.js",
    "content": "// https://code.google.com/p/crypto-js\nimport AES from \"crypto-js/aes\";\nimport encHex from \"crypto-js/enc-hex\";\nimport encBase64 from \"crypto-js/enc-base64\";\nimport assert from \"assert\";\nimport {sha256, sha512} from \"./hash\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\n/** Provides symetric encrypt and decrypt via AES. */\nclass Aes {\n    /** @private */\n    constructor(iv, key) {\n        (this.iv = iv), (this.key = key);\n    }\n\n    /** This is an excellent way to ensure that all references to Aes can not operate anymore (example: a wallet becomes locked).  An application should ensure there is only one Aes object instance for a given secret `seed`. */\n    clear() {\n        return (this.iv = this.key = undefined);\n    }\n\n    /** @arg {string} seed - secret seed may be used to encrypt or decrypt. */\n    static fromSeed(seed) {\n        if (seed === undefined) {\n            throw new Error(\"seed is required\");\n        }\n        var _hash = sha512(seed);\n        _hash = _hash.toString(\"hex\");\n        // DEBUG console.log('... fromSeed _hash',_hash)\n        return Aes.fromSha512(_hash);\n    }\n\n    /** @arg {string} hash - A 128 byte hex string, typically one would call {@link fromSeed} instead. */\n    static fromSha512(hash) {\n        assert.equal(\n            hash.length,\n            128,\n            `A Sha512 in HEX should be 128 characters long, instead got ${\n                hash.length\n            }`\n        );\n        var iv = encHex.parse(hash.substring(64, 96));\n        var key = encHex.parse(hash.substring(0, 64));\n        return new Aes(iv, key);\n    }\n\n    static fromBuffer(buf) {\n        assert(Buffer.isBuffer(buf), \"Expecting Buffer\");\n        assert.equal(\n            buf.length,\n            64,\n            `A Sha512 Buffer should be 64 characters long, instead got ${\n                buf.length\n            }`\n        );\n        return Aes.fromSha512(buf.toString(\"hex\"));\n    }\n    /**\n        @throws {Error} - \"Invalid Key, ...\"\n        @arg {PrivateKey} private_key - required and used for decryption\n        @arg {PublicKey} public_key - required and used to calcualte the shared secret\n        @arg {string} [nonce = \"\"] optional but should always be provided and be unique when re-using the same private/public keys more than once.  This nonce is not a secret.\n        @arg {string|Buffer} message - Encrypted message containing a checksum\n        @return {Buffer}\n    */\n    static decrypt_with_checksum(\n        private_key,\n        public_key,\n        nonce,\n        message,\n        legacy = false\n    ) {\n        // Warning: Do not put `nonce = \"\"` in the arguments, in es6 this will not convert \"null\" into an emtpy string\n        if (nonce == null)\n            // null or undefined\n            nonce = \"\";\n\n        if (!Buffer.isBuffer(message)) {\n            message = new Buffer(message, \"hex\");\n        }\n\n        var S = private_key.get_shared_secret(public_key, legacy);\n        // D E B U G\n        // console.log('decrypt_with_checksum', {\n        //     priv_to_pub: private_key.toPublicKey().toString(),\n        //     pub: public_key.toPublicKeyString(),\n        //     nonce: nonce,\n        //     message: message.length,\n        //     S: S.toString('hex')\n        // })\n\n        var aes = Aes.fromSeed(\n            Buffer.concat([\n                // A null or empty string nonce will not effect the hash\n                Buffer.from(\"\" + nonce),\n                Buffer.from(S.toString(\"hex\"))\n            ])\n        );\n\n        var planebuffer = aes.decrypt(message);\n        if (!(planebuffer.length >= 4)) {\n            throw new Error(\"Invalid key, could not decrypt message(1)\");\n        }\n\n        // DEBUG console.log('... planebuffer',planebuffer)\n        var checksum = planebuffer.slice(0, 4);\n        var plaintext = planebuffer.slice(4);\n\n        // console.log('... checksum',checksum.toString('hex'))\n        // console.log('... plaintext',plaintext.toString())\n\n        var new_checksum = sha256(plaintext);\n        new_checksum = new_checksum.slice(0, 4);\n        new_checksum = new_checksum.toString(\"hex\");\n\n        if (!(checksum.toString(\"hex\") === new_checksum)) {\n            throw new Error(\"Invalid key, could not decrypt message(2)\");\n        }\n\n        return plaintext;\n    }\n\n    /** Identical to {@link decrypt_with_checksum} but used to encrypt.  Should not throw an error.\n        @return {Buffer} message - Encrypted message which includes a checksum\n    */\n    static encrypt_with_checksum(private_key, public_key, nonce, message) {\n        // Warning: Do not put `nonce = \"\"` in the arguments, in es6 this will not convert \"null\" into an emtpy string\n\n        if (nonce == null)\n            // null or undefined\n            nonce = \"\";\n\n        if (!Buffer.isBuffer(message)) {\n            message = new Buffer(message, \"binary\");\n        }\n\n        var S = private_key.get_shared_secret(public_key);\n\n        // D E B U G\n        // console.log('encrypt_with_checksum', {\n        //     priv_to_pub: private_key.toPublicKey().toString()\n        //     pub: public_key.toPublicKeyString()\n        //     nonce: nonce\n        //     message: message.length\n        //     S: S.toString('hex')\n        // })\n\n        var aes = Aes.fromSeed(\n            Buffer.concat([\n                // A null or empty string nonce will not effect the hash\n                Buffer.from(\"\" + nonce),\n                Buffer.from(S.toString(\"hex\"))\n            ])\n        );\n        // DEBUG console.log('... S',S.toString('hex'))\n        var checksum = sha256(message).slice(0, 4);\n        var payload = Buffer.concat([checksum, message]);\n        // DEBUG console.log('... payload',payload.toString())\n        return aes.encrypt(payload);\n    }\n\n    /** @private */\n    _decrypt_word_array(cipher) {\n        // https://code.google.com/p/crypto-js/#Custom_Key_and_IV\n        // see wallet_records.cpp master_key::decrypt_key\n        return AES.decrypt({ciphertext: cipher, salt: null}, this.key, {\n            iv: this.iv\n        });\n    }\n\n    /** @private */\n    _encrypt_word_array(plaintext) {\n        //https://code.google.com/p/crypto-js/issues/detail?id=85\n        var cipher = AES.encrypt(plaintext, this.key, {iv: this.iv});\n        return encBase64.parse(cipher.toString());\n    }\n\n    /** This method does not use a checksum, the returned data must be validated some other way.\n        @arg {string} ciphertext\n        @return {Buffer} binary\n    */\n    decrypt(ciphertext) {\n        if (typeof ciphertext === \"string\") {\n            ciphertext = new Buffer(ciphertext, \"binary\");\n        }\n        if (!Buffer.isBuffer(ciphertext)) {\n            throw new Error(\"buffer required\");\n        }\n        assert(ciphertext, \"Missing cipher text\");\n        // hex is the only common format\n        var hex = this.decryptHex(ciphertext.toString(\"hex\"));\n        return new Buffer(hex, \"hex\");\n    }\n\n    /** This method does not use a checksum, the returned data must be validated some other way.\n        @arg {string} plaintext\n        @return {Buffer} binary\n    */\n    encrypt(plaintext) {\n        if (typeof plaintext === \"string\") {\n            plaintext = new Buffer(plaintext, \"binary\");\n        }\n        if (!Buffer.isBuffer(plaintext)) {\n            throw new Error(\"buffer required\");\n        }\n        //assert plaintext, \"Missing plain text\"\n        // hex is the only common format\n        var hex = this.encryptHex(plaintext.toString(\"hex\"));\n        return new Buffer(hex, \"hex\");\n    }\n\n    /** This method does not use a checksum, the returned data must be validated some other way.\n        @arg {string|Buffer} plaintext\n        @return {string} hex\n    */\n    encryptToHex(plaintext) {\n        if (typeof plaintext === \"string\") {\n            plaintext = new Buffer(plaintext, \"binary\");\n        }\n        if (!Buffer.isBuffer(plaintext)) {\n            throw new Error(\"buffer required\");\n        }\n        //assert plaintext, \"Missing plain text\"\n        // hex is the only common format\n        return this.encryptHex(plaintext.toString(\"hex\"));\n    }\n\n    /** This method does not use a checksum, the returned data must be validated some other way.\n        @arg {string} cipher - hex\n        @return {string} binary (could easily be readable text)\n    */\n    decryptHex(cipher) {\n        assert(cipher, \"Missing cipher text\");\n        // Convert data into word arrays (used by Crypto)\n        var cipher_array = encHex.parse(cipher);\n        var plainwords = this._decrypt_word_array(cipher_array);\n        return encHex.stringify(plainwords);\n    }\n\n    /** This method does not use a checksum, the returned data must be validated some other way.\n        @arg {string} cipher - hex\n        @return {Buffer} encoded as specified by the parameter\n    */\n    decryptHexToBuffer(cipher) {\n        assert(cipher, \"Missing cipher text\");\n        // Convert data into word arrays (used by Crypto)\n        var cipher_array = encHex.parse(cipher);\n        var plainwords = this._decrypt_word_array(cipher_array);\n        var plainhex = encHex.stringify(plainwords);\n        return new Buffer(plainhex, \"hex\");\n    }\n\n    /** This method does not use a checksum, the returned data must be validated some other way.\n        @arg {string} cipher - hex\n        @arg {string} [encoding = 'binary'] - a valid Buffer encoding\n        @return {String} encoded as specified by the parameter\n    */\n    decryptHexToText(cipher, encoding = \"binary\") {\n        return this.decryptHexToBuffer(cipher).toString(encoding);\n    }\n\n    /** This method does not use a checksum, the returned data must be validated some other way.\n        @arg {string} plainhex - hex format\n        @return {String} hex\n    */\n    encryptHex(plainhex) {\n        var plain_array = encHex.parse(plainhex);\n        var cipher_array = this._encrypt_word_array(plain_array);\n        return encHex.stringify(cipher_array);\n    }\n}\n\nexport default Aes;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/aes.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 305,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/ecc/src/aes.js",
    "static": true,
    "longname": "lib/ecc/src/aes.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/aes.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 306,
    "kind": "class",
    "name": "Aes",
    "memberof": "lib/ecc/src/aes.js",
    "static": true,
    "longname": "lib/ecc/src/aes.js~Aes",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/aes.js",
    "importStyle": "Aes",
    "description": "Provides symetric encrypt and decrypt via AES.",
    "lineNumber": 10,
    "interface": false
  },
  {
    "__docId__": 307,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#constructor",
    "access": "private",
    "description": null,
    "lineNumber": 12
  },
  {
    "__docId__": 308,
    "kind": "method",
    "name": "clear",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#clear",
    "access": "public",
    "description": "This is an excellent way to ensure that all references to Aes can not operate anymore (example: a wallet becomes locked).  An application should ensure there is only one Aes object instance for a given secret `seed`.",
    "lineNumber": 17,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 309,
    "kind": "method",
    "name": "fromSeed",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/aes.js~Aes.fromSeed",
    "access": "public",
    "description": null,
    "lineNumber": 22,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} seed - secret seed may be used to encrypt or decrypt."
      }
    ],
    "params": [
      {
        "name": "seed",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 310,
    "kind": "method",
    "name": "fromSha512",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/aes.js~Aes.fromSha512",
    "access": "public",
    "description": null,
    "lineNumber": 33,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} hash - A 128 byte hex string, typically one would call {@link fromSeed} instead."
      }
    ],
    "params": [
      {
        "name": "hash",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 311,
    "kind": "method",
    "name": "fromBuffer",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/aes.js~Aes.fromBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 46,
    "undocument": true,
    "params": [
      {
        "name": "buf",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 312,
    "kind": "method",
    "name": "decrypt_with_checksum",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/aes.js~Aes.decrypt_with_checksum",
    "access": "public",
    "description": "",
    "lineNumber": 65,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{PrivateKey} private_key - required and used for decryption"
      },
      {
        "tagName": "@arg",
        "tagValue": "{PublicKey} public_key - required and used to calcualte the shared secret"
      },
      {
        "tagName": "@arg",
        "tagValue": "{string} [nonce = \"\"] optional but should always be provided and be unique when re-using the same private/public keys more than once.  This nonce is not a secret."
      },
      {
        "tagName": "@arg",
        "tagValue": "{string|Buffer} message - Encrypted message containing a checksum"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Buffer"
      ],
      "spread": false,
      "description": ""
    },
    "throws": [
      {
        "types": [
          "Error"
        ],
        "description": "\"Invalid Key, ...\""
      }
    ],
    "params": [
      {
        "name": "private_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "nonce",
        "types": [
          "*"
        ]
      },
      {
        "name": "message",
        "types": [
          "*"
        ]
      },
      {
        "name": "legacy",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ]
  },
  {
    "__docId__": 313,
    "kind": "method",
    "name": "encrypt_with_checksum",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/aes.js~Aes.encrypt_with_checksum",
    "access": "public",
    "description": "Identical to {@link decrypt_with_checksum} but used to encrypt.  Should not throw an error.",
    "lineNumber": 125,
    "return": {
      "nullable": null,
      "types": [
        "Buffer"
      ],
      "spread": false,
      "description": "message - Encrypted message which includes a checksum"
    },
    "params": [
      {
        "name": "private_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      },
      {
        "name": "nonce",
        "types": [
          "*"
        ]
      },
      {
        "name": "message",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 314,
    "kind": "method",
    "name": "_decrypt_word_array",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#_decrypt_word_array",
    "access": "private",
    "description": null,
    "lineNumber": 162,
    "params": [
      {
        "name": "cipher",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 315,
    "kind": "method",
    "name": "_encrypt_word_array",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#_encrypt_word_array",
    "access": "private",
    "description": null,
    "lineNumber": 171,
    "params": [
      {
        "name": "plaintext",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 316,
    "kind": "method",
    "name": "decrypt",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#decrypt",
    "access": "public",
    "description": "This method does not use a checksum, the returned data must be validated some other way.",
    "lineNumber": 181,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} ciphertext"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Buffer"
      ],
      "spread": false,
      "description": "binary"
    },
    "params": [
      {
        "name": "ciphertext",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 317,
    "kind": "method",
    "name": "encrypt",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#encrypt",
    "access": "public",
    "description": "This method does not use a checksum, the returned data must be validated some other way.",
    "lineNumber": 198,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} plaintext"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Buffer"
      ],
      "spread": false,
      "description": "binary"
    },
    "params": [
      {
        "name": "plaintext",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 318,
    "kind": "method",
    "name": "encryptToHex",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#encryptToHex",
    "access": "public",
    "description": "This method does not use a checksum, the returned data must be validated some other way.",
    "lineNumber": 215,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string|Buffer} plaintext"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": "hex"
    },
    "params": [
      {
        "name": "plaintext",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 319,
    "kind": "method",
    "name": "decryptHex",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#decryptHex",
    "access": "public",
    "description": "This method does not use a checksum, the returned data must be validated some other way.",
    "lineNumber": 231,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} cipher - hex"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": "binary (could easily be readable text)"
    },
    "params": [
      {
        "name": "cipher",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 320,
    "kind": "method",
    "name": "decryptHexToBuffer",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#decryptHexToBuffer",
    "access": "public",
    "description": "This method does not use a checksum, the returned data must be validated some other way.",
    "lineNumber": 243,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} cipher - hex"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Buffer"
      ],
      "spread": false,
      "description": "encoded as specified by the parameter"
    },
    "params": [
      {
        "name": "cipher",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 321,
    "kind": "method",
    "name": "decryptHexToText",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#decryptHexToText",
    "access": "public",
    "description": "This method does not use a checksum, the returned data must be validated some other way.",
    "lineNumber": 257,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} cipher - hex"
      },
      {
        "tagName": "@arg",
        "tagValue": "{string} [encoding = 'binary'] - a valid Buffer encoding"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "String"
      ],
      "spread": false,
      "description": "encoded as specified by the parameter"
    },
    "params": [
      {
        "name": "cipher",
        "types": [
          "*"
        ]
      },
      {
        "name": "encoding",
        "optional": true,
        "types": [
          "string"
        ],
        "defaultRaw": "binary",
        "defaultValue": "binary"
      }
    ]
  },
  {
    "__docId__": 322,
    "kind": "method",
    "name": "encryptHex",
    "memberof": "lib/ecc/src/aes.js~Aes",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/aes.js~Aes#encryptHex",
    "access": "public",
    "description": "This method does not use a checksum, the returned data must be validated some other way.",
    "lineNumber": 265,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string} plainhex - hex format"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "String"
      ],
      "spread": false,
      "description": "hex"
    },
    "params": [
      {
        "name": "plainhex",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 323,
    "kind": "file",
    "name": "lib/ecc/src/ecdsa.js",
    "content": "import assert from \"assert\"; // from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa\nimport {sha256, HmacSHA256} from \"./hash\";\nimport enforceType from \"./enforce_types\";\n\nimport BigInteger from \"bigi\";\nimport ECSignature from \"./ecsignature\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\n// https://tools.ietf.org/html/rfc6979#section-3.2\nfunction deterministicGenerateK(curve, hash, d, checkSig, nonce) {\n    enforceType(\"Buffer\", hash);\n    enforceType(BigInteger, d);\n\n    if (nonce) {\n        hash = sha256(Buffer.concat([hash, Buffer.alloc(nonce)]));\n    }\n\n    // sanity check\n    assert.equal(hash.length, 32, \"Hash must be 256 bit\");\n\n    var x = d.toBuffer(32);\n    var k = Buffer.alloc(32);\n    var v = Buffer.alloc(32);\n\n    // Step B\n    v.fill(1);\n\n    // Step C\n    k.fill(0);\n\n    // Step D\n    k = HmacSHA256(Buffer.concat([v, new Buffer([0]), x, hash]), k);\n\n    // Step E\n    v = HmacSHA256(v, k);\n\n    // Step F\n    k = HmacSHA256(Buffer.concat([v, new Buffer([1]), x, hash]), k);\n\n    // Step G\n    v = HmacSHA256(v, k);\n\n    // Step H1/H2a, ignored as tlen === qlen (256 bit)\n    // Step H2b\n    v = HmacSHA256(v, k);\n\n    var T = BigInteger.fromBuffer(v);\n\n    // Step H3, repeat until T is within the interval [1, n - 1]\n    while (T.signum() <= 0 || T.compareTo(curve.n) >= 0 || !checkSig(T)) {\n        k = HmacSHA256(Buffer.concat([v, new Buffer([0])]), k);\n        v = HmacSHA256(v, k);\n\n        // Step H1/H2a, again, ignored as tlen === qlen (256 bit)\n        // Step H2b again\n        v = HmacSHA256(v, k);\n\n        T = BigInteger.fromBuffer(v);\n    }\n\n    return T;\n}\n\nfunction sign(curve, hash, d, nonce) {\n    const e = BigInteger.fromBuffer(hash);\n    const n = curve.n;\n    const G = curve.G;\n\n    let r, s;\n\n    deterministicGenerateK(\n        curve,\n        hash,\n        d,\n        function(k) {\n            // find canonically valid signature\n            let Q = G.multiply(k);\n\n            if (curve.isInfinity(Q)) return false;\n\n            r = Q.affineX.mod(n);\n            if (r.signum() === 0) return false;\n\n            s = k\n                .modInverse(n)\n                .multiply(e.add(d.multiply(r)))\n                .mod(n);\n            if (s.signum() === 0) return false;\n\n            return true;\n        },\n        nonce\n    );\n\n    let N_OVER_TWO = n.shiftRight(1);\n\n    // enforce low S values, see bip62: 'low s values in signatures'\n    if (s.compareTo(N_OVER_TWO) > 0) {\n        s = n.subtract(s);\n    }\n\n    return new ECSignature(r, s);\n}\n\nfunction verifyRaw(curve, e, signature, Q) {\n    var n = curve.n;\n    var G = curve.G;\n\n    var r = signature.r;\n    var s = signature.s;\n\n    // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]\n    if (r.signum() <= 0 || r.compareTo(n) >= 0) return false;\n    if (s.signum() <= 0 || s.compareTo(n) >= 0) return false;\n\n    // c = s^-1 mod n\n    var c = s.modInverse(n);\n\n    // 1.4.4 Compute u1 = es^−1 mod n\n    //               u2 = rs^−1 mod n\n    var u1 = e.multiply(c).mod(n);\n    var u2 = r.multiply(c).mod(n);\n\n    // 1.4.5 Compute R = (xR, yR) = u1G + u2Q\n    var R = G.multiplyTwo(u1, Q, u2);\n\n    // 1.4.5 (cont.) Enforce R is not at infinity\n    if (curve.isInfinity(R)) return false;\n\n    // 1.4.6 Convert the field element R.x to an integer\n    var xR = R.affineX;\n\n    // 1.4.7 Set v = xR mod n\n    var v = xR.mod(n);\n\n    // 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"\n    return v.equals(r);\n}\n\nfunction verify(curve, hash, signature, Q) {\n    // 1.4.2 H = Hash(M), already done by the user\n    // 1.4.3 e = H\n    var e = BigInteger.fromBuffer(hash);\n    return verifyRaw(curve, e, signature, Q);\n}\n\n/**\n * Recover a public key from a signature.\n *\n * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, \"Public\n * Key Recovery Operation\".\n *\n * http://www.secg.org/download/aid-780/sec1-v2.pdf\n */\nfunction recoverPubKey(curve, e, signature, i) {\n    assert.strictEqual(i & 3, i, \"Recovery param is more than two bits\");\n\n    var n = curve.n;\n    var G = curve.G;\n\n    var r = signature.r;\n    var s = signature.s;\n\n    assert(r.signum() > 0 && r.compareTo(n) < 0, \"Invalid r value\");\n    assert(s.signum() > 0 && s.compareTo(n) < 0, \"Invalid s value\");\n\n    // A set LSB signifies that the y-coordinate is odd\n    var isYOdd = i & 1;\n\n    // The more significant bit specifies whether we should use the\n    // first or second candidate key.\n    var isSecondKey = i >> 1;\n\n    // 1.1 Let x = r + jn\n    var x = isSecondKey ? r.add(n) : r;\n    var R = curve.pointFromX(isYOdd, x);\n\n    // 1.4 Check that nR is at infinity\n    var nR = R.multiply(n);\n    assert(curve.isInfinity(nR), \"nR is not a valid curve point\");\n\n    // Compute -e from e\n    var eNeg = e.negate().mod(n);\n\n    // 1.6.1 Compute Q = r^-1 (sR -  eG)\n    //               Q = r^-1 (sR + -eG)\n    var rInv = r.modInverse(n);\n\n    var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv);\n    curve.validate(Q);\n\n    return Q;\n}\n\n/**\n * Calculate pubkey extraction parameter.\n *\n * When extracting a pubkey from a signature, we have to\n * distinguish four different cases. Rather than putting this\n * burden on the verifier, Bitcoin includes a 2-bit value with the\n * signature.\n *\n * This function simply tries all four cases and returns the value\n * that resulted in a successful pubkey recovery.\n */\nfunction calcPubKeyRecoveryParam(curve, e, signature, Q) {\n    for (var i = 0; i < 4; i++) {\n        var Qprime = recoverPubKey(curve, e, signature, i);\n\n        // 1.6.2 Verify Q\n        if (Qprime.equals(Q)) {\n            return i;\n        }\n    }\n\n    throw new Error(\"Unable to find valid recovery factor\");\n}\n\nexport {\n    calcPubKeyRecoveryParam,\n    deterministicGenerateK,\n    recoverPubKey,\n    sign,\n    verify,\n    verifyRaw\n};\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/ecdsa.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 324,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/ecc/src/ecdsa.js",
    "static": true,
    "longname": "lib/ecc/src/ecdsa.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/ecdsa.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 325,
    "kind": "function",
    "name": "calcPubKeyRecoveryParam",
    "memberof": "lib/ecc/src/ecdsa.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecdsa.js~calcPubKeyRecoveryParam",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/ecdsa.js",
    "importStyle": "{calcPubKeyRecoveryParam}",
    "description": "Calculate pubkey extraction parameter.\n\nWhen extracting a pubkey from a signature, we have to\ndistinguish four different cases. Rather than putting this\nburden on the verifier, Bitcoin includes a 2-bit value with the\nsignature.\n\nThis function simply tries all four cases and returns the value\nthat resulted in a successful pubkey recovery.",
    "lineNumber": 206,
    "params": [
      {
        "name": "curve",
        "types": [
          "*"
        ]
      },
      {
        "name": "e",
        "types": [
          "*"
        ]
      },
      {
        "name": "signature",
        "types": [
          "*"
        ]
      },
      {
        "name": "Q",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 326,
    "kind": "function",
    "name": "deterministicGenerateK",
    "memberof": "lib/ecc/src/ecdsa.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecdsa.js~deterministicGenerateK",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/ecdsa.js",
    "importStyle": "{deterministicGenerateK}",
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "params": [
      {
        "name": "curve",
        "types": [
          "*"
        ]
      },
      {
        "name": "hash",
        "types": [
          "*"
        ]
      },
      {
        "name": "d",
        "types": [
          "*"
        ]
      },
      {
        "name": "checkSig",
        "types": [
          "*"
        ]
      },
      {
        "name": "nonce",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 327,
    "kind": "function",
    "name": "recoverPubKey",
    "memberof": "lib/ecc/src/ecdsa.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecdsa.js~recoverPubKey",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/ecdsa.js",
    "importStyle": "{recoverPubKey}",
    "description": "Recover a public key from a signature.\n\nSee SEC 1: Elliptic Curve Cryptography, section 4.1.6, \"Public\nKey Recovery Operation\".\n\nhttp://www.secg.org/download/aid-780/sec1-v2.pdf",
    "lineNumber": 155,
    "params": [
      {
        "name": "curve",
        "types": [
          "*"
        ]
      },
      {
        "name": "e",
        "types": [
          "*"
        ]
      },
      {
        "name": "signature",
        "types": [
          "*"
        ]
      },
      {
        "name": "i",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 328,
    "kind": "function",
    "name": "sign",
    "memberof": "lib/ecc/src/ecdsa.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecdsa.js~sign",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/ecdsa.js",
    "importStyle": "{sign}",
    "description": null,
    "lineNumber": 64,
    "undocument": true,
    "params": [
      {
        "name": "curve",
        "types": [
          "*"
        ]
      },
      {
        "name": "hash",
        "types": [
          "*"
        ]
      },
      {
        "name": "d",
        "types": [
          "*"
        ]
      },
      {
        "name": "nonce",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 329,
    "kind": "function",
    "name": "verify",
    "memberof": "lib/ecc/src/ecdsa.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecdsa.js~verify",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/ecdsa.js",
    "importStyle": "{verify}",
    "description": null,
    "lineNumber": 140,
    "undocument": true,
    "params": [
      {
        "name": "curve",
        "types": [
          "*"
        ]
      },
      {
        "name": "hash",
        "types": [
          "*"
        ]
      },
      {
        "name": "signature",
        "types": [
          "*"
        ]
      },
      {
        "name": "Q",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 330,
    "kind": "function",
    "name": "verifyRaw",
    "memberof": "lib/ecc/src/ecdsa.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecdsa.js~verifyRaw",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/ecdsa.js",
    "importStyle": "{verifyRaw}",
    "description": null,
    "lineNumber": 105,
    "undocument": true,
    "params": [
      {
        "name": "curve",
        "types": [
          "*"
        ]
      },
      {
        "name": "e",
        "types": [
          "*"
        ]
      },
      {
        "name": "signature",
        "types": [
          "*"
        ]
      },
      {
        "name": "Q",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 331,
    "kind": "file",
    "name": "lib/ecc/src/ecsignature.js",
    "content": "import assert from \"assert\"; // from https://github.com/bitcoinjs/bitcoinjs-lib\nimport enforceType from \"./enforce_types\";\nimport BigInteger from \"bigi\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\nfunction ECSignature(r, s) {\n    enforceType(BigInteger, r);\n    enforceType(BigInteger, s);\n\n    this.r = r;\n    this.s = s;\n}\n\n// Import operations\nECSignature.parseCompact = function(buffer) {\n    assert.equal(buffer.length, 65, \"Invalid signature length\");\n    var i = buffer.readUInt8(0) - 27;\n\n    // At most 3 bits\n    assert.equal(i, i & 7, \"Invalid signature parameter\");\n    var compressed = !!(i & 4);\n\n    // Recovery param only\n    i = i & 3;\n\n    var r = BigInteger.fromBuffer(buffer.slice(1, 33));\n    var s = BigInteger.fromBuffer(buffer.slice(33));\n\n    return {\n        compressed: compressed,\n        i: i,\n        signature: new ECSignature(r, s)\n    };\n};\n\nECSignature.fromDER = function(buffer) {\n    assert.equal(buffer.readUInt8(0), 0x30, \"Not a DER sequence\");\n    assert.equal(\n        buffer.readUInt8(1),\n        buffer.length - 2,\n        \"Invalid sequence length\"\n    );\n    assert.equal(buffer.readUInt8(2), 0x02, \"Expected a DER integer\");\n\n    var rLen = buffer.readUInt8(3);\n    assert(rLen > 0, \"R length is zero\");\n\n    var offset = 4 + rLen;\n    assert.equal(buffer.readUInt8(offset), 0x02, \"Expected a DER integer (2)\");\n\n    var sLen = buffer.readUInt8(offset + 1);\n    assert(sLen > 0, \"S length is zero\");\n\n    var rB = buffer.slice(4, offset);\n    var sB = buffer.slice(offset + 2);\n    offset += 2 + sLen;\n\n    if (rLen > 1 && rB.readUInt8(0) === 0x00) {\n        assert(rB.readUInt8(1) & 0x80, \"R value excessively padded\");\n    }\n\n    if (sLen > 1 && sB.readUInt8(0) === 0x00) {\n        assert(sB.readUInt8(1) & 0x80, \"S value excessively padded\");\n    }\n\n    assert.equal(offset, buffer.length, \"Invalid DER encoding\");\n    var r = BigInteger.fromDERInteger(rB);\n    var s = BigInteger.fromDERInteger(sB);\n\n    assert(r.signum() >= 0, \"R value is negative\");\n    assert(s.signum() >= 0, \"S value is negative\");\n\n    return new ECSignature(r, s);\n};\n\n// FIXME: 0x00, 0x04, 0x80 are SIGHASH_* boundary constants, importing Transaction causes a circular dependency\nECSignature.parseScriptSignature = function(buffer) {\n    var hashType = buffer.readUInt8(buffer.length - 1);\n    var hashTypeMod = hashType & ~0x80;\n\n    assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, \"Invalid hashType\");\n\n    return {\n        signature: ECSignature.fromDER(buffer.slice(0, -1)),\n        hashType: hashType\n    };\n};\n\n// Export operations\nECSignature.prototype.toCompact = function(i, compressed) {\n    if (compressed) i += 4;\n    i += 27;\n\n    var buffer = Buffer.alloc(65);\n    buffer.writeUInt8(i, 0);\n\n    this.r.toBuffer(32).copy(buffer, 1);\n    this.s.toBuffer(32).copy(buffer, 33);\n\n    return buffer;\n};\n\nECSignature.prototype.toDER = function() {\n    var rBa = this.r.toDERInteger();\n    var sBa = this.s.toDERInteger();\n\n    var sequence = [];\n\n    // INTEGER\n    sequence.push(0x02, rBa.length);\n    sequence = sequence.concat(rBa);\n\n    // INTEGER\n    sequence.push(0x02, sBa.length);\n    sequence = sequence.concat(sBa);\n\n    // SEQUENCE\n    sequence.unshift(0x30, sequence.length);\n\n    return Buffer.from(sequence);\n};\n\nECSignature.prototype.toScriptSignature = function(hashType) {\n    var hashTypeBuffer = Buffer.alloc(1);\n    hashTypeBuffer.writeUInt8(hashType, 0);\n\n    return Buffer.concat([this.toDER(), hashTypeBuffer]);\n};\n\nexport default ECSignature;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/ecsignature.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 332,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/ecc/src/ecsignature.js",
    "static": true,
    "longname": "lib/ecc/src/ecsignature.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/ecsignature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 333,
    "kind": "function",
    "name": "parseCompact",
    "memberof": "lib/ecc/src/ecsignature.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecsignature.js~parseCompact",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/ecsignature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "params": [
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"compressed\": *, \"i\": *, \"signature\": *}"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 334,
    "kind": "function",
    "name": "fromDER",
    "memberof": "lib/ecc/src/ecsignature.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecsignature.js~fromDER",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/ecsignature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "params": [
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 335,
    "kind": "function",
    "name": "parseScriptSignature",
    "memberof": "lib/ecc/src/ecsignature.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecsignature.js~parseScriptSignature",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/ecsignature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 77,
    "undocument": true,
    "params": [
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"signature\": *, \"hashType\": *}"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 336,
    "kind": "function",
    "name": "toCompact",
    "memberof": "lib/ecc/src/ecsignature.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecsignature.js~toCompact",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/ecsignature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 90,
    "undocument": true,
    "params": [
      {
        "name": "i",
        "types": [
          "*"
        ]
      },
      {
        "name": "compressed",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 337,
    "kind": "function",
    "name": "toDER",
    "memberof": "lib/ecc/src/ecsignature.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecsignature.js~toDER",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/ecsignature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 103,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 338,
    "kind": "function",
    "name": "toScriptSignature",
    "memberof": "lib/ecc/src/ecsignature.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecsignature.js~toScriptSignature",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/ecsignature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 123,
    "undocument": true,
    "params": [
      {
        "name": "hashType",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 339,
    "kind": "function",
    "name": "ECSignature",
    "memberof": "lib/ecc/src/ecsignature.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/ecsignature.js~ECSignature",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/ecsignature.js",
    "importStyle": "ECSignature",
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "params": [
      {
        "name": "r",
        "types": [
          "*"
        ]
      },
      {
        "name": "s",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 340,
    "kind": "file",
    "name": "lib/ecc/src/enforce_types.js",
    "content": "export default function enforce(type, value) {\n    // Copied from https://github.com/bitcoinjs/bitcoinjs-lib\n    switch (type) {\n        case \"Array\": {\n            if (Array.isArray(value)) return;\n            break;\n        }\n\n        case \"Boolean\": {\n            if (typeof value === \"boolean\") return;\n            break;\n        }\n\n        case \"Buffer\": {\n            if (Buffer.isBuffer(value)) return;\n            break;\n        }\n\n        case \"Number\": {\n            if (typeof value === \"number\") return;\n            break;\n        }\n\n        case \"String\": {\n            if (typeof value === \"string\") return;\n            break;\n        }\n\n        default: {\n            if (getName(value.constructor) === getName(type)) return;\n        }\n    }\n\n    throw new TypeError(\n        \"Expected \" + (getName(type) || type) + \", got \" + value\n    );\n}\n\nfunction getName(fn) {\n    // Why not fn.name: https://kangax.github.io/compat-table/es6/#function_name_property\n    var match = fn.toString().match(/function (.*?)\\(/);\n    return match ? match[1] : null;\n}\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/enforce_types.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 341,
    "kind": "function",
    "name": "enforce",
    "memberof": "lib/ecc/src/enforce_types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/enforce_types.js~enforce",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/enforce_types.js",
    "importStyle": "enforce",
    "description": null,
    "lineNumber": 1,
    "undocument": true,
    "params": [
      {
        "name": "type",
        "types": [
          "*"
        ]
      },
      {
        "name": "value",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 342,
    "kind": "function",
    "name": "getName",
    "memberof": "lib/ecc/src/enforce_types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/enforce_types.js~getName",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/enforce_types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 39,
    "undocument": true,
    "params": [
      {
        "name": "fn",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 343,
    "kind": "file",
    "name": "lib/ecc/src/hash.js",
    "content": "import createHash from \"create-hash\";\nimport createHmac from \"create-hmac\";\n\n/** @arg {string|Buffer} data\n    @arg {string} [digest = null] - 'hex', 'binary' or 'base64'\n    @return {string|Buffer} - Buffer when digest is null, or string\n*/\n\n/** @arg {string|Buffer} data\n    @arg {string} [digest = null] - 'hex', 'binary' or 'base64'\n    @return {string|Buffer} - Buffer when digest is null, or string\n*/\nfunction sha256(data, encoding) {\n    return createHash(\"sha256\")\n        .update(data)\n        .digest(encoding);\n}\n\n/** @arg {string|Buffer} data\n    @arg {string} [digest = null] - 'hex', 'binary' or 'base64'\n    @return {string|Buffer} - Buffer when digest is null, or string\n*/\nfunction sha512(data, encoding) {\n    return createHash(\"sha512\")\n        .update(data)\n        .digest(encoding);\n}\n\nfunction HmacSHA256(buffer, secret) {\n    return createHmac(\"sha256\", secret)\n        .update(buffer)\n        .digest();\n}\n\nfunction ripemd160(data) {\n    return createHash(\"rmd160\")\n        .update(data)\n        .digest();\n}\n\n// function hash160(buffer) {\n//   return ripemd160(sha256(buffer))\n// }\n//\n// function hash256(buffer) {\n//   return sha256(sha256(buffer))\n// }\n\n//\n// function HmacSHA512(buffer, secret) {\n//   return crypto.createHmac('sha512', secret).update(buffer).digest()\n// }\n\nexport {sha256, sha512, HmacSHA256, ripemd160};\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/hash.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 344,
    "kind": "function",
    "name": "sha256",
    "memberof": "lib/ecc/src/hash.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/hash.js~sha256",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/hash.js",
    "importStyle": "{sha256}",
    "description": null,
    "lineNumber": 13,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string|Buffer} data"
      },
      {
        "tagName": "@arg",
        "tagValue": "{string} [digest = null] - 'hex', 'binary' or 'base64'"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string",
        "Buffer"
      ],
      "spread": false,
      "description": "Buffer when digest is null, or string"
    },
    "params": [
      {
        "name": "data",
        "types": [
          "*"
        ]
      },
      {
        "name": "encoding",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 345,
    "kind": "function",
    "name": "sha512",
    "memberof": "lib/ecc/src/hash.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/hash.js~sha512",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/hash.js",
    "importStyle": "{sha512}",
    "description": null,
    "lineNumber": 23,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{string|Buffer} data"
      },
      {
        "tagName": "@arg",
        "tagValue": "{string} [digest = null] - 'hex', 'binary' or 'base64'"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string",
        "Buffer"
      ],
      "spread": false,
      "description": "Buffer when digest is null, or string"
    },
    "params": [
      {
        "name": "data",
        "types": [
          "*"
        ]
      },
      {
        "name": "encoding",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 346,
    "kind": "function",
    "name": "HmacSHA256",
    "memberof": "lib/ecc/src/hash.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/hash.js~HmacSHA256",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/hash.js",
    "importStyle": "{HmacSHA256}",
    "description": null,
    "lineNumber": 29,
    "undocument": true,
    "params": [
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      },
      {
        "name": "secret",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 347,
    "kind": "function",
    "name": "ripemd160",
    "memberof": "lib/ecc/src/hash.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/hash.js~ripemd160",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/hash.js",
    "importStyle": "{ripemd160}",
    "description": null,
    "lineNumber": 35,
    "undocument": true,
    "params": [
      {
        "name": "data",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 348,
    "kind": "file",
    "name": "lib/ecc/src/signature.js",
    "content": "import {sign, recoverPubKey, verify, calcPubKeyRecoveryParam} from \"./ecdsa\";\nimport {sha256} from \"./hash\";\nimport {getCurveByName} from \"ecurve\";\nvar secp256k1 = getCurveByName(\"secp256k1\");\nimport assert from \"assert\";\nimport BigInteger from \"bigi\";\nimport PublicKey from \"./PublicKey\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\nclass Signature {\n    constructor(r1, s1, i1) {\n        this.r = r1;\n        this.s = s1;\n        this.i = i1;\n        assert.equal(this.r != null, true, \"Missing parameter\");\n        assert.equal(this.s != null, true, \"Missing parameter\");\n        assert.equal(this.i != null, true, \"Missing parameter\");\n    }\n\n    static fromBuffer(buf) {\n        var i, r, s;\n        assert.equal(buf.length, 65, \"Invalid signature length\");\n        i = buf.readUInt8(0);\n        assert.equal(i - 27, (i - 27) & 7, \"Invalid signature parameter\");\n        r = BigInteger.fromBuffer(buf.slice(1, 33));\n        s = BigInteger.fromBuffer(buf.slice(33));\n        return new Signature(r, s, i);\n    }\n\n    toBuffer() {\n        var buf;\n        buf = Buffer.alloc(65);\n        buf.writeUInt8(this.i, 0);\n        this.r.toBuffer(32).copy(buf, 1);\n        this.s.toBuffer(32).copy(buf, 33);\n        return buf;\n    }\n\n    recoverPublicKeyFromBuffer(buffer) {\n        return this.recoverPublicKey(sha256(buffer));\n    }\n\n    /**\n        @return {PublicKey}\n    */\n    recoverPublicKey(sha256_buffer) {\n        let Q, e, i;\n        e = BigInteger.fromBuffer(sha256_buffer);\n        i = this.i;\n        i -= 27;\n        i = i & 3;\n        Q = recoverPubKey(secp256k1, e, this, i);\n        return PublicKey.fromPoint(Q);\n    }\n\n    /**\n        @param {Buffer} buf\n        @param {PrivateKey} private_key\n        @return {Signature}\n    */\n    static signBuffer(buf, private_key) {\n        var _hash = sha256(buf);\n        return Signature.signBufferSha256(_hash, private_key);\n    }\n\n    /** Sign a buffer of exactally 32 bytes in size (sha256(text))\n        @param {Buffer} buf - 32 bytes binary\n        @param {PrivateKey} private_key\n        @return {Signature}\n    */\n    static signBufferSha256(buf_sha256, private_key) {\n        if (buf_sha256.length !== 32 || !Buffer.isBuffer(buf_sha256))\n            throw new Error(\"buf_sha256: 32 byte buffer requred\");\n        var der, e, ecsignature, i, lenR, lenS, nonce;\n        i = null;\n        nonce = 0;\n        e = BigInteger.fromBuffer(buf_sha256);\n        while (true) {\n            ecsignature = sign(secp256k1, buf_sha256, private_key.d, nonce++);\n            der = ecsignature.toDER();\n            lenR = der[3];\n            lenS = der[5 + lenR];\n            if (lenR === 32 && lenS === 32) {\n                i = calcPubKeyRecoveryParam(\n                    secp256k1,\n                    e,\n                    ecsignature,\n                    private_key.toPublicKey().Q\n                );\n                i += 4; // compressed\n                i += 27; // compact  //  24 or 27 :( forcing odd-y 2nd key candidate)\n                break;\n            }\n            if (nonce % 10 === 0) {\n                console.log(\n                    \"WARN: \" + nonce + \" attempts to find canonical signature\"\n                );\n            }\n        }\n        return new Signature(ecsignature.r, ecsignature.s, i);\n    }\n\n    static sign(string, private_key) {\n        return Signature.signBuffer(Buffer.from(string), private_key);\n    }\n\n    /**\n        @param {Buffer} un-hashed\n        @param {./PublicKey}\n        @return {boolean}\n    */\n    verifyBuffer(buf, public_key) {\n        var _hash = sha256(buf);\n        return this.verifyHash(_hash, public_key);\n    }\n\n    verifyHash(hash, public_key) {\n        assert.equal(\n            hash.length,\n            32,\n            \"A SHA 256 should be 32 bytes long, instead got \" + hash.length\n        );\n        return verify(\n            secp256k1,\n            hash,\n            {\n                r: this.r,\n                s: this.s\n            },\n            public_key.Q\n        );\n    }\n\n    /* <HEX> */\n\n    toByteBuffer() {\n        var b;\n        b = new ByteBuffer(\n            ByteBuffer.DEFAULT_CAPACITY,\n            ByteBuffer.LITTLE_ENDIAN\n        );\n        this.appendByteBuffer(b);\n        return b.copy(0, b.offset);\n    }\n\n    static fromHex(hex) {\n        return Signature.fromBuffer(Buffer.from(hex, \"hex\"));\n    }\n\n    toHex() {\n        return this.toBuffer().toString(\"hex\");\n    }\n\n    static signHex(hex, private_key) {\n        var buf;\n        buf = Buffer.from(hex, \"hex\");\n        return Signature.signBuffer(buf, private_key);\n    }\n\n    verifyHex(hex, public_key) {\n        var buf;\n        buf = Buffer.from(hex, \"hex\");\n        return this.verifyBuffer(buf, public_key);\n    }\n}\n\nexport default Signature;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/ecc/src/signature.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 349,
    "kind": "variable",
    "name": "secp256k1",
    "memberof": "lib/ecc/src/signature.js",
    "static": true,
    "longname": "lib/ecc/src/signature.js~secp256k1",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/signature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 350,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/ecc/src/signature.js",
    "static": true,
    "longname": "lib/ecc/src/signature.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/ecc/src/signature.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 351,
    "kind": "class",
    "name": "Signature",
    "memberof": "lib/ecc/src/signature.js",
    "static": true,
    "longname": "lib/ecc/src/signature.js~Signature",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/ecc/src/signature.js",
    "importStyle": "Signature",
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 352,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true
  },
  {
    "__docId__": 353,
    "kind": "member",
    "name": "r",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#r",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 354,
    "kind": "member",
    "name": "s",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#s",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 355,
    "kind": "member",
    "name": "i",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#i",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 356,
    "kind": "method",
    "name": "fromBuffer",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/signature.js~Signature.fromBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 20,
    "undocument": true,
    "params": [
      {
        "name": "buf",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 357,
    "kind": "method",
    "name": "toBuffer",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#toBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 30,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 358,
    "kind": "method",
    "name": "recoverPublicKeyFromBuffer",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#recoverPublicKeyFromBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 39,
    "undocument": true,
    "params": [
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 359,
    "kind": "method",
    "name": "recoverPublicKey",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#recoverPublicKey",
    "access": "public",
    "description": "",
    "lineNumber": 46,
    "return": {
      "nullable": null,
      "types": [
        "PublicKey"
      ],
      "spread": false,
      "description": ""
    },
    "params": [
      {
        "name": "sha256_buffer",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 360,
    "kind": "method",
    "name": "signBuffer",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/signature.js~Signature.signBuffer",
    "access": "public",
    "description": "",
    "lineNumber": 61,
    "params": [
      {
        "nullable": null,
        "types": [
          "Buffer"
        ],
        "spread": false,
        "optional": false,
        "name": "buf",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "PrivateKey"
        ],
        "spread": false,
        "optional": false,
        "name": "private_key",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Signature"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 361,
    "kind": "method",
    "name": "signBufferSha256",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/signature.js~Signature.signBufferSha256",
    "access": "public",
    "description": "Sign a buffer of exactally 32 bytes in size (sha256(text))",
    "lineNumber": 71,
    "params": [
      {
        "nullable": null,
        "types": [
          "Buffer"
        ],
        "spread": false,
        "optional": false,
        "name": "buf",
        "description": "32 bytes binary"
      },
      {
        "nullable": null,
        "types": [
          "PrivateKey"
        ],
        "spread": false,
        "optional": false,
        "name": "private_key",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Signature"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 362,
    "kind": "method",
    "name": "sign",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/signature.js~Signature.sign",
    "access": "public",
    "description": null,
    "lineNumber": 103,
    "undocument": true,
    "params": [
      {
        "name": "string",
        "types": [
          "*"
        ]
      },
      {
        "name": "private_key",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 363,
    "kind": "method",
    "name": "verifyBuffer",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#verifyBuffer",
    "access": "public",
    "description": "",
    "lineNumber": 112,
    "params": [
      {
        "nullable": null,
        "types": [
          "Buffer"
        ],
        "spread": false,
        "optional": false,
        "name": "un-hashed",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 364,
    "kind": "method",
    "name": "verifyHash",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#verifyHash",
    "access": "public",
    "description": null,
    "lineNumber": 117,
    "undocument": true,
    "params": [
      {
        "name": "hash",
        "types": [
          "*"
        ]
      },
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 365,
    "kind": "method",
    "name": "toByteBuffer",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#toByteBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 136,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 366,
    "kind": "method",
    "name": "fromHex",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/signature.js~Signature.fromHex",
    "access": "public",
    "description": null,
    "lineNumber": 146,
    "undocument": true,
    "params": [
      {
        "name": "hex",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 367,
    "kind": "method",
    "name": "toHex",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#toHex",
    "access": "public",
    "description": null,
    "lineNumber": 150,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 368,
    "kind": "method",
    "name": "signHex",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/ecc/src/signature.js~Signature.signHex",
    "access": "public",
    "description": null,
    "lineNumber": 154,
    "undocument": true,
    "params": [
      {
        "name": "hex",
        "types": [
          "*"
        ]
      },
      {
        "name": "private_key",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 369,
    "kind": "method",
    "name": "verifyHex",
    "memberof": "lib/ecc/src/signature.js~Signature",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/ecc/src/signature.js~Signature#verifyHex",
    "access": "public",
    "description": null,
    "lineNumber": 160,
    "undocument": true,
    "params": [
      {
        "name": "hex",
        "types": [
          "*"
        ]
      },
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 370,
    "kind": "file",
    "name": "lib/index.js",
    "content": "/* Serializer */\nimport Serializer from \"./serializer/src/serializer\";\nimport fp from \"./serializer/src/FastParser\";\nimport types from \"./serializer/src/types\";\nimport * as ops from \"./serializer/src/operations\";\nimport template from \"./serializer/src/template\";\nimport SerializerValidation from \"./serializer/src/SerializerValidation\";\n\nexport { Serializer, fp, types, ops, template, SerializerValidation };\n\n/* ECC */\nimport Address from \"./ecc/src/address\";\nimport Aes from \"./ecc/src/aes\";\nimport PrivateKey from \"./ecc/src/PrivateKey\";\nimport PublicKey from \"./ecc/src/PublicKey\";\nimport Signature from \"./ecc/src/signature\";\nimport brainKey from \"./ecc/src/BrainKey\";\nimport * as hash from \"./ecc/src/hash\";\nimport key from \"./ecc/src/KeyUtils\";\n\nexport { Address, Aes, PrivateKey, PublicKey, Signature, brainKey, hash, key };\n\n/* Chain */\nimport ChainStore from \"./chain/src/ChainStore\";\nimport TransactionBuilder  from \"./chain/src/TransactionBuilder\";\nimport ChainTypes from \"./chain/src/ChainTypes\";\nimport ObjectId from \"./chain/src/ObjectId\";\nimport NumberUtils from \"./chain/src/NumberUtils\";\nimport TransactionHelper from \"./chain/src/TransactionHelper\";\nimport ChainValidation from \"./chain/src/ChainValidation\";\nimport EmitterInstance from \"./chain/src/EmitterInstance\";\nimport Login from \"./chain/src/AccountLogin\";\n\nconst {FetchChainObjects, FetchChain} = ChainStore;\n\nexport {ChainStore, TransactionBuilder, FetchChainObjects, ChainTypes, EmitterInstance,\n    ObjectId, NumberUtils, TransactionHelper, ChainValidation, FetchChain, Login }\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/index.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 371,
    "kind": "variable",
    "name": "FetchChainObjects",
    "memberof": "lib/index.js",
    "static": true,
    "longname": "lib/index.js~FetchChainObjects",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 34,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 372,
    "kind": "file",
    "name": "lib/serializer/index.js",
    "content": "import Serializer from \"./src/serializer\";\nimport fp from \"./src/FastParser\";\nimport types from \"./src/types\";\nimport * as ops from \"./src/operations\";\nimport template from \"./src/template\";\nimport SerializerValidation from \"./src/SerializerValidation\";\n\nexport { Serializer, fp, types, ops, template, SerializerValidation };\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/index.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 373,
    "kind": "file",
    "name": "lib/serializer/src/FastParser.js",
    "content": "import PublicKey from \"../../ecc/src/PublicKey\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\nclass FastParser {\n    static fixed_data(b, len, buffer) {\n        if (!b) {\n            return;\n        }\n        if (buffer) {\n            let data = buffer.slice(0, len).toString(\"binary\");\n            b.append(data, \"binary\");\n            while (len-- > data.length) {\n                b.writeUint8(0);\n            }\n        } else {\n            let b_copy = b.copy(b.offset, b.offset + len);\n            b.skip(len);\n            return Buffer.from(b_copy.toBinary(), \"binary\");\n        }\n    }\n\n    static public_key(b, public_key) {\n        if (!b) {\n            return;\n        }\n        if (public_key) {\n            var buffer = public_key.toBuffer();\n            b.append(buffer.toString(\"binary\"), \"binary\");\n            return;\n        } else {\n            buffer = FastParser.fixed_data(b, 33);\n            return PublicKey.fromBuffer(buffer);\n        }\n    }\n\n    static ripemd160(b, ripemd160) {\n        if (!b) {\n            return;\n        }\n        if (ripemd160) {\n            FastParser.fixed_data(b, 20, ripemd160);\n            return;\n        } else {\n            return FastParser.fixed_data(b, 20);\n        }\n    }\n\n    static time_point_sec(b, epoch) {\n        if (epoch) {\n            epoch = Math.ceil(epoch / 1000);\n            b.writeInt32(epoch);\n            return;\n        } else {\n            epoch = b.readInt32(); // fc::time_point_sec\n            return new Date(epoch * 1000);\n        }\n    }\n}\n\nexport default FastParser;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/FastParser.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 374,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/serializer/src/FastParser.js",
    "static": true,
    "longname": "lib/serializer/src/FastParser.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/FastParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 2,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 375,
    "kind": "class",
    "name": "FastParser",
    "memberof": "lib/serializer/src/FastParser.js",
    "static": true,
    "longname": "lib/serializer/src/FastParser.js~FastParser",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/FastParser.js",
    "importStyle": "FastParser",
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 376,
    "kind": "method",
    "name": "fixed_data",
    "memberof": "lib/serializer/src/FastParser.js~FastParser",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/FastParser.js~FastParser.fixed_data",
    "access": "public",
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "params": [
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "len",
        "types": [
          "*"
        ]
      },
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 377,
    "kind": "method",
    "name": "public_key",
    "memberof": "lib/serializer/src/FastParser.js~FastParser",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/FastParser.js~FastParser.public_key",
    "access": "public",
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "params": [
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "public_key",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 378,
    "kind": "method",
    "name": "ripemd160",
    "memberof": "lib/serializer/src/FastParser.js~FastParser",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/FastParser.js~FastParser.ripemd160",
    "access": "public",
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "params": [
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "ripemd160",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 379,
    "kind": "method",
    "name": "time_point_sec",
    "memberof": "lib/serializer/src/FastParser.js~FastParser",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/FastParser.js~FastParser.time_point_sec",
    "access": "public",
    "description": null,
    "lineNumber": 48,
    "undocument": true,
    "params": [
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "epoch",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 380,
    "kind": "file",
    "name": "lib/serializer/src/SerializerValidation.js",
    "content": "import {Long} from \"bytebuffer\";\nimport ChainTypes from \"../../chain/src/ChainTypes\";\n\nvar MAX_SAFE_INT = 9007199254740991;\nvar MIN_SAFE_INT = -9007199254740991;\n\n/**\n    Most validations are skipped and the value returned unchanged when an empty string, null, or undefined is encountered (except \"required\").\n\n    Validations support a string format for dealing with large numbers.\n*/\nvar _my = {\n    is_empty: function(value) {\n        return value === null || value === undefined;\n    },\n\n    required(value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            throw new Error(`value required ${field_name} ${value}`);\n        }\n        return value;\n    },\n\n    require_long(value, field_name = \"\") {\n        if (!Long.isLong(value)) {\n            throw new Error(`Long value required ${field_name} ${value}`);\n        }\n        return value;\n    },\n\n    string(value) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        if (typeof value !== \"string\") {\n            throw new Error(`string required: ${value}`);\n        }\n        return value;\n    },\n\n    number(value) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        if (typeof value !== \"number\") {\n            throw new Error(`number required: ${value}`);\n        }\n        return value;\n    },\n\n    whole_number(value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        if (/\\./.test(value)) {\n            throw new Error(`whole number required ${field_name} ${value}`);\n        }\n        return value;\n    },\n\n    unsigned(value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        if (/-/.test(value)) {\n            throw new Error(`unsigned required ${field_name} ${value}`);\n        }\n        return value;\n    },\n\n    is_digits: function(value) {\n        if (typeof value === \"numeric\") {\n            return true;\n        }\n        return /^[0-9]+$/.test(value);\n    },\n\n    to_number: function(value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        this.no_overflow53(value, field_name);\n        var int_value = (() => {\n            if (typeof value === \"number\") {\n                return value;\n            } else {\n                return parseInt(value);\n            }\n        })();\n        return int_value;\n    },\n\n    to_long(value, field_name = \"\", unsigned = false) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        if (Long.isLong(value)) {\n            return value;\n        }\n\n        this.no_overflow64(value, field_name, unsigned);\n        if (typeof value === \"number\") {\n            value = \"\" + value;\n        }\n        return Long.fromString(value, unsigned);\n    },\n\n    to_string(value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        if (typeof value === \"string\") {\n            return value;\n        }\n        if (typeof value === \"number\") {\n            this.no_overflow53(value, field_name);\n            return \"\" + value;\n        }\n        if (Long.isLong(value)) {\n            return value.toString();\n        }\n        throw `unsupported type ${field_name}: (${typeof value}) ${value}`;\n    },\n\n    require_test(regex, value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        if (!regex.test(value)) {\n            throw new Error(`unmatched ${regex} ${field_name} ${value}`);\n        }\n        return value;\n    },\n\n    require_match: function(regex, value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        var match = value.match(regex);\n        if (match === null) {\n            throw new Error(`unmatched ${regex} ${field_name} ${value}`);\n        }\n        return match;\n    },\n\n    require_object_id: function(value, field_name) {\n        return require_match(\n            /^([0-9]+)\\.([0-9]+)\\.([0-9]+)$/,\n            value,\n            field_name\n        );\n    },\n\n    // Does not support over 53 bits\n    require_range(min, max, value, field_name = \"\") {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        var number = this.to_number(value);\n        if (value < min || value > max) {\n            throw new Error(`out of range ${value} ${field_name} ${value}`);\n        }\n        return value;\n    },\n\n    require_object_type: function(\n        reserved_spaces = 1,\n        type,\n        value,\n        field_name = \"\"\n    ) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        var object_type = ChainTypes.object_type[type];\n        if (!object_type) {\n            throw new Error(\n                `Unknown object type ${type} ${field_name} ${value}`\n            );\n        }\n        var re = new RegExp(`${reserved_spaces}\\.${object_type}\\.[0-9]+$`);\n        if (!re.test(value)) {\n            throw new Error(\n                `Expecting ${type} in format ` +\n                    `${reserved_spaces}.${object_type}.[0-9]+ ` +\n                    `instead of ${value} ${field_name} ${value}`\n            );\n        }\n        return value;\n    },\n\n    get_instance: function(reserve_spaces, type, value, field_name) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        this.require_object_type(reserve_spaces, type, value, field_name);\n        return this.to_number(value.split(\".\")[2]);\n    },\n\n    require_relative_type: function(type, value, field_name) {\n        this.require_object_type(0, type, value, field_name);\n        return value;\n    },\n\n    get_relative_instance: function(type, value, field_name) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        this.require_object_type(0, type, value, field_name);\n        return this.to_number(value.split(\".\")[2]);\n    },\n\n    require_protocol_type: function(type, value, field_name) {\n        this.require_object_type(1, type, value, field_name);\n        return value;\n    },\n\n    get_protocol_instance: function(type, value, field_name) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        this.require_object_type(1, type, value, field_name);\n        return this.to_number(value.split(\".\")[2]);\n    },\n\n    get_protocol_type: function(value, field_name) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        this.require_object_id(value, field_name);\n        var values = value.split(\".\");\n        return this.to_number(values[1]);\n    },\n\n    get_protocol_type_name(value, field_name) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        var type_id = this.get_protocol_type(value, field_name);\n        return Object.keys(ChainTypes.object_type)[type_id];\n    },\n\n    require_implementation_type: function(type, value, field_name) {\n        this.require_object_type(2, type, value, field_name);\n        return value;\n    },\n\n    get_implementation_instance: function(type, value, field_name) {\n        if (this.is_empty(value)) {\n            return value;\n        }\n        this.require_object_type(2, type, value, field_name);\n        return this.to_number(value.split(\".\")[2]);\n    },\n\n    // signed / unsigned decimal\n    no_overflow53(value, field_name = \"\") {\n        if (typeof value === \"number\") {\n            if (value > MAX_SAFE_INT || value < MIN_SAFE_INT) {\n                throw new Error(`overflow ${field_name} ${value}`);\n            }\n            return;\n        }\n        if (typeof value === \"string\") {\n            var int = parseInt(value);\n            if (value > MAX_SAFE_INT || value < MIN_SAFE_INT) {\n                throw new Error(`overflow ${field_name} ${value}`);\n            }\n            return;\n        }\n        if (Long.isLong(value)) {\n            // typeof value.toInt() is 'number'\n            this.no_overflow53(value.toInt(), field_name);\n            return;\n        }\n        throw `unsupported type ${field_name}: (${typeof value}) ${value}`;\n    },\n\n    // signed / unsigned whole numbers only\n    no_overflow64(value, field_name = \"\", unsigned = false) {\n        // https://github.com/dcodeIO/Long.js/issues/20\n        if (Long.isLong(value)) {\n            return;\n        }\n\n        // BigInteger#isBigInteger https://github.com/cryptocoinjs/bigi/issues/20\n        if (value.t !== undefined && value.s !== undefined) {\n            this.no_overflow64(value.toString(), field_name, unsigned);\n            return;\n        }\n\n        if (typeof value === \"string\") {\n            // remove leading zeros, will cause a false positive\n            value = value.replace(/^0+/, \"\");\n            // remove trailing zeros\n            while (/0$/.test(value)) {\n                value = value.substring(0, value.length - 1);\n            }\n            if (/\\.$/.test(value)) {\n                // remove trailing dot\n                value = value.substring(0, value.length - 1);\n            }\n            if (value === \"\") {\n                value = \"0\";\n            }\n            var long_string = Long.fromString(value, unsigned).toString();\n            if (long_string !== value.trim()) {\n                throw new Error(`overflow ${field_name} ${value}`);\n            }\n            return;\n        }\n        if (typeof value === \"number\") {\n            if (value > MAX_SAFE_INT || value < MIN_SAFE_INT) {\n                throw new Error(`overflow ${field_name} ${value}`);\n            }\n            return;\n        }\n\n        throw `unsupported type ${field_name}: (${typeof value}) ${value}`;\n    }\n};\n\nexport default _my;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/SerializerValidation.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 381,
    "kind": "variable",
    "name": "MAX_SAFE_INT",
    "memberof": "lib/serializer/src/SerializerValidation.js",
    "static": true,
    "longname": "lib/serializer/src/SerializerValidation.js~MAX_SAFE_INT",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/SerializerValidation.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 382,
    "kind": "variable",
    "name": "MIN_SAFE_INT",
    "memberof": "lib/serializer/src/SerializerValidation.js",
    "static": true,
    "longname": "lib/serializer/src/SerializerValidation.js~MIN_SAFE_INT",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/SerializerValidation.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 383,
    "kind": "variable",
    "name": "_my",
    "memberof": "lib/serializer/src/SerializerValidation.js",
    "static": true,
    "longname": "lib/serializer/src/SerializerValidation.js~_my",
    "access": "private",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/SerializerValidation.js",
    "importStyle": "_my",
    "description": "Most validations are skipped and the value returned unchanged when an empty string, null, or undefined is encountered (except \"required\").\n\nValidations support a string format for dealing with large numbers.",
    "lineNumber": 12,
    "type": {
      "types": [
        "{\"is_empty\": *, \"required\": function, \"require_long\": function, \"string\": function, \"number\": function, \"whole_number\": function, \"unsigned\": function, \"is_digits\": *, \"to_number\": *, \"to_long\": function, \"to_string\": function, \"require_test\": function, \"require_match\": *, \"require_object_id\": *, \"require_range\": function, \"require_object_type\": *, \"get_instance\": *, \"require_relative_type\": *, \"get_relative_instance\": *, \"require_protocol_type\": *, \"get_protocol_instance\": *, \"get_protocol_type\": *, \"get_protocol_type_name\": function, \"require_implementation_type\": *, \"get_implementation_instance\": *, \"no_overflow53\": function, \"no_overflow64\": function}"
      ]
    }
  },
  {
    "__docId__": 384,
    "kind": "file",
    "name": "lib/serializer/src/convert.js",
    "content": "import ByteBuffer from \"bytebuffer\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\nexport default function(type) {\n    return {\n        fromHex(hex) {\n            var b = ByteBuffer.fromHex(hex, ByteBuffer.LITTLE_ENDIAN);\n            return type.fromByteBuffer(b);\n        },\n\n        toHex(object) {\n            var b = toByteBuffer(type, object);\n            return b.toHex();\n        },\n\n        fromBuffer(buffer) {\n            var b = ByteBuffer.fromBinary(\n                buffer.toString(),\n                ByteBuffer.LITTLE_ENDIAN\n            );\n            return type.fromByteBuffer(b);\n        },\n\n        toBuffer(object) {\n            return Buffer.from(toByteBuffer(type, object).toBinary(), \"binary\");\n        },\n\n        fromBinary(string) {\n            var b = ByteBuffer.fromBinary(string, ByteBuffer.LITTLE_ENDIAN);\n            return type.fromByteBuffer(b);\n        },\n\n        toBinary(object) {\n            return toByteBuffer(type, object).toBinary();\n        }\n    };\n}\n\nvar toByteBuffer = function(type, object) {\n    var b = new ByteBuffer(\n        ByteBuffer.DEFAULT_CAPACITY,\n        ByteBuffer.LITTLE_ENDIAN\n    );\n    type.appendByteBuffer(b, object);\n    return b.copy(0, b.offset);\n};\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/convert.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 385,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/serializer/src/convert.js",
    "static": true,
    "longname": "lib/serializer/src/convert.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/convert.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 2,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 386,
    "kind": "function",
    "name": "convert",
    "memberof": "lib/serializer/src/convert.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/convert.js~convert",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/convert.js",
    "importStyle": "convert",
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "params": [
      {
        "name": "type",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 387,
    "kind": "function",
    "name": "toByteBuffer",
    "memberof": "lib/serializer/src/convert.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/convert.js~toByteBuffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/convert.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 39,
    "undocument": true,
    "params": [
      {
        "name": "type",
        "types": [
          "*"
        ]
      },
      {
        "name": "object",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 388,
    "kind": "file",
    "name": "lib/serializer/src/error_with_cause.js",
    "content": "/** Exception nesting.  */\nclass ErrorWithCause {\n    constructor(message, cause) {\n        this.message = message;\n        if (\n            typeof cause !== \"undefined\" && cause !== null\n                ? cause.message\n                : undefined\n        ) {\n            this.message = `cause\\t${cause.message}\\t` + this.message;\n        }\n\n        var stack = \"\"; //(new Error).stack\n        if (\n            typeof cause !== \"undefined\" && cause !== null\n                ? cause.stack\n                : undefined\n        ) {\n            stack = `caused by\\n\\t${cause.stack}\\t` + stack;\n        }\n\n        this.stack = this.message + \"\\n\" + stack;\n    }\n\n    static throw(message, cause) {\n        var msg = message;\n        if (\n            typeof cause !== \"undefined\" && cause !== null\n                ? cause.message\n                : undefined\n        ) {\n            msg += `\\t cause: ${cause.message} `;\n        }\n        if (\n            typeof cause !== \"undefined\" && cause !== null\n                ? cause.stack\n                : undefined\n        ) {\n            msg += `\\n stack: ${cause.stack} `;\n        }\n        throw new Error(msg);\n    }\n}\n\nexport default ErrorWithCause;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/error_with_cause.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 389,
    "kind": "class",
    "name": "ErrorWithCause",
    "memberof": "lib/serializer/src/error_with_cause.js",
    "static": true,
    "longname": "lib/serializer/src/error_with_cause.js~ErrorWithCause",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/error_with_cause.js",
    "importStyle": "ErrorWithCause",
    "description": "Exception nesting.",
    "lineNumber": 2,
    "interface": false
  },
  {
    "__docId__": 390,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/serializer/src/error_with_cause.js~ErrorWithCause",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/error_with_cause.js~ErrorWithCause#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 3,
    "undocument": true
  },
  {
    "__docId__": 391,
    "kind": "member",
    "name": "message",
    "memberof": "lib/serializer/src/error_with_cause.js~ErrorWithCause",
    "static": false,
    "longname": "lib/serializer/src/error_with_cause.js~ErrorWithCause#message",
    "access": "public",
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 393,
    "kind": "member",
    "name": "stack",
    "memberof": "lib/serializer/src/error_with_cause.js~ErrorWithCause",
    "static": false,
    "longname": "lib/serializer/src/error_with_cause.js~ErrorWithCause#stack",
    "access": "public",
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 394,
    "kind": "method",
    "name": "throw",
    "memberof": "lib/serializer/src/error_with_cause.js~ErrorWithCause",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/error_with_cause.js~ErrorWithCause.throw",
    "access": "public",
    "description": null,
    "lineNumber": 25,
    "undocument": true,
    "params": [
      {
        "name": "message",
        "types": [
          "*"
        ]
      },
      {
        "name": "cause",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 395,
    "kind": "file",
    "name": "lib/serializer/src/operations.js",
    "content": "import types from \"./types\";\nimport SerializerImpl from \"./serializer\";\n\nvar {\n    //id_type,\n    //varint32,\n    uint8,\n    uint16,\n    uint32,\n    int64,\n    uint64,\n    string,\n    bytes,\n    bool,\n    array,\n    protocol_id_type,\n    object_id_type,\n    vote_id,\n    future_extensions,\n    static_variant,\n    map,\n    set,\n    public_key,\n    address,\n    time_point_sec,\n    optional\n} = types;\n\nfuture_extensions = types.void;\n\n/*\nWhen updating generated code\nReplace:  operation = static_variant [\nwith:     operation.st_operations = [\n\nDelete:\npublic_key = new Serializer(\n    \"public_key\"\n    key_data: bytes 33\n)\n\n*/\n// Place-holder, their are dependencies on \"operation\" .. The final list of\n// operations is not avialble until the very end of the generated code.\n// See: operation.st_operations = ...\nvar operation = static_variant();\n// module.exports[\"operation\"] = operation;\n\nexport {operation};\n// For module.exports\nvar Serializer = function(operation_name, serilization_types_object) {\n    return new SerializerImpl(operation_name, serilization_types_object);\n    // return module.exports[operation_name] = s;\n};\n\n// Custom-types follow Generated code:\n\n// ##  Generated code follows\n// # programs/js_operation_serializer > npm i -g decaffeinate\n// ## -------------------------------\nexport const transfer_operation_fee_parameters = new Serializer(\n    \"transfer_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const limit_order_create_operation_fee_parameters = new Serializer(\n    \"limit_order_create_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const limit_order_cancel_operation_fee_parameters = new Serializer(\n    \"limit_order_cancel_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const call_order_update_operation_fee_parameters = new Serializer(\n    \"call_order_update_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const fill_order_operation_fee_parameters = new Serializer(\n    \"fill_order_operation_fee_parameters\"\n);\n\nexport const account_create_operation_fee_parameters = new Serializer(\n    \"account_create_operation_fee_parameters\",\n    {\n        basic_fee: uint64,\n        premium_fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const account_update_operation_fee_parameters = new Serializer(\n    \"account_update_operation_fee_parameters\",\n    {\n        fee: int64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const account_whitelist_operation_fee_parameters = new Serializer(\n    \"account_whitelist_operation_fee_parameters\",\n    {fee: int64}\n);\n\nexport const account_upgrade_operation_fee_parameters = new Serializer(\n    \"account_upgrade_operation_fee_parameters\",\n    {\n        membership_annual_fee: uint64,\n        membership_lifetime_fee: uint64\n    }\n);\n\nexport const account_transfer_operation_fee_parameters = new Serializer(\n    \"account_transfer_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const asset_create_operation_fee_parameters = new Serializer(\n    \"asset_create_operation_fee_parameters\",\n    {\n        symbol3: uint64,\n        symbol4: uint64,\n        long_symbol: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const asset_update_operation_fee_parameters = new Serializer(\n    \"asset_update_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const asset_update_bitasset_operation_fee_parameters = new Serializer(\n    \"asset_update_bitasset_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const asset_update_feed_producers_operation_fee_parameters = new Serializer(\n    \"asset_update_feed_producers_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const asset_issue_operation_fee_parameters = new Serializer(\n    \"asset_issue_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const asset_reserve_operation_fee_parameters = new Serializer(\n    \"asset_reserve_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const asset_fund_fee_pool_operation_fee_parameters = new Serializer(\n    \"asset_fund_fee_pool_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const asset_settle_operation_fee_parameters = new Serializer(\n    \"asset_settle_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const asset_global_settle_operation_fee_parameters = new Serializer(\n    \"asset_global_settle_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const asset_publish_feed_operation_fee_parameters = new Serializer(\n    \"asset_publish_feed_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const witness_create_operation_fee_parameters = new Serializer(\n    \"witness_create_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const witness_update_operation_fee_parameters = new Serializer(\n    \"witness_update_operation_fee_parameters\",\n    {fee: int64}\n);\n\nexport const proposal_create_operation_fee_parameters = new Serializer(\n    \"proposal_create_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const proposal_update_operation_fee_parameters = new Serializer(\n    \"proposal_update_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const proposal_delete_operation_fee_parameters = new Serializer(\n    \"proposal_delete_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const withdraw_permission_create_operation_fee_parameters = new Serializer(\n    \"withdraw_permission_create_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const withdraw_permission_update_operation_fee_parameters = new Serializer(\n    \"withdraw_permission_update_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const withdraw_permission_claim_operation_fee_parameters = new Serializer(\n    \"withdraw_permission_claim_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const withdraw_permission_delete_operation_fee_parameters = new Serializer(\n    \"withdraw_permission_delete_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const committee_member_create_operation_fee_parameters = new Serializer(\n    \"committee_member_create_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const committee_member_update_operation_fee_parameters = new Serializer(\n    \"committee_member_update_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const committee_member_update_global_parameters_operation_fee_parameters = new Serializer(\n    \"committee_member_update_global_parameters_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const vesting_balance_create_operation_fee_parameters = new Serializer(\n    \"vesting_balance_create_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const vesting_balance_withdraw_operation_fee_parameters = new Serializer(\n    \"vesting_balance_withdraw_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const worker_create_operation_fee_parameters = new Serializer(\n    \"worker_create_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const custom_operation_fee_parameters = new Serializer(\n    \"custom_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const assert_operation_fee_parameters = new Serializer(\n    \"assert_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const balance_claim_operation_fee_parameters = new Serializer(\n    \"balance_claim_operation_fee_parameters\"\n);\n\nexport const override_transfer_operation_fee_parameters = new Serializer(\n    \"override_transfer_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_kbyte: uint32\n    }\n);\n\nexport const transfer_to_blind_operation_fee_parameters = new Serializer(\n    \"transfer_to_blind_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_output: uint32\n    }\n);\n\nexport const blind_transfer_operation_fee_parameters = new Serializer(\n    \"blind_transfer_operation_fee_parameters\",\n    {\n        fee: uint64,\n        price_per_output: uint32\n    }\n);\n\nexport const transfer_from_blind_operation_fee_parameters = new Serializer(\n    \"transfer_from_blind_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const asset_settle_cancel_operation_fee_parameters = new Serializer(\n    \"asset_settle_cancel_operation_fee_parameters\"\n);\n\nexport const asset_claim_fees_operation_fee_parameters = new Serializer(\n    \"asset_claim_fees_operation_fee_parameters\",\n    {fee: uint64}\n);\n\nexport const fba_distribute_operation_fee_parameters = new Serializer(\n    \"fba_distribute_operation_fee_parameters\"\n);\n\nexport const bid_collateral_operation_fee_parameters = new Serializer(\n    \"bid_collateral_operation_fee_parameters\",\n    {\n        fee: uint64\n    }\n);\n\nexport const execute_bid_operation_fee_parameters = new Serializer(\n    \"execute_bid_operation_fee_parameters\"\n);\n\nexport const asset_claim_pool_operation_fee_parameters = new Serializer(\n    \"asset_claim_pool_operation_fee_parameters\",\n    {\n        fee: uint64\n    }\n);\n\nexport const asset_update_issuer_operation_fee_parameters = new Serializer(\n    \"asset_update_issuer_operation_fee_parameters\",\n    {\n        fee: uint64\n    }\n);\n\nvar fee_parameters = static_variant([\n    transfer_operation_fee_parameters,\n    limit_order_create_operation_fee_parameters,\n    limit_order_cancel_operation_fee_parameters,\n    call_order_update_operation_fee_parameters,\n    fill_order_operation_fee_parameters,\n    account_create_operation_fee_parameters,\n    account_update_operation_fee_parameters,\n    account_whitelist_operation_fee_parameters,\n    account_upgrade_operation_fee_parameters,\n    account_transfer_operation_fee_parameters,\n    asset_create_operation_fee_parameters,\n    asset_update_operation_fee_parameters,\n    asset_update_bitasset_operation_fee_parameters,\n    asset_update_feed_producers_operation_fee_parameters,\n    asset_issue_operation_fee_parameters,\n    asset_reserve_operation_fee_parameters,\n    asset_fund_fee_pool_operation_fee_parameters,\n    asset_settle_operation_fee_parameters,\n    asset_global_settle_operation_fee_parameters,\n    asset_publish_feed_operation_fee_parameters,\n    witness_create_operation_fee_parameters,\n    witness_update_operation_fee_parameters,\n    proposal_create_operation_fee_parameters,\n    proposal_update_operation_fee_parameters,\n    proposal_delete_operation_fee_parameters,\n    withdraw_permission_create_operation_fee_parameters,\n    withdraw_permission_update_operation_fee_parameters,\n    withdraw_permission_claim_operation_fee_parameters,\n    withdraw_permission_delete_operation_fee_parameters,\n    committee_member_create_operation_fee_parameters,\n    committee_member_update_operation_fee_parameters,\n    committee_member_update_global_parameters_operation_fee_parameters,\n    vesting_balance_create_operation_fee_parameters,\n    vesting_balance_withdraw_operation_fee_parameters,\n    worker_create_operation_fee_parameters,\n    custom_operation_fee_parameters,\n    assert_operation_fee_parameters,\n    balance_claim_operation_fee_parameters,\n    override_transfer_operation_fee_parameters,\n    transfer_to_blind_operation_fee_parameters,\n    blind_transfer_operation_fee_parameters,\n    transfer_from_blind_operation_fee_parameters,\n    asset_settle_cancel_operation_fee_parameters,\n    asset_claim_fees_operation_fee_parameters,\n    fba_distribute_operation_fee_parameters,\n    bid_collateral_operation_fee_parameters,\n    execute_bid_operation_fee_parameters,\n    asset_claim_pool_operation_fee_parameters,\n    asset_update_issuer_operation_fee_parameters\n]);\n\nexport const fee_schedule = new Serializer(\"fee_schedule\", {\n    parameters: set(fee_parameters),\n    scale: uint32\n});\n\nexport const void_result = new Serializer(\"void_result\");\n\nexport const asset = new Serializer(\"asset\", {\n    amount: int64,\n    asset_id: protocol_id_type(\"asset\")\n});\n\nvar operation_result = static_variant([void_result, object_id_type, asset]);\n\nexport const processed_transaction = new Serializer(\"processed_transaction\", {\n    ref_block_num: uint16,\n    ref_block_prefix: uint32,\n    expiration: time_point_sec,\n    operations: array(operation),\n    extensions: set(future_extensions),\n    signatures: array(bytes(65)),\n    operation_results: array(operation_result)\n});\n\nexport const signed_block = new Serializer(\"signed_block\", {\n    previous: bytes(20),\n    timestamp: time_point_sec,\n    witness: protocol_id_type(\"witness\"),\n    transaction_merkle_root: bytes(20),\n    extensions: set(future_extensions),\n    witness_signature: bytes(65),\n    transactions: array(processed_transaction)\n});\n\nexport const block_header = new Serializer(\"block_header\", {\n    previous: bytes(20),\n    timestamp: time_point_sec,\n    witness: protocol_id_type(\"witness\"),\n    transaction_merkle_root: bytes(20),\n    extensions: set(future_extensions)\n});\n\nexport const signed_block_header = new Serializer(\"signed_block_header\", {\n    previous: bytes(20),\n    timestamp: time_point_sec,\n    witness: protocol_id_type(\"witness\"),\n    transaction_merkle_root: bytes(20),\n    extensions: set(future_extensions),\n    witness_signature: bytes(65)\n});\n\nexport const memo_data = new Serializer(\"memo_data\", {\n    from: public_key,\n    to: public_key,\n    nonce: uint64,\n    message: bytes()\n});\n\nexport const transfer = new Serializer(\"transfer\", {\n    fee: asset,\n    from: protocol_id_type(\"account\"),\n    to: protocol_id_type(\"account\"),\n    amount: asset,\n    memo: optional(memo_data),\n    extensions: set(future_extensions)\n});\n\nexport const limit_order_create = new Serializer(\"limit_order_create\", {\n    fee: asset,\n    seller: protocol_id_type(\"account\"),\n    amount_to_sell: asset,\n    min_to_receive: asset,\n    expiration: time_point_sec,\n    fill_or_kill: bool,\n    extensions: set(future_extensions)\n});\n\nexport const limit_order_cancel = new Serializer(\"limit_order_cancel\", {\n    fee: asset,\n    fee_paying_account: protocol_id_type(\"account\"),\n    order: protocol_id_type(\"limit_order\"),\n    extensions: set(future_extensions)\n});\n\nexport const call_order_update = new Serializer(\"call_order_update\", {\n    fee: asset,\n    funding_account: protocol_id_type(\"account\"),\n    delta_collateral: asset,\n    delta_debt: asset,\n    extensions: set(future_extensions)\n});\n\nexport const fill_order = new Serializer(\"fill_order\", {\n    fee: asset,\n    order_id: object_id_type,\n    account_id: protocol_id_type(\"account\"),\n    pays: asset,\n    receives: asset\n});\n\nexport const authority = new Serializer(\"authority\", {\n    weight_threshold: uint32,\n    account_auths: map(protocol_id_type(\"account\"), uint16),\n    key_auths: map(public_key, uint16),\n    address_auths: map(address, uint16)\n});\n\nexport const account_options = new Serializer(\"account_options\", {\n    memo_key: public_key,\n    voting_account: protocol_id_type(\"account\"),\n    num_witness: uint16,\n    num_committee: uint16,\n    votes: set(vote_id),\n    extensions: set(future_extensions)\n});\n\nexport const account_create = new Serializer(\"account_create\", {\n    fee: asset,\n    registrar: protocol_id_type(\"account\"),\n    referrer: protocol_id_type(\"account\"),\n    referrer_percent: uint16,\n    name: string,\n    owner: authority,\n    active: authority,\n    options: account_options,\n    extensions: set(future_extensions)\n});\n\nexport const account_update = new Serializer(\"account_update\", {\n    fee: asset,\n    account: protocol_id_type(\"account\"),\n    owner: optional(authority),\n    active: optional(authority),\n    new_options: optional(account_options),\n    extensions: set(future_extensions)\n});\n\nexport const account_whitelist = new Serializer(\"account_whitelist\", {\n    fee: asset,\n    authorizing_account: protocol_id_type(\"account\"),\n    account_to_list: protocol_id_type(\"account\"),\n    new_listing: uint8,\n    extensions: set(future_extensions)\n});\n\nexport const account_upgrade = new Serializer(\"account_upgrade\", {\n    fee: asset,\n    account_to_upgrade: protocol_id_type(\"account\"),\n    upgrade_to_lifetime_member: bool,\n    extensions: set(future_extensions)\n});\n\nexport const account_transfer = new Serializer(\"account_transfer\", {\n    fee: asset,\n    account_id: protocol_id_type(\"account\"),\n    new_owner: protocol_id_type(\"account\"),\n    extensions: set(future_extensions)\n});\n\nexport const price = new Serializer(\"price\", {\n    base: asset,\n    quote: asset\n});\n\nexport const asset_options = new Serializer(\"asset_options\", {\n    max_supply: int64,\n    market_fee_percent: uint16,\n    max_market_fee: int64,\n    issuer_permissions: uint16,\n    flags: uint16,\n    core_exchange_rate: price,\n    whitelist_authorities: set(protocol_id_type(\"account\")),\n    blacklist_authorities: set(protocol_id_type(\"account\")),\n    whitelist_markets: set(protocol_id_type(\"asset\")),\n    blacklist_markets: set(protocol_id_type(\"asset\")),\n    description: string,\n    extensions: set(future_extensions)\n});\n\nexport const bitasset_options = new Serializer(\"bitasset_options\", {\n    feed_lifetime_sec: uint32,\n    minimum_feeds: uint8,\n    force_settlement_delay_sec: uint32,\n    force_settlement_offset_percent: uint16,\n    maximum_force_settlement_volume: uint16,\n    short_backing_asset: protocol_id_type(\"asset\"),\n    extensions: set(future_extensions)\n});\n\nexport const asset_create = new Serializer(\"asset_create\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    symbol: string,\n    precision: uint8,\n    common_options: asset_options,\n    bitasset_opts: optional(bitasset_options),\n    is_prediction_market: bool,\n    extensions: set(future_extensions)\n});\n\nexport const asset_update = new Serializer(\"asset_update\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    asset_to_update: protocol_id_type(\"asset\"),\n    new_issuer: optional(protocol_id_type(\"account\")),\n    new_options: asset_options,\n    extensions: set(future_extensions)\n});\n\nexport const asset_update_bitasset = new Serializer(\"asset_update_bitasset\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    asset_to_update: protocol_id_type(\"asset\"),\n    new_options: bitasset_options,\n    extensions: set(future_extensions)\n});\n\nexport const asset_update_feed_producers = new Serializer(\n    \"asset_update_feed_producers\",\n    {\n        fee: asset,\n        issuer: protocol_id_type(\"account\"),\n        asset_to_update: protocol_id_type(\"asset\"),\n        new_feed_producers: set(protocol_id_type(\"account\")),\n        extensions: set(future_extensions)\n    }\n);\n\nexport const asset_issue = new Serializer(\"asset_issue\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    asset_to_issue: asset,\n    issue_to_account: protocol_id_type(\"account\"),\n    memo: optional(memo_data),\n    extensions: set(future_extensions)\n});\n\nexport const asset_reserve = new Serializer(\"asset_reserve\", {\n    fee: asset,\n    payer: protocol_id_type(\"account\"),\n    amount_to_reserve: asset,\n    extensions: set(future_extensions)\n});\n\nexport const asset_fund_fee_pool = new Serializer(\"asset_fund_fee_pool\", {\n    fee: asset,\n    from_account: protocol_id_type(\"account\"),\n    asset_id: protocol_id_type(\"asset\"),\n    amount: int64,\n    extensions: set(future_extensions)\n});\n\nexport const asset_settle = new Serializer(\"asset_settle\", {\n    fee: asset,\n    account: protocol_id_type(\"account\"),\n    amount: asset,\n    extensions: set(future_extensions)\n});\n\nexport const asset_global_settle = new Serializer(\"asset_global_settle\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    asset_to_settle: protocol_id_type(\"asset\"),\n    settle_price: price,\n    extensions: set(future_extensions)\n});\n\nexport const price_feed = new Serializer(\"price_feed\", {\n    settlement_price: price,\n    maintenance_collateral_ratio: uint16,\n    maximum_short_squeeze_ratio: uint16,\n    core_exchange_rate: price\n});\n\nexport const asset_publish_feed = new Serializer(\"asset_publish_feed\", {\n    fee: asset,\n    publisher: protocol_id_type(\"account\"),\n    asset_id: protocol_id_type(\"asset\"),\n    feed: price_feed,\n    extensions: set(future_extensions)\n});\n\nexport const witness_create = new Serializer(\"witness_create\", {\n    fee: asset,\n    witness_account: protocol_id_type(\"account\"),\n    url: string,\n    block_signing_key: public_key\n});\n\nexport const witness_update = new Serializer(\"witness_update\", {\n    fee: asset,\n    witness: protocol_id_type(\"witness\"),\n    witness_account: protocol_id_type(\"account\"),\n    new_url: optional(string),\n    new_signing_key: optional(public_key)\n});\n\nexport const op_wrapper = new Serializer(\"op_wrapper\", {op: operation});\n\nexport const proposal_create = new Serializer(\"proposal_create\", {\n    fee: asset,\n    fee_paying_account: protocol_id_type(\"account\"),\n    expiration_time: time_point_sec,\n    proposed_ops: array(op_wrapper),\n    review_period_seconds: optional(uint32),\n    extensions: set(future_extensions)\n});\n\nexport const proposal_update = new Serializer(\"proposal_update\", {\n    fee: asset,\n    fee_paying_account: protocol_id_type(\"account\"),\n    proposal: protocol_id_type(\"proposal\"),\n    active_approvals_to_add: set(protocol_id_type(\"account\")),\n    active_approvals_to_remove: set(protocol_id_type(\"account\")),\n    owner_approvals_to_add: set(protocol_id_type(\"account\")),\n    owner_approvals_to_remove: set(protocol_id_type(\"account\")),\n    key_approvals_to_add: set(public_key),\n    key_approvals_to_remove: set(public_key),\n    extensions: set(future_extensions)\n});\n\nexport const proposal_delete = new Serializer(\"proposal_delete\", {\n    fee: asset,\n    fee_paying_account: protocol_id_type(\"account\"),\n    using_owner_authority: bool,\n    proposal: protocol_id_type(\"proposal\"),\n    extensions: set(future_extensions)\n});\n\nexport const withdraw_permission_create = new Serializer(\n    \"withdraw_permission_create\",\n    {\n        fee: asset,\n        withdraw_from_account: protocol_id_type(\"account\"),\n        authorized_account: protocol_id_type(\"account\"),\n        withdrawal_limit: asset,\n        withdrawal_period_sec: uint32,\n        periods_until_expiration: uint32,\n        period_start_time: time_point_sec\n    }\n);\n\nexport const withdraw_permission_update = new Serializer(\n    \"withdraw_permission_update\",\n    {\n        fee: asset,\n        withdraw_from_account: protocol_id_type(\"account\"),\n        authorized_account: protocol_id_type(\"account\"),\n        permission_to_update: protocol_id_type(\"withdraw_permission\"),\n        withdrawal_limit: asset,\n        withdrawal_period_sec: uint32,\n        period_start_time: time_point_sec,\n        periods_until_expiration: uint32\n    }\n);\n\nexport const withdraw_permission_claim = new Serializer(\n    \"withdraw_permission_claim\",\n    {\n        fee: asset,\n        withdraw_permission: protocol_id_type(\"withdraw_permission\"),\n        withdraw_from_account: protocol_id_type(\"account\"),\n        withdraw_to_account: protocol_id_type(\"account\"),\n        amount_to_withdraw: asset,\n        memo: optional(memo_data)\n    }\n);\n\nexport const withdraw_permission_delete = new Serializer(\n    \"withdraw_permission_delete\",\n    {\n        fee: asset,\n        withdraw_from_account: protocol_id_type(\"account\"),\n        authorized_account: protocol_id_type(\"account\"),\n        withdrawal_permission: protocol_id_type(\"withdraw_permission\")\n    }\n);\n\nexport const committee_member_create = new Serializer(\n    \"committee_member_create\",\n    {\n        fee: asset,\n        committee_member_account: protocol_id_type(\"account\"),\n        url: string\n    }\n);\n\nexport const committee_member_update = new Serializer(\n    \"committee_member_update\",\n    {\n        fee: asset,\n        committee_member: protocol_id_type(\"committee_member\"),\n        committee_member_account: protocol_id_type(\"account\"),\n        new_url: optional(string)\n    }\n);\n\nexport const chain_parameters = new Serializer(\"chain_parameters\", {\n    current_fees: fee_schedule,\n    block_interval: uint8,\n    maintenance_interval: uint32,\n    maintenance_skip_slots: uint8,\n    committee_proposal_review_period: uint32,\n    maximum_transaction_size: uint32,\n    maximum_block_size: uint32,\n    maximum_time_until_expiration: uint32,\n    maximum_proposal_lifetime: uint32,\n    maximum_asset_whitelist_authorities: uint8,\n    maximum_asset_feed_publishers: uint8,\n    maximum_witness_count: uint16,\n    maximum_committee_count: uint16,\n    maximum_authority_membership: uint16,\n    reserve_percent_of_fee: uint16,\n    network_percent_of_fee: uint16,\n    lifetime_referrer_percent_of_fee: uint16,\n    cashback_vesting_period_seconds: uint32,\n    cashback_vesting_threshold: int64,\n    count_non_member_votes: bool,\n    allow_non_member_whitelists: bool,\n    witness_pay_per_block: int64,\n    worker_budget_per_day: int64,\n    max_predicate_opcode: uint16,\n    fee_liquidation_threshold: int64,\n    accounts_per_fee_scale: uint16,\n    account_fee_scale_bitshifts: uint8,\n    max_authority_depth: uint8,\n    extensions: set(future_extensions)\n});\n\nexport const committee_member_update_global_parameters = new Serializer(\n    \"committee_member_update_global_parameters\",\n    {\n        fee: asset,\n        new_parameters: chain_parameters\n    }\n);\n\nexport const linear_vesting_policy_initializer = new Serializer(\n    \"linear_vesting_policy_initializer\",\n    {\n        begin_timestamp: time_point_sec,\n        vesting_cliff_seconds: uint32,\n        vesting_duration_seconds: uint32\n    }\n);\n\nexport const cdd_vesting_policy_initializer = new Serializer(\n    \"cdd_vesting_policy_initializer\",\n    {\n        start_claim: time_point_sec,\n        vesting_seconds: uint32\n    }\n);\n\nvar vesting_policy_initializer = static_variant([\n    linear_vesting_policy_initializer,\n    cdd_vesting_policy_initializer\n]);\n\nexport const vesting_balance_create = new Serializer(\"vesting_balance_create\", {\n    fee: asset,\n    creator: protocol_id_type(\"account\"),\n    owner: protocol_id_type(\"account\"),\n    amount: asset,\n    policy: vesting_policy_initializer\n});\n\nexport const vesting_balance_withdraw = new Serializer(\n    \"vesting_balance_withdraw\",\n    {\n        fee: asset,\n        vesting_balance: protocol_id_type(\"vesting_balance\"),\n        owner: protocol_id_type(\"account\"),\n        amount: asset\n    }\n);\n\nexport const refund_worker_initializer = new Serializer(\n    \"refund_worker_initializer\"\n);\n\nexport const vesting_balance_worker_initializer = new Serializer(\n    \"vesting_balance_worker_initializer\",\n    {pay_vesting_period_days: uint16}\n);\n\nexport const burn_worker_initializer = new Serializer(\n    \"burn_worker_initializer\"\n);\n\nvar worker_initializer = static_variant([\n    refund_worker_initializer,\n    vesting_balance_worker_initializer,\n    burn_worker_initializer\n]);\n\nexport const worker_create = new Serializer(\"worker_create\", {\n    fee: asset,\n    owner: protocol_id_type(\"account\"),\n    work_begin_date: time_point_sec,\n    work_end_date: time_point_sec,\n    daily_pay: int64,\n    name: string,\n    url: string,\n    initializer: worker_initializer\n});\n\nexport const custom = new Serializer(\"custom\", {\n    fee: asset,\n    payer: protocol_id_type(\"account\"),\n    required_auths: set(protocol_id_type(\"account\")),\n    id: uint16,\n    data: bytes()\n});\n\nexport const account_name_eq_lit_predicate = new Serializer(\n    \"account_name_eq_lit_predicate\",\n    {\n        account_id: protocol_id_type(\"account\"),\n        name: string\n    }\n);\n\nexport const asset_symbol_eq_lit_predicate = new Serializer(\n    \"asset_symbol_eq_lit_predicate\",\n    {\n        asset_id: protocol_id_type(\"asset\"),\n        symbol: string\n    }\n);\n\nexport const block_id_predicate = new Serializer(\"block_id_predicate\", {\n    id: bytes(20)\n});\n\nvar predicate = static_variant([\n    account_name_eq_lit_predicate,\n    asset_symbol_eq_lit_predicate,\n    block_id_predicate\n]);\n\nexport const assert = new Serializer(\"assert\", {\n    fee: asset,\n    fee_paying_account: protocol_id_type(\"account\"),\n    predicates: array(predicate),\n    required_auths: set(protocol_id_type(\"account\")),\n    extensions: set(future_extensions)\n});\n\nexport const balance_claim = new Serializer(\"balance_claim\", {\n    fee: asset,\n    deposit_to_account: protocol_id_type(\"account\"),\n    balance_to_claim: protocol_id_type(\"balance\"),\n    balance_owner_key: public_key,\n    total_claimed: asset\n});\n\nexport const override_transfer = new Serializer(\"override_transfer\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    from: protocol_id_type(\"account\"),\n    to: protocol_id_type(\"account\"),\n    amount: asset,\n    memo: optional(memo_data),\n    extensions: set(future_extensions)\n});\n\nexport const stealth_confirmation = new Serializer(\"stealth_confirmation\", {\n    one_time_key: public_key,\n    to: optional(public_key),\n    encrypted_memo: bytes()\n});\n\nexport const blind_output = new Serializer(\"blind_output\", {\n    commitment: bytes(33),\n    range_proof: bytes(),\n    owner: authority,\n    stealth_memo: optional(stealth_confirmation)\n});\n\nexport const transfer_to_blind = new Serializer(\"transfer_to_blind\", {\n    fee: asset,\n    amount: asset,\n    from: protocol_id_type(\"account\"),\n    blinding_factor: bytes(32),\n    outputs: array(blind_output)\n});\n\nexport const blind_input = new Serializer(\"blind_input\", {\n    commitment: bytes(33),\n    owner: authority\n});\n\nexport const blind_transfer = new Serializer(\"blind_transfer\", {\n    fee: asset,\n    inputs: array(blind_input),\n    outputs: array(blind_output)\n});\n\nexport const transfer_from_blind = new Serializer(\"transfer_from_blind\", {\n    fee: asset,\n    amount: asset,\n    to: protocol_id_type(\"account\"),\n    blinding_factor: bytes(32),\n    inputs: array(blind_input)\n});\n\nexport const asset_settle_cancel = new Serializer(\"asset_settle_cancel\", {\n    fee: asset,\n    settlement: protocol_id_type(\"force_settlement\"),\n    account: protocol_id_type(\"account\"),\n    amount: asset,\n    extensions: set(future_extensions)\n});\n\nexport const asset_claim_fees = new Serializer(\"asset_claim_fees\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    amount_to_claim: asset,\n    extensions: set(future_extensions)\n});\n\nexport const fba_distribute = new Serializer(\"fba_distribute\", {\n    fee: asset,\n    account_id: protocol_id_type(\"account\"),\n    fba_id: protocol_id_type(\"fba_accumulator\"),\n    amount: int64\n});\n\nexport const bid_collateral = new Serializer(\"bid_collateral\", {\n    fee: asset,\n    bidder: protocol_id_type(\"account\"),\n    additional_collateral: asset,\n    debt_covered: asset,\n    extensions: set(future_extensions)\n});\n\nexport const execute_bid = new Serializer(\"execute_bid\", {\n    fee: asset,\n    bidder: protocol_id_type(\"account\"),\n    debt: asset,\n    collateral: asset\n});\n\nexport const asset_claim_pool = new Serializer(\"asset_claim_pool\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    asset_id: protocol_id_type(\"asset\"),\n    amount_to_claim: asset,\n    extensions: set(future_extensions)\n});\n\nexport const asset_update_issuer = new Serializer(\"asset_update_issuer\", {\n    fee: asset,\n    issuer: protocol_id_type(\"account\"),\n    asset_to_update: protocol_id_type(\"asset\"),\n    new_issuer: protocol_id_type(\"account\"),\n    extensions: set(future_extensions)\n});\n\noperation.st_operations = [\n    transfer,\n    limit_order_create,\n    limit_order_cancel,\n    call_order_update,\n    fill_order,\n    account_create,\n    account_update,\n    account_whitelist,\n    account_upgrade,\n    account_transfer,\n    asset_create,\n    asset_update,\n    asset_update_bitasset,\n    asset_update_feed_producers,\n    asset_issue,\n    asset_reserve,\n    asset_fund_fee_pool,\n    asset_settle,\n    asset_global_settle,\n    asset_publish_feed,\n    witness_create,\n    witness_update,\n    proposal_create,\n    proposal_update,\n    proposal_delete,\n    withdraw_permission_create,\n    withdraw_permission_update,\n    withdraw_permission_claim,\n    withdraw_permission_delete,\n    committee_member_create,\n    committee_member_update,\n    committee_member_update_global_parameters,\n    vesting_balance_create,\n    vesting_balance_withdraw,\n    worker_create,\n    custom,\n    assert,\n    balance_claim,\n    override_transfer,\n    transfer_to_blind,\n    blind_transfer,\n    transfer_from_blind,\n    asset_settle_cancel,\n    asset_claim_fees,\n    fba_distribute,\n    bid_collateral,\n    execute_bid,\n    asset_claim_pool,\n    asset_update_issuer\n];\n\nexport const transaction = new Serializer(\"transaction\", {\n    ref_block_num: uint16,\n    ref_block_prefix: uint32,\n    expiration: time_point_sec,\n    operations: array(operation),\n    extensions: set(future_extensions)\n});\n\nexport const signed_transaction = new Serializer(\"signed_transaction\", {\n    ref_block_num: uint16,\n    ref_block_prefix: uint32,\n    expiration: time_point_sec,\n    operations: array(operation),\n    extensions: set(future_extensions),\n    signatures: array(bytes(65))\n});\n//# -------------------------------\n//#  Generated code end\n//# -------------------------------\n\n// Custom Types\n\nexport const stealth_memo_data = new Serializer(\"stealth_memo_data\", {\n    from: optional(public_key),\n    amount: asset,\n    blinding_factor: bytes(32),\n    commitment: bytes(33),\n    check: uint32\n});\n// var stealth_confirmation = new Serializer(\n//     \"stealth_confirmation\", {\n//     one_time_key: public_key,\n//     to: optional( public_key ),\n//     encrypted_memo: stealth_memo_data\n// })\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/operations.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 396,
    "kind": "variable",
    "name": "uint8",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~uint8",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 397,
    "kind": "function",
    "name": "Serializer",
    "memberof": "lib/serializer/src/operations.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/operations.js~Serializer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 51,
    "undocument": true,
    "params": [
      {
        "name": "operation_name",
        "types": [
          "*"
        ]
      },
      {
        "name": "serilization_types_object",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 398,
    "kind": "variable",
    "name": "transfer_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~transfer_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{transfer_operation_fee_parameters}",
    "description": null,
    "lineNumber": 61,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 399,
    "kind": "variable",
    "name": "limit_order_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~limit_order_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{limit_order_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 69,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 400,
    "kind": "variable",
    "name": "limit_order_cancel_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~limit_order_cancel_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{limit_order_cancel_operation_fee_parameters}",
    "description": null,
    "lineNumber": 74,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 401,
    "kind": "variable",
    "name": "call_order_update_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~call_order_update_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{call_order_update_operation_fee_parameters}",
    "description": null,
    "lineNumber": 79,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 402,
    "kind": "variable",
    "name": "fill_order_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~fill_order_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{fill_order_operation_fee_parameters}",
    "description": null,
    "lineNumber": 84,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 403,
    "kind": "variable",
    "name": "account_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 88,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 404,
    "kind": "variable",
    "name": "account_update_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_update_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_update_operation_fee_parameters}",
    "description": null,
    "lineNumber": 97,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 405,
    "kind": "variable",
    "name": "account_whitelist_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_whitelist_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_whitelist_operation_fee_parameters}",
    "description": null,
    "lineNumber": 105,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 406,
    "kind": "variable",
    "name": "account_upgrade_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_upgrade_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_upgrade_operation_fee_parameters}",
    "description": null,
    "lineNumber": 110,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 407,
    "kind": "variable",
    "name": "account_transfer_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_transfer_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_transfer_operation_fee_parameters}",
    "description": null,
    "lineNumber": 118,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 408,
    "kind": "variable",
    "name": "asset_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 123,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 409,
    "kind": "variable",
    "name": "asset_update_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_update_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_update_operation_fee_parameters}",
    "description": null,
    "lineNumber": 133,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 410,
    "kind": "variable",
    "name": "asset_update_bitasset_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_update_bitasset_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_update_bitasset_operation_fee_parameters}",
    "description": null,
    "lineNumber": 141,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 411,
    "kind": "variable",
    "name": "asset_update_feed_producers_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_update_feed_producers_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_update_feed_producers_operation_fee_parameters}",
    "description": null,
    "lineNumber": 146,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 412,
    "kind": "variable",
    "name": "asset_issue_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_issue_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_issue_operation_fee_parameters}",
    "description": null,
    "lineNumber": 151,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 413,
    "kind": "variable",
    "name": "asset_reserve_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_reserve_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_reserve_operation_fee_parameters}",
    "description": null,
    "lineNumber": 159,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 414,
    "kind": "variable",
    "name": "asset_fund_fee_pool_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_fund_fee_pool_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_fund_fee_pool_operation_fee_parameters}",
    "description": null,
    "lineNumber": 164,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 415,
    "kind": "variable",
    "name": "asset_settle_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_settle_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_settle_operation_fee_parameters}",
    "description": null,
    "lineNumber": 169,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 416,
    "kind": "variable",
    "name": "asset_global_settle_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_global_settle_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_global_settle_operation_fee_parameters}",
    "description": null,
    "lineNumber": 174,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 417,
    "kind": "variable",
    "name": "asset_publish_feed_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_publish_feed_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_publish_feed_operation_fee_parameters}",
    "description": null,
    "lineNumber": 179,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 418,
    "kind": "variable",
    "name": "witness_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~witness_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{witness_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 184,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 419,
    "kind": "variable",
    "name": "witness_update_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~witness_update_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{witness_update_operation_fee_parameters}",
    "description": null,
    "lineNumber": 189,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 420,
    "kind": "variable",
    "name": "proposal_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~proposal_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{proposal_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 194,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 421,
    "kind": "variable",
    "name": "proposal_update_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~proposal_update_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{proposal_update_operation_fee_parameters}",
    "description": null,
    "lineNumber": 202,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 422,
    "kind": "variable",
    "name": "proposal_delete_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~proposal_delete_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{proposal_delete_operation_fee_parameters}",
    "description": null,
    "lineNumber": 210,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 423,
    "kind": "variable",
    "name": "withdraw_permission_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~withdraw_permission_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{withdraw_permission_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 215,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 424,
    "kind": "variable",
    "name": "withdraw_permission_update_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~withdraw_permission_update_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{withdraw_permission_update_operation_fee_parameters}",
    "description": null,
    "lineNumber": 220,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 425,
    "kind": "variable",
    "name": "withdraw_permission_claim_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~withdraw_permission_claim_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{withdraw_permission_claim_operation_fee_parameters}",
    "description": null,
    "lineNumber": 225,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 426,
    "kind": "variable",
    "name": "withdraw_permission_delete_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~withdraw_permission_delete_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{withdraw_permission_delete_operation_fee_parameters}",
    "description": null,
    "lineNumber": 233,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 427,
    "kind": "variable",
    "name": "committee_member_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~committee_member_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{committee_member_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 238,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 428,
    "kind": "variable",
    "name": "committee_member_update_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~committee_member_update_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{committee_member_update_operation_fee_parameters}",
    "description": null,
    "lineNumber": 243,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 429,
    "kind": "variable",
    "name": "committee_member_update_global_parameters_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~committee_member_update_global_parameters_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{committee_member_update_global_parameters_operation_fee_parameters}",
    "description": null,
    "lineNumber": 248,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 430,
    "kind": "variable",
    "name": "vesting_balance_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~vesting_balance_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{vesting_balance_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 253,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 431,
    "kind": "variable",
    "name": "vesting_balance_withdraw_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~vesting_balance_withdraw_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{vesting_balance_withdraw_operation_fee_parameters}",
    "description": null,
    "lineNumber": 258,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 432,
    "kind": "variable",
    "name": "worker_create_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~worker_create_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{worker_create_operation_fee_parameters}",
    "description": null,
    "lineNumber": 263,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 433,
    "kind": "variable",
    "name": "custom_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~custom_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{custom_operation_fee_parameters}",
    "description": null,
    "lineNumber": 268,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 434,
    "kind": "variable",
    "name": "assert_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~assert_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{assert_operation_fee_parameters}",
    "description": null,
    "lineNumber": 276,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 435,
    "kind": "variable",
    "name": "balance_claim_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~balance_claim_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{balance_claim_operation_fee_parameters}",
    "description": null,
    "lineNumber": 281,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 436,
    "kind": "variable",
    "name": "override_transfer_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~override_transfer_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{override_transfer_operation_fee_parameters}",
    "description": null,
    "lineNumber": 285,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 437,
    "kind": "variable",
    "name": "transfer_to_blind_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~transfer_to_blind_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{transfer_to_blind_operation_fee_parameters}",
    "description": null,
    "lineNumber": 293,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 438,
    "kind": "variable",
    "name": "blind_transfer_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~blind_transfer_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{blind_transfer_operation_fee_parameters}",
    "description": null,
    "lineNumber": 301,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 439,
    "kind": "variable",
    "name": "transfer_from_blind_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~transfer_from_blind_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{transfer_from_blind_operation_fee_parameters}",
    "description": null,
    "lineNumber": 309,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 440,
    "kind": "variable",
    "name": "asset_settle_cancel_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_settle_cancel_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_settle_cancel_operation_fee_parameters}",
    "description": null,
    "lineNumber": 314,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 441,
    "kind": "variable",
    "name": "asset_claim_fees_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_claim_fees_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_claim_fees_operation_fee_parameters}",
    "description": null,
    "lineNumber": 318,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 442,
    "kind": "variable",
    "name": "fba_distribute_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~fba_distribute_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{fba_distribute_operation_fee_parameters}",
    "description": null,
    "lineNumber": 323,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 443,
    "kind": "variable",
    "name": "bid_collateral_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~bid_collateral_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{bid_collateral_operation_fee_parameters}",
    "description": null,
    "lineNumber": 327,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 444,
    "kind": "variable",
    "name": "execute_bid_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~execute_bid_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{execute_bid_operation_fee_parameters}",
    "description": null,
    "lineNumber": 334,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 445,
    "kind": "variable",
    "name": "asset_claim_pool_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_claim_pool_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_claim_pool_operation_fee_parameters}",
    "description": null,
    "lineNumber": 338,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 446,
    "kind": "variable",
    "name": "asset_update_issuer_operation_fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_update_issuer_operation_fee_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_update_issuer_operation_fee_parameters}",
    "description": null,
    "lineNumber": 345,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 447,
    "kind": "variable",
    "name": "fee_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~fee_parameters",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 352,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 448,
    "kind": "variable",
    "name": "fee_schedule",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~fee_schedule",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{fee_schedule}",
    "description": null,
    "lineNumber": 404,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 449,
    "kind": "variable",
    "name": "void_result",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~void_result",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{void_result}",
    "description": null,
    "lineNumber": 409,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 450,
    "kind": "variable",
    "name": "asset",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset}",
    "description": null,
    "lineNumber": 411,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 451,
    "kind": "variable",
    "name": "operation_result",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~operation_result",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 416,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 452,
    "kind": "variable",
    "name": "processed_transaction",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~processed_transaction",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{processed_transaction}",
    "description": null,
    "lineNumber": 418,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 453,
    "kind": "variable",
    "name": "signed_block",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~signed_block",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{signed_block}",
    "description": null,
    "lineNumber": 428,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 454,
    "kind": "variable",
    "name": "block_header",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~block_header",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{block_header}",
    "description": null,
    "lineNumber": 438,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 455,
    "kind": "variable",
    "name": "signed_block_header",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~signed_block_header",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{signed_block_header}",
    "description": null,
    "lineNumber": 446,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 456,
    "kind": "variable",
    "name": "memo_data",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~memo_data",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{memo_data}",
    "description": null,
    "lineNumber": 455,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 457,
    "kind": "variable",
    "name": "transfer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~transfer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{transfer}",
    "description": null,
    "lineNumber": 462,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 458,
    "kind": "variable",
    "name": "limit_order_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~limit_order_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{limit_order_create}",
    "description": null,
    "lineNumber": 471,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 459,
    "kind": "variable",
    "name": "limit_order_cancel",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~limit_order_cancel",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{limit_order_cancel}",
    "description": null,
    "lineNumber": 481,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 460,
    "kind": "variable",
    "name": "call_order_update",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~call_order_update",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{call_order_update}",
    "description": null,
    "lineNumber": 488,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 461,
    "kind": "variable",
    "name": "fill_order",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~fill_order",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{fill_order}",
    "description": null,
    "lineNumber": 496,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 462,
    "kind": "variable",
    "name": "authority",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~authority",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{authority}",
    "description": null,
    "lineNumber": 504,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 463,
    "kind": "variable",
    "name": "account_options",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_options",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_options}",
    "description": null,
    "lineNumber": 511,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 464,
    "kind": "variable",
    "name": "account_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_create}",
    "description": null,
    "lineNumber": 520,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 465,
    "kind": "variable",
    "name": "account_update",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_update",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_update}",
    "description": null,
    "lineNumber": 532,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 466,
    "kind": "variable",
    "name": "account_whitelist",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_whitelist",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_whitelist}",
    "description": null,
    "lineNumber": 541,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 467,
    "kind": "variable",
    "name": "account_upgrade",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_upgrade",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_upgrade}",
    "description": null,
    "lineNumber": 549,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 468,
    "kind": "variable",
    "name": "account_transfer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_transfer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_transfer}",
    "description": null,
    "lineNumber": 556,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 469,
    "kind": "variable",
    "name": "price",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~price",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{price}",
    "description": null,
    "lineNumber": 563,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 470,
    "kind": "variable",
    "name": "asset_options",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_options",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_options}",
    "description": null,
    "lineNumber": 568,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 471,
    "kind": "variable",
    "name": "bitasset_options",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~bitasset_options",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{bitasset_options}",
    "description": null,
    "lineNumber": 583,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 472,
    "kind": "variable",
    "name": "asset_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_create}",
    "description": null,
    "lineNumber": 593,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 473,
    "kind": "variable",
    "name": "asset_update",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_update",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_update}",
    "description": null,
    "lineNumber": 604,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 474,
    "kind": "variable",
    "name": "asset_update_bitasset",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_update_bitasset",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_update_bitasset}",
    "description": null,
    "lineNumber": 613,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 475,
    "kind": "variable",
    "name": "asset_update_feed_producers",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_update_feed_producers",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_update_feed_producers}",
    "description": null,
    "lineNumber": 621,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 476,
    "kind": "variable",
    "name": "asset_issue",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_issue",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_issue}",
    "description": null,
    "lineNumber": 632,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 477,
    "kind": "variable",
    "name": "asset_reserve",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_reserve",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_reserve}",
    "description": null,
    "lineNumber": 641,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 478,
    "kind": "variable",
    "name": "asset_fund_fee_pool",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_fund_fee_pool",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_fund_fee_pool}",
    "description": null,
    "lineNumber": 648,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 479,
    "kind": "variable",
    "name": "asset_settle",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_settle",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_settle}",
    "description": null,
    "lineNumber": 656,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 480,
    "kind": "variable",
    "name": "asset_global_settle",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_global_settle",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_global_settle}",
    "description": null,
    "lineNumber": 663,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 481,
    "kind": "variable",
    "name": "price_feed",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~price_feed",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{price_feed}",
    "description": null,
    "lineNumber": 671,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 482,
    "kind": "variable",
    "name": "asset_publish_feed",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_publish_feed",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_publish_feed}",
    "description": null,
    "lineNumber": 678,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 483,
    "kind": "variable",
    "name": "witness_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~witness_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{witness_create}",
    "description": null,
    "lineNumber": 686,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 484,
    "kind": "variable",
    "name": "witness_update",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~witness_update",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{witness_update}",
    "description": null,
    "lineNumber": 693,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 485,
    "kind": "variable",
    "name": "op_wrapper",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~op_wrapper",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{op_wrapper}",
    "description": null,
    "lineNumber": 701,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 486,
    "kind": "variable",
    "name": "proposal_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~proposal_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{proposal_create}",
    "description": null,
    "lineNumber": 703,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 487,
    "kind": "variable",
    "name": "proposal_update",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~proposal_update",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{proposal_update}",
    "description": null,
    "lineNumber": 712,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 488,
    "kind": "variable",
    "name": "proposal_delete",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~proposal_delete",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{proposal_delete}",
    "description": null,
    "lineNumber": 725,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 489,
    "kind": "variable",
    "name": "withdraw_permission_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~withdraw_permission_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{withdraw_permission_create}",
    "description": null,
    "lineNumber": 733,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 490,
    "kind": "variable",
    "name": "withdraw_permission_update",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~withdraw_permission_update",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{withdraw_permission_update}",
    "description": null,
    "lineNumber": 746,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 491,
    "kind": "variable",
    "name": "withdraw_permission_claim",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~withdraw_permission_claim",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{withdraw_permission_claim}",
    "description": null,
    "lineNumber": 760,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 492,
    "kind": "variable",
    "name": "withdraw_permission_delete",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~withdraw_permission_delete",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{withdraw_permission_delete}",
    "description": null,
    "lineNumber": 772,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 493,
    "kind": "variable",
    "name": "committee_member_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~committee_member_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{committee_member_create}",
    "description": null,
    "lineNumber": 782,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 494,
    "kind": "variable",
    "name": "committee_member_update",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~committee_member_update",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{committee_member_update}",
    "description": null,
    "lineNumber": 791,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 495,
    "kind": "variable",
    "name": "chain_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~chain_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{chain_parameters}",
    "description": null,
    "lineNumber": 801,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 496,
    "kind": "variable",
    "name": "committee_member_update_global_parameters",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~committee_member_update_global_parameters",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{committee_member_update_global_parameters}",
    "description": null,
    "lineNumber": 833,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 497,
    "kind": "variable",
    "name": "linear_vesting_policy_initializer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~linear_vesting_policy_initializer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{linear_vesting_policy_initializer}",
    "description": null,
    "lineNumber": 841,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 498,
    "kind": "variable",
    "name": "cdd_vesting_policy_initializer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~cdd_vesting_policy_initializer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{cdd_vesting_policy_initializer}",
    "description": null,
    "lineNumber": 850,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 499,
    "kind": "variable",
    "name": "vesting_policy_initializer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~vesting_policy_initializer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 858,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 500,
    "kind": "variable",
    "name": "vesting_balance_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~vesting_balance_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{vesting_balance_create}",
    "description": null,
    "lineNumber": 863,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 501,
    "kind": "variable",
    "name": "vesting_balance_withdraw",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~vesting_balance_withdraw",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{vesting_balance_withdraw}",
    "description": null,
    "lineNumber": 871,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 502,
    "kind": "variable",
    "name": "refund_worker_initializer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~refund_worker_initializer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{refund_worker_initializer}",
    "description": null,
    "lineNumber": 881,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 503,
    "kind": "variable",
    "name": "vesting_balance_worker_initializer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~vesting_balance_worker_initializer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{vesting_balance_worker_initializer}",
    "description": null,
    "lineNumber": 885,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 504,
    "kind": "variable",
    "name": "burn_worker_initializer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~burn_worker_initializer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{burn_worker_initializer}",
    "description": null,
    "lineNumber": 890,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 505,
    "kind": "variable",
    "name": "worker_initializer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~worker_initializer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 894,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 506,
    "kind": "variable",
    "name": "worker_create",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~worker_create",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{worker_create}",
    "description": null,
    "lineNumber": 900,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 507,
    "kind": "variable",
    "name": "custom",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~custom",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{custom}",
    "description": null,
    "lineNumber": 911,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 508,
    "kind": "variable",
    "name": "account_name_eq_lit_predicate",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~account_name_eq_lit_predicate",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{account_name_eq_lit_predicate}",
    "description": null,
    "lineNumber": 919,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 509,
    "kind": "variable",
    "name": "asset_symbol_eq_lit_predicate",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_symbol_eq_lit_predicate",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_symbol_eq_lit_predicate}",
    "description": null,
    "lineNumber": 927,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 510,
    "kind": "variable",
    "name": "block_id_predicate",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~block_id_predicate",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{block_id_predicate}",
    "description": null,
    "lineNumber": 935,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 511,
    "kind": "variable",
    "name": "predicate",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~predicate",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 939,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 512,
    "kind": "variable",
    "name": "assert",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~assert",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{assert}",
    "description": null,
    "lineNumber": 945,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 513,
    "kind": "variable",
    "name": "balance_claim",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~balance_claim",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{balance_claim}",
    "description": null,
    "lineNumber": 953,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 514,
    "kind": "variable",
    "name": "override_transfer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~override_transfer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{override_transfer}",
    "description": null,
    "lineNumber": 961,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 515,
    "kind": "variable",
    "name": "stealth_confirmation",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~stealth_confirmation",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{stealth_confirmation}",
    "description": null,
    "lineNumber": 971,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 516,
    "kind": "variable",
    "name": "blind_output",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~blind_output",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{blind_output}",
    "description": null,
    "lineNumber": 977,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 517,
    "kind": "variable",
    "name": "transfer_to_blind",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~transfer_to_blind",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{transfer_to_blind}",
    "description": null,
    "lineNumber": 984,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 518,
    "kind": "variable",
    "name": "blind_input",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~blind_input",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{blind_input}",
    "description": null,
    "lineNumber": 992,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 519,
    "kind": "variable",
    "name": "blind_transfer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~blind_transfer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{blind_transfer}",
    "description": null,
    "lineNumber": 997,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 520,
    "kind": "variable",
    "name": "transfer_from_blind",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~transfer_from_blind",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{transfer_from_blind}",
    "description": null,
    "lineNumber": 1003,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 521,
    "kind": "variable",
    "name": "asset_settle_cancel",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_settle_cancel",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_settle_cancel}",
    "description": null,
    "lineNumber": 1011,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 522,
    "kind": "variable",
    "name": "asset_claim_fees",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_claim_fees",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_claim_fees}",
    "description": null,
    "lineNumber": 1019,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 523,
    "kind": "variable",
    "name": "fba_distribute",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~fba_distribute",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{fba_distribute}",
    "description": null,
    "lineNumber": 1026,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 524,
    "kind": "variable",
    "name": "bid_collateral",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~bid_collateral",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{bid_collateral}",
    "description": null,
    "lineNumber": 1033,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 525,
    "kind": "variable",
    "name": "execute_bid",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~execute_bid",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{execute_bid}",
    "description": null,
    "lineNumber": 1041,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 526,
    "kind": "variable",
    "name": "asset_claim_pool",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_claim_pool",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_claim_pool}",
    "description": null,
    "lineNumber": 1048,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 527,
    "kind": "variable",
    "name": "asset_update_issuer",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~asset_update_issuer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{asset_update_issuer}",
    "description": null,
    "lineNumber": 1056,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 528,
    "kind": "variable",
    "name": "transaction",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~transaction",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{transaction}",
    "description": null,
    "lineNumber": 1116,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 529,
    "kind": "variable",
    "name": "signed_transaction",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~signed_transaction",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{signed_transaction}",
    "description": null,
    "lineNumber": 1124,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 530,
    "kind": "variable",
    "name": "stealth_memo_data",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~stealth_memo_data",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{stealth_memo_data}",
    "description": null,
    "lineNumber": 1138,
    "undocument": true,
    "type": {
      "types": [
        "lib/serializer/src/serializer.js~Serializer"
      ]
    }
  },
  {
    "__docId__": 531,
    "kind": "variable",
    "name": "operation",
    "memberof": "lib/serializer/src/operations.js",
    "static": true,
    "longname": "lib/serializer/src/operations.js~operation",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/operations.js",
    "importStyle": "{operation}",
    "description": null,
    "lineNumber": 46,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 532,
    "kind": "file",
    "name": "lib/serializer/src/precision.js",
    "content": "var _my;\n\nimport v from \"./SerializerValidation\";\nimport BigInteger from \"bigi\";\n\n// _internal is for low-level transaction code\nconst _internal = {\n    // Warning: Long operations may over-flow without detection\n    to_long64(number_or_string, precision, error_info = \"\") {\n        v.required(number_or_string, \"number_or_string \" + error_info);\n        v.required(precision, \"precision \" + error_info);\n        return v.to_long(\n            _internal.decimal_precision_string(\n                number_or_string,\n                precision,\n                error_info\n            )\n        );\n    },\n\n    decimal_precision_string(number, precision, error_info = \"\") {\n        v.required(number, \"number \" + error_info);\n        v.required(precision, \"precision \" + error_info);\n\n        var number_string = v.to_string(number);\n        number_string = number_string.trim();\n        precision = v.to_number(precision);\n\n        // remove leading zeros (not suffixing)\n        var number_parts = number_string.match(/^-?0*([0-9]*)\\.?([0-9]*)$/);\n        if (!number_parts) {\n            throw new Error(`Invalid number: ${number_string} ${error_info}`);\n        }\n\n        var sign = number_string.charAt(0) === \"-\" ? \"-\" : \"\";\n        var int_part = number_parts[1];\n        var decimal_part = number_parts[2];\n        if (!decimal_part) {\n            decimal_part = \"\";\n        }\n\n        // remove trailing zeros\n        while (/0$/.test(decimal_part)) {\n            decimal_part = decimal_part.substring(0, decimal_part.length - 1);\n        }\n\n        var zero_pad_count = precision - decimal_part.length;\n        if (zero_pad_count < 0) {\n            throw new Error(\n                `overflow, up to ${precision} decimals may be used ${error_info}`\n            );\n        }\n\n        if (sign === \"-\" && !/[1-9]/.test(int_part + decimal_part)) {\n            sign = \"\";\n        }\n        if (int_part === \"\") {\n            int_part = \"0\";\n        }\n        for (\n            var i = 0;\n            0 < zero_pad_count ? i < zero_pad_count : i > zero_pad_count;\n            0 < zero_pad_count ? i++ : i++\n        ) {\n            decimal_part += \"0\";\n        }\n\n        return sign + int_part + decimal_part;\n    }\n};\n\n_my = {\n    // Result may be used for int64 types (like transfer amount).  Asset's\n    // precision is used to convert the number to a whole number with an implied\n    // decimal place.\n\n    // \"1.01\" with a precision of 2 returns long 101\n    // See http://cryptocoinjs.com/modules/misc/bigi/#example\n\n    to_bigint64(number_or_string, precision, error_info = \"\") {\n        var long = _internal.to_long64(number_or_string, precision, error_info);\n        return BigInteger(long.toString());\n    },\n\n    // 101 string or long with a precision of 2 returns \"1.01\"\n    to_string64(number_or_string, precision, error_info = \"\") {\n        v.required(number_or_string, error_info);\n        v.number(precision, error_info);\n        var number_long = v.to_long(number_or_string, error_info);\n        var string64 = _internal.decimal_precision_string(\n            number_long,\n            precision,\n            error_info\n        );\n        v.no_overflow64(string64, error_info);\n        return string64;\n    },\n\n    _internal\n};\n\nexport default _my;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/precision.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 533,
    "kind": "variable",
    "name": "_internal",
    "memberof": "lib/serializer/src/precision.js",
    "static": true,
    "longname": "lib/serializer/src/precision.js~_internal",
    "access": "private",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/precision.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "{\"to_long64\": function, \"decimal_precision_string\": function}"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 534,
    "kind": "file",
    "name": "lib/serializer/src/serializer.js",
    "content": "import ByteBuffer from \"bytebuffer\";\nimport EC from \"./error_with_cause\";\nconst Buffer = require(\"safe-buffer\").Buffer;\n\nconst HEX_DUMP = process.env.npm_config__graphene_serializer_hex_dump;\n\nclass Serializer {\n    constructor(operation_name, types) {\n        this.operation_name = operation_name;\n        this.types = types;\n        if (this.types) this.keys = Object.keys(this.types);\n\n        Serializer.printDebug = true;\n    }\n\n    fromByteBuffer(b) {\n        var object = {};\n        var field = null;\n        try {\n            var iterable = this.keys;\n            for (var i = 0, field; i < iterable.length; i++) {\n                field = iterable[i];\n                var type = this.types[field];\n                try {\n                    if (HEX_DUMP) {\n                        if (type.operation_name) {\n                            console.error(type.operation_name);\n                        } else {\n                            var o1 = b.offset;\n                            type.fromByteBuffer(b);\n                            var o2 = b.offset;\n                            b.offset = o1;\n                            //b.reset()\n                            var _b = b.copy(o1, o2);\n                            console.error(\n                                `${this.operation_name}.${field}\\t`,\n                                _b.toHex()\n                            );\n                        }\n                    }\n                    object[field] = type.fromByteBuffer(b);\n                } catch (e) {\n                    if (Serializer.printDebug) {\n                        console.error(\n                            `Error reading ${\n                                this.operation_name\n                            }.${field} in data:`\n                        );\n                        b.printDebug();\n                    }\n                    throw e;\n                }\n            }\n        } catch (error) {\n            EC.throw(this.operation_name + \".\" + field, error);\n        }\n\n        return object;\n    }\n\n    appendByteBuffer(b, object) {\n        var field = null;\n        try {\n            var iterable = this.keys;\n            for (var i = 0, field; i < iterable.length; i++) {\n                field = iterable[i];\n                var type = this.types[field];\n                type.appendByteBuffer(b, object[field]);\n            }\n        } catch (error) {\n            try {\n                EC.throw(\n                    this.operation_name +\n                        \".\" +\n                        field +\n                        \" = \" +\n                        JSON.stringify(object[field]),\n                    error\n                );\n            } catch (e) {\n                // circular ref\n                EC.throw(\n                    this.operation_name + \".\" + field + \" = \" + object[field],\n                    error\n                );\n            }\n        }\n        return;\n    }\n\n    fromObject(serialized_object) {\n        var result = {};\n        var field = null;\n        try {\n            var iterable = this.keys;\n            for (var i = 0, field; i < iterable.length; i++) {\n                field = iterable[i];\n                var type = this.types[field];\n                var value = serialized_object[field];\n                //DEBUG value = value.resolve if value.resolve\n                //DEBUG console.log('... value',field,value)\n                var object = type.fromObject(value);\n                result[field] = object;\n            }\n        } catch (error) {\n            EC.throw(this.operation_name + \".\" + field, error);\n        }\n\n        return result;\n    }\n\n    /**\n        @arg {boolean} [debug.use_default = false] - more template friendly\n        @arg {boolean} [debug.annotate = false] - add user-friendly information\n    */\n    toObject(\n        serialized_object = {},\n        debug = {use_default: false, annotate: false}\n    ) {\n        var result = {};\n        var field = null;\n        try {\n            if (!this.types) return result;\n\n            var iterable = this.keys;\n            for (var i = 0, field; i < iterable.length; i++) {\n                field = iterable[i];\n                var type = this.types[field];\n                var object = type.toObject(\n                    typeof serialized_object !== \"undefined\" &&\n                    serialized_object !== null\n                        ? serialized_object[field]\n                        : undefined,\n                    debug\n                );\n                result[field] = object;\n                if (HEX_DUMP) {\n                    var b = new ByteBuffer(\n                        ByteBuffer.DEFAULT_CAPACITY,\n                        ByteBuffer.LITTLE_ENDIAN\n                    );\n                    type.appendByteBuffer(\n                        b,\n                        typeof serialized_object !== \"undefined\" &&\n                        serialized_object !== null\n                            ? serialized_object[field]\n                            : undefined\n                    );\n                    b = b.copy(0, b.offset);\n                    console.error(this.operation_name + \".\" + field, b.toHex());\n                }\n            }\n        } catch (error) {\n            EC.throw(this.operation_name + \".\" + field, error);\n        }\n\n        return result;\n    }\n\n    /** Sort by the first element in a operation */\n    compare(a, b) {\n        let first_key = this.keys[0];\n        let first_type = this.types[first_key];\n\n        let valA = a[first_key];\n        let valB = b[first_key];\n\n        if (first_type.compare) return first_type.compare(valA, valB);\n\n        if (typeof valA === \"number\" && typeof valB === \"number\")\n            return valA - valB;\n\n        let encoding;\n        if (Buffer.isBuffer(valA) && Buffer.isBuffer(valB)) {\n            // A binary string compare does not work.  If localeCompare is well supported that could replace HEX.  Performanance is very good so comparing HEX works.\n            encoding = \"hex\";\n        }\n\n        let strA = valA.toString(encoding);\n        let strB = valB.toString(encoding);\n        return strA > strB ? 1 : strA < strB ? -1 : 0;\n    }\n\n    // <helper_functions>\n\n    fromHex(hex) {\n        var b = ByteBuffer.fromHex(hex, ByteBuffer.LITTLE_ENDIAN);\n        return this.fromByteBuffer(b);\n    }\n\n    fromBuffer(buffer) {\n        var b = ByteBuffer.fromBinary(\n            buffer.toString(\"binary\"),\n            ByteBuffer.LITTLE_ENDIAN\n        );\n        return this.fromByteBuffer(b);\n    }\n\n    toHex(object) {\n        // return this.toBuffer(object).toString(\"hex\")\n        var b = this.toByteBuffer(object);\n        return b.toHex();\n    }\n\n    toByteBuffer(object) {\n        var b = new ByteBuffer(\n            ByteBuffer.DEFAULT_CAPACITY,\n            ByteBuffer.LITTLE_ENDIAN\n        );\n        this.appendByteBuffer(b, object);\n        return b.copy(0, b.offset);\n    }\n\n    toBuffer(object) {\n        return Buffer.from(this.toByteBuffer(object).toBinary(), \"binary\");\n    }\n}\n\nexport default Serializer;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/serializer.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 535,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/serializer/src/serializer.js",
    "static": true,
    "longname": "lib/serializer/src/serializer.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/serializer.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 536,
    "kind": "variable",
    "name": "HEX_DUMP",
    "memberof": "lib/serializer/src/serializer.js",
    "static": true,
    "longname": "lib/serializer/src/serializer.js~HEX_DUMP",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/serializer.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 537,
    "kind": "class",
    "name": "Serializer",
    "memberof": "lib/serializer/src/serializer.js",
    "static": true,
    "longname": "lib/serializer/src/serializer.js~Serializer",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/serializer.js",
    "importStyle": "Serializer",
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 538,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 8,
    "undocument": true
  },
  {
    "__docId__": 539,
    "kind": "member",
    "name": "operation_name",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#operation_name",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 540,
    "kind": "member",
    "name": "types",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#types",
    "access": "public",
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 541,
    "kind": "member",
    "name": "keys",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#keys",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 542,
    "kind": "method",
    "name": "fromByteBuffer",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#fromByteBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "params": [
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 543,
    "kind": "method",
    "name": "appendByteBuffer",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#appendByteBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 61,
    "undocument": true,
    "params": [
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "object",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 544,
    "kind": "method",
    "name": "fromObject",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#fromObject",
    "access": "public",
    "description": null,
    "lineNumber": 91,
    "undocument": true,
    "params": [
      {
        "name": "serialized_object",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 545,
    "kind": "method",
    "name": "toObject",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#toObject",
    "access": "public",
    "description": "",
    "lineNumber": 116,
    "unknown": [
      {
        "tagName": "@arg",
        "tagValue": "{boolean} [debug.use_default = false] - more template friendly"
      },
      {
        "tagName": "@arg",
        "tagValue": "{boolean} [debug.annotate = false] - add user-friendly information"
      }
    ],
    "params": [
      {
        "name": "serialized_object",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      },
      {
        "name": "debug",
        "optional": true,
        "types": [
          "{\"use_default\": boolean, \"annotate\": boolean}"
        ],
        "defaultRaw": {
          "use_default": false,
          "annotate": false
        },
        "defaultValue": "{\"use_default\":false,\"annotate\":false}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 546,
    "kind": "method",
    "name": "compare",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#compare",
    "access": "public",
    "description": "Sort by the first element in a operation",
    "lineNumber": 161,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 547,
    "kind": "method",
    "name": "fromHex",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#fromHex",
    "access": "public",
    "description": null,
    "lineNumber": 186,
    "undocument": true,
    "params": [
      {
        "name": "hex",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 548,
    "kind": "method",
    "name": "fromBuffer",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#fromBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 191,
    "undocument": true,
    "params": [
      {
        "name": "buffer",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 549,
    "kind": "method",
    "name": "toHex",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#toHex",
    "access": "public",
    "description": null,
    "lineNumber": 199,
    "undocument": true,
    "params": [
      {
        "name": "object",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 550,
    "kind": "method",
    "name": "toByteBuffer",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#toByteBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 205,
    "undocument": true,
    "params": [
      {
        "name": "object",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 551,
    "kind": "method",
    "name": "toBuffer",
    "memberof": "lib/serializer/src/serializer.js~Serializer",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "lib/serializer/src/serializer.js~Serializer#toBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 214,
    "undocument": true,
    "params": [
      {
        "name": "object",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 552,
    "kind": "file",
    "name": "lib/serializer/src/template.js",
    "content": "/** Console print any transaction object with zero default values. */\nexport default function template(op) {\n    var object = op.toObject(void 0, {use_default: true, annotate: true});\n\n    // visual (with descriptions)\n    console.error(JSON.stringify(object, null, 4));\n\n    // usable in a copy-paste\n\n    object = op.toObject(void 0, {use_default: true, annotate: false});\n\n    // copy-paste one-lineer\n    console.error(JSON.stringify(object));\n}\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/template.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 553,
    "kind": "function",
    "name": "template",
    "memberof": "lib/serializer/src/template.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/template.js~template",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/template.js",
    "importStyle": "template",
    "description": "Console print any transaction object with zero default values.",
    "lineNumber": 2,
    "params": [
      {
        "name": "op",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 554,
    "kind": "file",
    "name": "lib/serializer/src/types.js",
    "content": "// Low-level types that make up operations\n\nimport v from \"./SerializerValidation\";\nimport fp from \"./FastParser\";\n\nimport ChainTypes from \"../../chain/src/ChainTypes\";\nimport ObjectId from \"../../chain/src/ObjectId\";\n\nimport {PublicKey, Address} from \"../../ecc\";\nimport {ChainConfig} from \"bitsharesjs-ws\";\n\nconst Buffer = require(\"safe-buffer\").Buffer;\n\nvar Types = {};\n\nconst HEX_DUMP = process.env.npm_config__graphene_serializer_hex_dump;\n\nTypes.uint8 = {\n    fromByteBuffer(b) {\n        return b.readUint8();\n    },\n    appendByteBuffer(b, object) {\n        v.require_range(0, 0xff, object, `uint8 ${object}`);\n        b.writeUint8(object);\n        return;\n    },\n    fromObject(object) {\n        v.require_range(0, 0xff, object, `uint8 ${object}`);\n        return object;\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return 0;\n        }\n        v.require_range(0, 0xff, object, `uint8 ${object}`);\n        return parseInt(object);\n    }\n};\n\nTypes.uint16 = {\n    fromByteBuffer(b) {\n        return b.readUint16();\n    },\n    appendByteBuffer(b, object) {\n        v.require_range(0, 0xffff, object, `uint16 ${object}`);\n        b.writeUint16(object);\n        return;\n    },\n    fromObject(object) {\n        v.require_range(0, 0xffff, object, `uint16 ${object}`);\n        return object;\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return 0;\n        }\n        v.require_range(0, 0xffff, object, `uint16 ${object}`);\n        return parseInt(object);\n    }\n};\n\nTypes.uint32 = {\n    fromByteBuffer(b) {\n        return b.readUint32();\n    },\n    appendByteBuffer(b, object) {\n        v.require_range(0, 0xffffffff, object, `uint32 ${object}`);\n        b.writeUint32(object);\n        return;\n    },\n    fromObject(object) {\n        v.require_range(0, 0xffffffff, object, `uint32 ${object}`);\n        return object;\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return 0;\n        }\n        v.require_range(0, 0xffffffff, object, `uint32 ${object}`);\n        return parseInt(object);\n    }\n};\n\nvar MIN_SIGNED_32 = -1 * Math.pow(2, 31);\nvar MAX_SIGNED_32 = Math.pow(2, 31) - 1;\n\nTypes.varint32 = {\n    fromByteBuffer(b) {\n        return b.readVarint32();\n    },\n    appendByteBuffer(b, object) {\n        v.require_range(\n            MIN_SIGNED_32,\n            MAX_SIGNED_32,\n            object,\n            `uint32 ${object}`\n        );\n        b.writeVarint32(object);\n        return;\n    },\n    fromObject(object) {\n        v.require_range(\n            MIN_SIGNED_32,\n            MAX_SIGNED_32,\n            object,\n            `uint32 ${object}`\n        );\n        return object;\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return 0;\n        }\n        v.require_range(\n            MIN_SIGNED_32,\n            MAX_SIGNED_32,\n            object,\n            `uint32 ${object}`\n        );\n        return parseInt(object);\n    }\n};\n\nTypes.int64 = {\n    fromByteBuffer(b) {\n        return b.readInt64();\n    },\n    appendByteBuffer(b, object) {\n        v.required(object);\n        b.writeInt64(v.to_long(object));\n        return;\n    },\n    fromObject(object) {\n        v.required(object);\n        return v.to_long(object);\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return \"0\";\n        }\n        v.required(object);\n        return v.to_long(object).toString();\n    }\n};\n\nTypes.uint64 = {\n    fromByteBuffer(b) {\n        return b.readUint64();\n    },\n    appendByteBuffer(b, object) {\n        b.writeUint64(v.to_long(v.unsigned(object), undefined, true));\n        return;\n    },\n    fromObject(object) {\n        return v.to_long(v.unsigned(object), undefined, true);\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return \"0\";\n        }\n        return v.to_long(object, undefined, true).toString();\n    }\n};\n\nTypes.string = {\n    fromByteBuffer(b) {\n        var b_copy;\n        var len = b.readVarint32();\n        (b_copy = b.copy(b.offset, b.offset + len)), b.skip(len);\n        return Buffer.from(b_copy.toBinary(), \"binary\");\n    },\n    appendByteBuffer(b, object) {\n        v.required(object);\n        b.writeVarint32(object.length);\n        b.append(object.toString(\"binary\"), \"binary\");\n        return;\n    },\n    fromObject(object) {\n        v.required(object);\n        return Buffer.from(object);\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return \"\";\n        }\n        return object.toString();\n    }\n};\n\nTypes.bytes = function(size) {\n    return {\n        fromByteBuffer(b) {\n            if (size === undefined) {\n                var b_copy;\n                var len = b.readVarint32();\n                (b_copy = b.copy(b.offset, b.offset + len)), b.skip(len);\n                return Buffer.from(b_copy.toBinary(), \"binary\");\n            } else {\n                (b_copy = b.copy(b.offset, b.offset + size)), b.skip(size);\n                return Buffer.from(b_copy.toBinary(), \"binary\");\n            }\n        },\n        appendByteBuffer(b, object) {\n            v.required(object);\n            if (typeof object === \"string\") object = Buffer.from(object, \"hex\");\n\n            if (size === undefined) {\n                b.writeVarint32(object.length);\n            }\n            b.append(object.toString(\"binary\"), \"binary\");\n            return;\n        },\n        fromObject(object) {\n            v.required(object);\n            if (Buffer.isBuffer(object)) return object;\n\n            return Buffer.from(object, \"hex\");\n        },\n        toObject(object, debug = {}) {\n            if (debug.use_default && object === undefined) {\n                var zeros = function(num) {\n                    return new Array(num).join(\"00\");\n                };\n                return zeros(size);\n            }\n            v.required(object);\n            return object.toString(\"hex\");\n        }\n    };\n};\n\nTypes.bool = {\n    fromByteBuffer(b) {\n        return b.readUint8() === 1;\n    },\n    appendByteBuffer(b, object) {\n        // supports boolean or integer\n        b.writeUint8(JSON.parse(object) ? 1 : 0);\n        return;\n    },\n    fromObject(object) {\n        return JSON.parse(object) ? true : false;\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return false;\n        }\n        return JSON.parse(object) ? true : false;\n    }\n};\n\nTypes.void = {\n    fromByteBuffer(b) {\n        throw new Error(\"(void) undefined type\");\n    },\n    appendByteBuffer(b, object) {\n        throw new Error(\"(void) undefined type\");\n    },\n    fromObject(object) {\n        throw new Error(\"(void) undefined type\");\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return undefined;\n        }\n        throw new Error(\"(void) undefined type\");\n    }\n};\n\nTypes.array = function(st_operation) {\n    return {\n        fromByteBuffer(b) {\n            var size = b.readVarint32();\n            if (HEX_DUMP) {\n                console.log(\"varint32 size = \" + size.toString(16));\n            }\n            var result = [];\n            for (\n                var i = 0;\n                0 < size ? i < size : i > size;\n                0 < size ? i++ : i++\n            ) {\n                result.push(st_operation.fromByteBuffer(b));\n            }\n            return sortOperation(result, st_operation);\n        },\n        appendByteBuffer(b, object) {\n            v.required(object);\n            object = sortOperation(object, st_operation);\n            b.writeVarint32(object.length);\n            for (var i = 0, o; i < object.length; i++) {\n                o = object[i];\n                st_operation.appendByteBuffer(b, o);\n            }\n        },\n        fromObject(object) {\n            v.required(object);\n            object = sortOperation(object, st_operation);\n            var result = [];\n            for (var i = 0, o; i < object.length; i++) {\n                o = object[i];\n                result.push(st_operation.fromObject(o));\n            }\n            return result;\n        },\n        toObject(object, debug = {}) {\n            if (debug.use_default && object === undefined) {\n                return [st_operation.toObject(object, debug)];\n            }\n            v.required(object);\n            object = sortOperation(object, st_operation);\n\n            var result = [];\n            for (var i = 0, o; i < object.length; i++) {\n                o = object[i];\n                result.push(st_operation.toObject(o, debug));\n            }\n            return result;\n        }\n    };\n};\n\nTypes.time_point_sec = {\n    fromByteBuffer(b) {\n        return b.readUint32();\n    },\n    appendByteBuffer(b, object) {\n        if (typeof object !== \"number\")\n            object = Types.time_point_sec.fromObject(object);\n\n        b.writeUint32(object);\n        return;\n    },\n    fromObject(object) {\n        v.required(object);\n\n        if (typeof object === \"number\") return object;\n\n        if (object.getTime) return Math.floor(object.getTime() / 1000);\n\n        if (typeof object !== \"string\")\n            throw new Error(\"Unknown date type: \" + object);\n\n        if (/T[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$/.test(object))\n            object = object + \"Z\";\n\n        return Math.floor(new Date(object).getTime() / 1000);\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined)\n            return new Date(0).toISOString().split(\".\")[0];\n\n        v.required(object);\n\n        if (typeof object === \"string\") return object;\n\n        if (object.getTime) return object.toISOString().split(\".\")[0];\n\n        var int = parseInt(object);\n        v.require_range(0, 0xffffffff, int, `uint32 ${object}`);\n        return new Date(int * 1000).toISOString().split(\".\")[0];\n    }\n};\n\nTypes.set = function(st_operation) {\n    return {\n        validate(array) {\n            var dup_map = {};\n            for (var i = 0, o; i < array.length; i++) {\n                o = array[i];\n                var ref;\n                if (\n                    ((ref = typeof o), [\"string\", \"number\"].indexOf(ref) >= 0)\n                ) {\n                    if (dup_map[o] !== undefined) {\n                        throw new Error(\"duplicate (set)\");\n                    }\n                    dup_map[o] = true;\n                }\n            }\n            return sortOperation(array, st_operation);\n        },\n        fromByteBuffer(b) {\n            var size = b.readVarint32();\n            if (HEX_DUMP) {\n                console.log(\"varint32 size = \" + size.toString(16));\n            }\n            return this.validate(\n                (() => {\n                    var result = [];\n                    for (\n                        var i = 0;\n                        0 < size ? i < size : i > size;\n                        0 < size ? i++ : i++\n                    ) {\n                        result.push(st_operation.fromByteBuffer(b));\n                    }\n                    return result;\n                })()\n            );\n        },\n        appendByteBuffer(b, object) {\n            if (!object) {\n                object = [];\n            }\n            b.writeVarint32(object.length);\n            var iterable = this.validate(object);\n            for (var i = 0, o; i < iterable.length; i++) {\n                o = iterable[i];\n                st_operation.appendByteBuffer(b, o);\n            }\n            return;\n        },\n        fromObject(object) {\n            if (!object) {\n                object = [];\n            }\n            return this.validate(\n                (() => {\n                    var result = [];\n                    for (var i = 0, o; i < object.length; i++) {\n                        o = object[i];\n                        result.push(st_operation.fromObject(o));\n                    }\n                    return result;\n                })()\n            );\n        },\n        toObject(object, debug = {}) {\n            if (debug.use_default && object === undefined) {\n                return [st_operation.toObject(object, debug)];\n            }\n            if (!object) {\n                object = [];\n            }\n            return this.validate(\n                (() => {\n                    var result = [];\n                    for (var i = 0, o; i < object.length; i++) {\n                        o = object[i];\n                        result.push(st_operation.toObject(o, debug));\n                    }\n                    return result;\n                })()\n            );\n        }\n    };\n};\n\n// global_parameters_update_operation current_fees\nTypes.fixed_array = function(count, st_operation) {\n    return {\n        fromByteBuffer: function(b) {\n            var i, j, ref, results;\n            results = [];\n            for (i = j = 0, ref = count; j < ref; i = j += 1) {\n                results.push(st_operation.fromByteBuffer(b));\n            }\n            return sortOperation(results, st_operation);\n        },\n        appendByteBuffer: function(b, object) {\n            var i, j, ref;\n            if (count !== 0) {\n                v.required(object);\n                object = sortOperation(object, st_operation);\n            }\n            for (i = j = 0, ref = count; j < ref; i = j += 1) {\n                st_operation.appendByteBuffer(b, object[i]);\n            }\n        },\n        fromObject: function(object) {\n            var i, j, ref, results;\n            if (count !== 0) {\n                v.required(object);\n            }\n            results = [];\n            for (i = j = 0, ref = count; j < ref; i = j += 1) {\n                results.push(st_operation.fromObject(object[i]));\n            }\n            return results;\n        },\n        toObject: function(object, debug) {\n            var i, j, k, ref, ref1, results, results1;\n            if (debug == null) {\n                debug = {};\n            }\n            if (debug.use_default && object === void 0) {\n                results = [];\n                for (i = j = 0, ref = count; j < ref; i = j += 1) {\n                    results.push(st_operation.toObject(void 0, debug));\n                }\n                return results;\n            }\n            if (count !== 0) {\n                v.required(object);\n            }\n            results1 = [];\n            for (i = k = 0, ref1 = count; k < ref1; i = k += 1) {\n                results1.push(st_operation.toObject(object[i], debug));\n            }\n            return results1;\n        }\n    };\n};\n\n/* Supports instance numbers (11) or object types (1.2.11).  Object type\nValidation is enforced when an object type is used. */\nvar id_type = function(reserved_spaces, object_type) {\n    v.required(reserved_spaces, \"reserved_spaces\");\n    v.required(object_type, \"object_type\");\n    return {\n        fromByteBuffer(b) {\n            return b.readVarint32();\n        },\n        appendByteBuffer(b, object) {\n            v.required(object);\n            if (object.resolve !== undefined) {\n                object = object.resolve;\n            }\n            // convert 1.2.n into just n\n            if (/^[0-9]+\\.[0-9]+\\.[0-9]+$/.test(object)) {\n                object = v.get_instance(reserved_spaces, object_type, object);\n            }\n            b.writeVarint32(v.to_number(object));\n            return;\n        },\n        fromObject(object) {\n            v.required(object);\n            if (object.resolve !== undefined) {\n                object = object.resolve;\n            }\n            if (v.is_digits(object)) {\n                return v.to_number(object);\n            }\n            return v.get_instance(reserved_spaces, object_type, object);\n        },\n        toObject(object, debug = {}) {\n            var object_type_id = ChainTypes.object_type[object_type];\n            if (debug.use_default && object === undefined) {\n                return `${reserved_spaces}.${object_type_id}.0`;\n            }\n            v.required(object);\n            if (object.resolve !== undefined) {\n                object = object.resolve;\n            }\n            if (/^[0-9]+\\.[0-9]+\\.[0-9]+$/.test(object)) {\n                object = v.get_instance(reserved_spaces, object_type, object);\n            }\n\n            return `${reserved_spaces}.${object_type_id}.` + object;\n        }\n    };\n};\n\nTypes.protocol_id_type = function(name) {\n    v.required(name, \"name\");\n    return id_type(ChainTypes.reserved_spaces.protocol_ids, name);\n};\n\nTypes.object_id_type = {\n    fromByteBuffer(b) {\n        return ObjectId.fromByteBuffer(b);\n    },\n    appendByteBuffer(b, object) {\n        v.required(object);\n        if (object.resolve !== undefined) {\n            object = object.resolve;\n        }\n        object = ObjectId.fromString(object);\n        object.appendByteBuffer(b);\n        return;\n    },\n    fromObject(object) {\n        v.required(object);\n        if (object.resolve !== undefined) {\n            object = object.resolve;\n        }\n        return ObjectId.fromString(object);\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return \"0.0.0\";\n        }\n        v.required(object);\n        if (object.resolve !== undefined) {\n            object = object.resolve;\n        }\n        object = ObjectId.fromString(object);\n        return object.toString();\n    }\n};\n\nTypes.vote_id = {\n    TYPE: 0x000000ff,\n    ID: 0xffffff00,\n    fromByteBuffer(b) {\n        var value = b.readUint32();\n        return {\n            type: value & this.TYPE,\n            id: value & this.ID\n        };\n    },\n    appendByteBuffer(b, object) {\n        v.required(object);\n        if (object === \"string\") object = Types.vote_id.fromObject(object);\n\n        var value = (object.id << 8) | object.type;\n        b.writeUint32(value);\n        return;\n    },\n    fromObject(object) {\n        v.required(object, \"(type vote_id)\");\n        if (typeof object === \"object\") {\n            v.required(object.type, \"type\");\n            v.required(object.id, \"id\");\n            return object;\n        }\n        v.require_test(/^[0-9]+:[0-9]+$/, object, `vote_id format ${object}`);\n        var [type, id] = object.split(\":\");\n        v.require_range(0, 0xff, type, `vote type ${object}`);\n        v.require_range(0, 0xffffff, id, `vote id ${object}`);\n        return {type, id};\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return \"0:0\";\n        }\n        v.required(object);\n        if (typeof object === \"string\")\n            object = Types.vote_id.fromObject(object);\n\n        return object.type + \":\" + object.id;\n    },\n    compare(a, b) {\n        if (typeof a !== \"object\") a = Types.vote_id.fromObject(a);\n        if (typeof b !== \"object\") b = Types.vote_id.fromObject(b);\n        return parseInt(a.id) - parseInt(b.id);\n    }\n};\n\nTypes.optional = function(st_operation) {\n    v.required(st_operation, \"st_operation\");\n    return {\n        fromByteBuffer(b) {\n            if (!(b.readUint8() === 1)) {\n                return undefined;\n            }\n            return st_operation.fromByteBuffer(b);\n        },\n        appendByteBuffer(b, object) {\n            if (object !== null && object !== undefined) {\n                b.writeUint8(1);\n                st_operation.appendByteBuffer(b, object);\n            } else {\n                b.writeUint8(0);\n            }\n            return;\n        },\n        fromObject(object) {\n            if (object === undefined) {\n                return undefined;\n            }\n            return st_operation.fromObject(object);\n        },\n        toObject(object, debug = {}) {\n            // toObject is only null save if use_default is true\n            var result_object = (() => {\n                if (!debug.use_default && object === undefined) {\n                    return undefined;\n                } else {\n                    return st_operation.toObject(object, debug);\n                }\n            })();\n\n            if (debug.annotate) {\n                if (typeof result_object === \"object\") {\n                    result_object.__optional = \"parent is optional\";\n                } else {\n                    result_object = {__optional: result_object};\n                }\n            }\n            return result_object;\n        }\n    };\n};\n\nTypes.static_variant = function(_st_operations) {\n    return {\n        nosort: true,\n        st_operations: _st_operations,\n        fromByteBuffer(b) {\n            var type_id = b.readVarint32();\n            var st_operation = this.st_operations[type_id];\n            if (HEX_DUMP) {\n                console.error(\n                    `static_variant id 0x${type_id.toString(16)} (${type_id})`\n                );\n            }\n            v.required(st_operation, `operation ${type_id}`);\n            return [type_id, st_operation.fromByteBuffer(b)];\n        },\n        appendByteBuffer(b, object) {\n            v.required(object);\n            var type_id = object[0];\n            var st_operation = this.st_operations[type_id];\n            v.required(st_operation, `operation ${type_id}`);\n            b.writeVarint32(type_id);\n            st_operation.appendByteBuffer(b, object[1]);\n            return;\n        },\n        fromObject(object) {\n            v.required(object);\n            var type_id = object[0];\n            var st_operation = this.st_operations[type_id];\n            v.required(st_operation, `operation ${type_id}`);\n            return [type_id, st_operation.fromObject(object[1])];\n        },\n        toObject(object, debug = {}) {\n            if (debug.use_default && object === undefined) {\n                return [0, this.st_operations[0].toObject(undefined, debug)];\n            }\n            v.required(object);\n            var type_id = object[0];\n            var st_operation = this.st_operations[type_id];\n            v.required(st_operation, `operation ${type_id}`);\n            return [type_id, st_operation.toObject(object[1], debug)];\n        }\n    };\n};\n\nTypes.map = function(key_st_operation, value_st_operation) {\n    return {\n        validate(array) {\n            if (!Array.isArray(array)) {\n                throw new Error(\"expecting array\");\n            }\n            var dup_map = {};\n            for (var i = 0, o; i < array.length; i++) {\n                o = array[i];\n                var ref;\n                if (!(o.length === 2)) {\n                    throw new Error(\"expecting two elements\");\n                }\n                if (\n                    ((ref = typeof o[0]),\n                    [\"number\", \"string\"].indexOf(ref) >= 0)\n                ) {\n                    if (dup_map[o[0]] !== undefined) {\n                        throw new Error(\"duplicate (map)\");\n                    }\n                    dup_map[o[0]] = true;\n                }\n            }\n            return sortOperation(array, key_st_operation);\n        },\n\n        fromByteBuffer(b) {\n            var result = [];\n            var end = b.readVarint32();\n            for (var i = 0; 0 < end ? i < end : i > end; 0 < end ? i++ : i++) {\n                result.push([\n                    key_st_operation.fromByteBuffer(b),\n                    value_st_operation.fromByteBuffer(b)\n                ]);\n            }\n            return this.validate(result);\n        },\n\n        appendByteBuffer(b, object) {\n            this.validate(object);\n            b.writeVarint32(object.length);\n            for (var i = 0, o; i < object.length; i++) {\n                o = object[i];\n                key_st_operation.appendByteBuffer(b, o[0]);\n                value_st_operation.appendByteBuffer(b, o[1]);\n            }\n            return;\n        },\n        fromObject(object) {\n            v.required(object);\n            var result = [];\n            for (var i = 0, o; i < object.length; i++) {\n                o = object[i];\n                result.push([\n                    key_st_operation.fromObject(o[0]),\n                    value_st_operation.fromObject(o[1])\n                ]);\n            }\n            return this.validate(result);\n        },\n        toObject(object, debug = {}) {\n            if (debug.use_default && object === undefined) {\n                return [\n                    [\n                        key_st_operation.toObject(undefined, debug),\n                        value_st_operation.toObject(undefined, debug)\n                    ]\n                ];\n            }\n            v.required(object);\n            object = this.validate(object);\n            var result = [];\n            for (var i = 0, o; i < object.length; i++) {\n                o = object[i];\n                result.push([\n                    key_st_operation.toObject(o[0], debug),\n                    value_st_operation.toObject(o[1], debug)\n                ]);\n            }\n            return result;\n        }\n    };\n};\n\nTypes.public_key = {\n    toPublic(object) {\n        if (object.resolve !== undefined) {\n            object = object.resolve;\n        }\n        return object == null\n            ? object\n            : object.Q\n                ? object\n                : PublicKey.fromStringOrThrow(object);\n    },\n    fromByteBuffer(b) {\n        return fp.public_key(b);\n    },\n    appendByteBuffer(b, object) {\n        v.required(object);\n        fp.public_key(b, Types.public_key.toPublic(object));\n        return;\n    },\n    fromObject(object) {\n        v.required(object);\n        if (object.Q) {\n            return object;\n        }\n        return Types.public_key.toPublic(object);\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return (\n                ChainConfig.address_prefix +\n                \"859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM\"\n            );\n        }\n        v.required(object);\n        return object.toString();\n    },\n    compare(a, b) {\n        return Types.public_key\n            .fromObject(a)\n            .toBlockchainAddress()\n            .compare(Types.public_key.fromObject(b).toBlockchainAddress());\n    }\n};\n\nTypes.address = {\n    _to_address(object) {\n        v.required(object);\n        if (object.addy) {\n            return object;\n        }\n        return Address.fromString(object);\n    },\n    fromByteBuffer(b) {\n        return new Address(fp.ripemd160(b));\n    },\n    appendByteBuffer(b, object) {\n        fp.ripemd160(b, Types.address._to_address(object).toBuffer());\n        return;\n    },\n    fromObject(object) {\n        return Types.address._to_address(object);\n    },\n    toObject(object, debug = {}) {\n        if (debug.use_default && object === undefined) {\n            return (\n                ChainConfig.address_prefix + \"664KmHxSuQyDsfwo4WEJvWpzg1QKdg67S\"\n            );\n        }\n        return Types.address._to_address(object).toString();\n    },\n    compare(a, b) {\n        return strCmp(a.toString(), b.toString());\n    }\n};\n\nlet strCmp = (a, b) => (a > b ? 1 : a < b ? -1 : 0);\nlet firstEl = el => (Array.isArray(el) ? el[0] : el);\nlet sortOperation = (array, st_operation) =>\n    st_operation.nosort\n        ? array\n        : st_operation.compare\n            ? array.sort((a, b) => st_operation.compare(firstEl(a), firstEl(b))) // custom compare operation\n            : array.sort(\n                  (a, b) =>\n                      typeof firstEl(a) === \"number\" &&\n                      typeof firstEl(b) === \"number\"\n                          ? firstEl(a) - firstEl(b)\n                          : // A binary string compare does not work. Performanance is very good so HEX is used..  localeCompare is another option.\n                            Buffer.isBuffer(firstEl(a)) &&\n                            Buffer.isBuffer(firstEl(b))\n                              ? strCmp(\n                                    firstEl(a).toString(\"hex\"),\n                                    firstEl(b).toString(\"hex\")\n                                )\n                              : strCmp(\n                                    firstEl(a).toString(),\n                                    firstEl(b).toString()\n                                )\n              );\n\nexport default Types;\n",
    "static": true,
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/lib/serializer/src/types.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 555,
    "kind": "variable",
    "name": "Buffer",
    "memberof": "lib/serializer/src/types.js",
    "static": true,
    "longname": "lib/serializer/src/types.js~Buffer",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 556,
    "kind": "variable",
    "name": "HEX_DUMP",
    "memberof": "lib/serializer/src/types.js",
    "static": true,
    "longname": "lib/serializer/src/types.js~HEX_DUMP",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 557,
    "kind": "variable",
    "name": "MIN_SIGNED_32",
    "memberof": "lib/serializer/src/types.js",
    "static": true,
    "longname": "lib/serializer/src/types.js~MIN_SIGNED_32",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 84,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 558,
    "kind": "variable",
    "name": "MAX_SIGNED_32",
    "memberof": "lib/serializer/src/types.js",
    "static": true,
    "longname": "lib/serializer/src/types.js~MAX_SIGNED_32",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 85,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 559,
    "kind": "function",
    "name": "bytes",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~bytes",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 190,
    "undocument": true,
    "params": [
      {
        "name": "size",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 560,
    "kind": "function",
    "name": "array",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~array",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 270,
    "undocument": true,
    "params": [
      {
        "name": "st_operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 561,
    "kind": "function",
    "name": "set",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~set",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 365,
    "undocument": true,
    "params": [
      {
        "name": "st_operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 562,
    "kind": "function",
    "name": "fixed_array",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~fixed_array",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 451,
    "undocument": true,
    "params": [
      {
        "name": "count",
        "types": [
          "*"
        ]
      },
      {
        "name": "st_operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"fromByteBuffer\": *, \"appendByteBuffer\": *, \"fromObject\": *, \"toObject\": *}"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 563,
    "kind": "function",
    "name": "id_type",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~id_type",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 508,
    "undocument": true,
    "params": [
      {
        "name": "reserved_spaces",
        "types": [
          "*"
        ]
      },
      {
        "name": "object_type",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 564,
    "kind": "function",
    "name": "protocol_id_type",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~protocol_id_type",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 555,
    "undocument": true,
    "params": [
      {
        "name": "name",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 565,
    "kind": "function",
    "name": "optional",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~optional",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 641,
    "undocument": true,
    "params": [
      {
        "name": "st_operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 566,
    "kind": "function",
    "name": "static_variant",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~static_variant",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 687,
    "undocument": true,
    "params": [
      {
        "name": "_st_operations",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 567,
    "kind": "function",
    "name": "map",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~map",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 731,
    "undocument": true,
    "params": [
      {
        "name": "key_st_operation",
        "types": [
          "*"
        ]
      },
      {
        "name": "value_st_operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 568,
    "kind": "function",
    "name": "strCmp",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~strCmp",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 890,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": null,
    "ignore": true
  },
  {
    "__docId__": 569,
    "kind": "function",
    "name": "firstEl",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~firstEl",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 891,
    "undocument": true,
    "params": [
      {
        "name": "el",
        "types": [
          "*"
        ]
      }
    ],
    "return": null,
    "ignore": true
  },
  {
    "__docId__": 570,
    "kind": "function",
    "name": "sortOperation",
    "memberof": "lib/serializer/src/types.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/serializer/src/types.js~sortOperation",
    "access": "public",
    "export": false,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 892,
    "undocument": true,
    "params": [
      {
        "name": "array",
        "types": [
          "*"
        ]
      },
      {
        "name": "st_operation",
        "types": [
          "*"
        ]
      }
    ],
    "return": null,
    "ignore": true
  },
  {
    "__docId__": 571,
    "kind": "variable",
    "name": "Types",
    "memberof": "lib/serializer/src/types.js",
    "static": true,
    "longname": "lib/serializer/src/types.js~Types",
    "access": "public",
    "export": true,
    "importPath": "bitsharesjs/lib/serializer/src/types.js",
    "importStyle": "Types",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "kind": "index",
    "content": "# BitsharesJS (bitsharesjs)\n\nPure JavaScript Bitshares library for node.js and browsers. Can be used to construct, sign and broadcast transactions in JavaScript, and to easily obtain data from the blockchain via public apis.\n\nMost of this code was written by [jcalfee](https://github.com/jcalfee), my work was mostly just repackaging to a discrete npm package.\n\n[![npm version](https://img.shields.io/npm/v/bitsharesjs.svg?style=flat-square)](https://www.npmjs.com/package/bitsharesjs)\n[![npm downloads](https://img.shields.io/npm/dm/bitsharesjs.svg?style=flat-square)](https://www.npmjs.com/package/bitsharesjs)\n\n\n## Setup\n\nThis library can be obtained through npm:\n```\nnpm install bitsharesjs\n```\n\n## Usage\n\nThree sub-libraries are included: `ECC`, `Chain` and `Serializer`. Generally only the `ECC` and `Chain` libraries need to be used directly.\n\n### Chain\nThis library provides utility functions to handle blockchain state as well as a login class that can be used for simple login functionality using a specific key seed.\n\n#### Login\nThe login class uses the following format for keys:\n\n```\nkeySeed = accountName + role + password\n```\n\nUsing this seed, private keys are generated for either the default roles `active, owner, memo`, or as specified. A minimum password length of 12 characters is enforced, but an even longer password is recommended. Three methods are provided:\n\n```\ngenerateKeys(account, password, [roles])\ncheckKeys(account, password, auths)\nsignTransaction(tr)\n```\n\nThe auths object should contain the auth arrays from the account object. An example is this:\n\n```\n{\n    active: [\n        [\"GPH5Abm5dCdy3hJ1C5ckXkqUH2Me7dXqi9Y7yjn9ACaiSJ9h8r8mL\", 1]\n    ]\n}\n```\n\nIf checkKeys is successful, you can use signTransaction to sign a TransactionBuilder transaction using the private keys for that account.\n\n#### State container\nThe Chain library contains a complete state container called the ChainStore. The ChainStore will automatically configure the `set_subscribe_callback` and handle any incoming state changes appropriately. It uses Immutable.js for storing the state, so all objects are return as immutable objects. It has its own `subscribe` method that can be used to register a callback that will be called whenever a state change happens.\n\nThe ChainStore has several useful methods to retrieve, among other things, objects, assets and accounts using either object ids or asset/account names. These methods are synchronous and will return `undefined` to indicate fetching in progress, and `null` to indicate that the object does not exist.\n\n```\nimport {Apis} from \"bitsharesjs-ws\";\nvar {ChainStore} = require(\"bitsharesjs\");\n\nApis.instance(\"wss://eu.nodes.bitshares.ws\", true).init_promise.then((res) => {\n    console.log(\"connected to:\", res[0].network);\n    ChainStore.init().then(() => {\n        ChainStore.subscribe(updateState);\n    });\n});\n\nlet dynamicGlobal = null;\nfunction updateState(object) {\n    dynamicGlobal = ChainStore.getObject(\"2.1.0\");\n    console.log(\"ChainStore object update\\n\", dynamicGlobal ? dynamicGlobal.toJS() : dynamicGlobal);\n}\n\n```\n\n### ECC\nThe ECC library contains all the crypto functions for private and public keys as well as transaction creation/signing.\n\n#### Private keys\nAs a quick example, here's how to generate a new private key from a seed (a brainkey for example):\n\n```\nvar {PrivateKey, key} = require(\"bitsharesjs\");\n\nlet seed = \"THIS IS A TERRIBLE BRAINKEY SEED WORD SEQUENCE\";\nlet pkey = PrivateKey.fromSeed( key.normalize_brainKey(seed) );\n\nconsole.log(\"\\nPrivate key:\", pkey.toWif());\nconsole.log(\"Public key :\", pkey.toPublicKey().toString(), \"\\n\");\n```\n\n#### Transactions\nTODO transaction signing example\n\n## ESDoc (beta)\n```bash\nnpm i -g esdoc esdoc-es7-plugin\nesdoc -c ./esdoc.json\nopen out/esdoc/index.html\n```\n",
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/README.md",
    "name": "./README.md",
    "static": true,
    "access": "public"
  },
  {
    "kind": "packageJSON",
    "content": "{\n    \"name\": \"bitsharesjs\",\n    \"version\": \"1.7.5\",\n    \"description\": \"Pure JavaScript Bitshares library for node.js and browsers.\",\n    \"browser\": {\n        \"ws\": false,\n        \"crypto\": false\n    },\n    \"scripts\": {\n        \"test\": \"cross-env BABEL_ENV=test mocha --compilers js:babel-register --recursive\",\n        \"test:chain\": \"cross-env BABEL_ENV=test mocha --compilers js:babel-register ./test/chain --recursive --watch\",\n        \"test:trxbuilder\": \"cross-env BABEL_ENV=test mocha --compilers js:babel-register ./test/chain/TransactionBuilder.js --watch\",\n        \"test:ecc\": \"cross-env BABEL_ENV=test mocha --compilers js:babel-register ./test/ecc --recursive\",\n        \"test:serializer\": \"cross-env BABEL_ENV=test mocha --compilers js:babel-register ./test/serializer --recursive\",\n        \"test:watch\": \"npm test -- --watch\",\n        \"clean\": \"rimraf dist build es\",\n        \"prebuild\": \"npm run clean\",\n        \"build\": \"cross-env BABEL_ENV=cjs babel lib -d dist\",\n        \"build-es\": \"cross-env BABEL_ENV=es babel lib -d es\",\n        \"postbuild\": \"npm run browserify && npm run build-es\",\n        \"build:watch\": \"babel lib -d dist --watch\",\n        \"prebrowserify\": \"mkdirp build\",\n        \"browserify\": \"cross-env NODE_ENV=production browserify --full-paths dist/browser.js --standalone bitshares_js -o build/bitsharesjs.js -d\",\n        \"postbrowserify\": \"cross-env NODE_ENV=production uglifyjs --compress --mangle --sequences --drop_console --output build/bitsharesjs.min.js -- build/bitsharesjs.js\",\n        \"precommit\": \"npm run doc && git add docs && pretty-quick --staged && npm run test\",\n        \"prepublish\": \"npm run build && npm run test\",\n        \"doc\": \"esdoc -c esdoc.json\",\n        \"example:transfer\": \"babel-node examples/transfer\",\n        \"example:chainStore\": \"babel-node examples/chainStore\",\n        \"example:privKey\": \"babel-node examples/privKey\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"git+https://github.com/bitshares/bitsharesjs.git\"\n    },\n    \"author\": \"Sigve Kvalsvik <bitsharesblocks@gmail.com> (https://github.com/svk31)\",\n    \"contributors\": [\n        \"James Calfee <james@jcalfee.info> (https://github.com/jcalfee/)\",\n        \"Daniel Larimer <dan@cryptonomex.com> (https://github.com/bytemaster/)\",\n        \"Valentine Zavgorodnev <valentine.zavgorodnev@gmail.com> (https://github.com/valzav/)\"\n    ],\n    \"license\": \"MIT\",\n    \"bugs\": {\n        \"url\": \"https://github.com/bitshares/bitsharesjs/issues\"\n    },\n    \"engines\": {\n        \"node\": \">= 6.0.0\"\n    },\n    \"main\": \"./dist/index.js\",\n    \"jsnext:main\": \"./es/index.js\",\n    \"dependencies\": {\n        \"bigi\": \"1.4.2\",\n        \"bitsharesjs-ws\": \"^1.5.2\",\n        \"bs58\": \"4.0.1\",\n        \"bytebuffer\": \"5.0.1\",\n        \"create-hash\": \"1.2.0\",\n        \"create-hmac\": \"1.1.7\",\n        \"crypto-js\": \"3.1.9-1\",\n        \"deep-equal\": \"1.0.1\",\n        \"ecurve\": \"1.0.6\",\n        \"event-emitter\": \"0.3.5\",\n        \"immutable\": \"3.8.2\",\n        \"safe-buffer\": \"^5.1.2\",\n        \"secure-random\": \"1.1.1\"\n    },\n    \"devDependencies\": {\n        \"assert\": \"^1.4.1\",\n        \"babel-cli\": \"^6.26.0\",\n        \"babel-eslint\": \"^8.2.3\",\n        \"babel-plugin-add-module-exports\": \"^0.2.1\",\n        \"babel-preset-env\": \"^1.7.0\",\n        \"babel-preset-stage-1\": \"^6.24.1\",\n        \"browserify\": \"^16.2.2\",\n        \"cross-env\": \"^5.0.1\",\n        \"esdoc\": \"^1.1.0\",\n        \"esdoc-standard-plugin\": \"^1.0.0\",\n        \"eslint\": \"^4.19.1\",\n        \"husky\": \"^0.14.3\",\n        \"mkdirp\": \"^0.5.1\",\n        \"mocha\": \"^5.2.0\",\n        \"prettier\": \"^1.11.1\",\n        \"pretty-quick\": \"^1.4.1\",\n        \"rimraf\": \"^2.6.1\",\n        \"uglify-js\": \"^3.3.10\"\n    }\n}\n",
    "longname": "/home/sigve/Dev/Bitshares/bitsharesjs/package.json",
    "name": "package.json",
    "static": true,
    "access": "public"
  }
]
