{"/Users/xpepermint/Work/0xcert/repositories/framework/packages/0xcert-merkle/src/index.ts":{"path":"/Users/xpepermint/Work/0xcert/repositories/framework/packages/0xcert-merkle/src/index.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":8,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":4},"end":{"line":4,"column":89}},"4":{"start":{"line":4,"column":71},"end":{"line":4,"column":83}},"5":{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},"6":{"start":{"line":6,"column":26},"end":{"line":6,"column":33}},"7":{"start":{"line":7,"column":4},"end":{"line":7,"column":17}},"8":{"start":{"line":9,"column":19},"end":{"line":11,"column":1}},"9":{"start":{"line":10,"column":4},"end":{"line":10,"column":126}},"10":{"start":{"line":10,"column":21},"end":{"line":10,"column":126}},"11":{"start":{"line":10,"column":95},"end":{"line":10,"column":126}},"12":{"start":{"line":12,"column":0},"end":{"line":12,"column":62}},"13":{"start":{"line":13,"column":0},"end":{"line":13,"column":48}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":5,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":58},"end":{"line":4,"column":59}},"loc":{"start":{"line":4,"column":69},"end":{"line":4,"column":85}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":6},"end":{"line":5,"column":7}},"loc":{"start":{"line":5,"column":28},"end":{"line":8,"column":1}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":9,"column":50},"end":{"line":9,"column":51}},"loc":{"start":{"line":9,"column":71},"end":{"line":11,"column":1}},"line":9}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":8,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":8,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":8,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":5,"column":1}},{"start":{"line":5,"column":6},"end":{"line":8,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{"line":3,"column":4},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},{"start":{"line":6,"column":4},"end":{"line":6,"column":33}}],"line":6},"4":{"loc":{"start":{"line":9,"column":19},"end":{"line":11,"column":1}},"type":"binary-expr","locations":[{"start":{"line":9,"column":20},"end":{"line":9,"column":24}},{"start":{"line":9,"column":28},"end":{"line":9,"column":45}},{"start":{"line":9,"column":50},"end":{"line":11,"column":1}}],"line":9},"5":{"loc":{"start":{"line":10,"column":21},"end":{"line":10,"column":126}},"type":"if","locations":[{"start":{"line":10,"column":21},"end":{"line":10,"column":126}},{"start":{"line":10,"column":21},"end":{"line":10,"column":126}}],"line":10},"6":{"loc":{"start":{"line":10,"column":25},"end":{"line":10,"column":93}},"type":"binary-expr","locations":[{"start":{"line":10,"column":25},"end":{"line":10,"column":40}},{"start":{"line":10,"column":44},"end":{"line":10,"column":93}}],"line":10}},"s":{"0":1,"1":2,"2":2,"3":2,"4":8,"5":0,"6":0,"7":0,"8":1,"9":1,"10":2,"11":2,"12":1,"13":1},"f":{"0":2,"1":8,"2":0,"3":1},"b":{"0":[1,1,1],"1":[1,0],"2":[2,0],"3":[0,0],"4":[1,1,1],"5":[2,0],"6":[2,2]},"inputSourceMap":{"version":3,"file":"/Users/xpepermint/Work/0xcert/repositories/framework/packages/0xcert-merkle/src/index.ts","sources":["/Users/xpepermint/Work/0xcert/repositories/framework/packages/0xcert-merkle/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B","sourcesContent":["export * from './core/merkle';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"61ce343ca8eeb7a1da60d04d80fd4010fc6bf539","contentHash":"a615f215fb50e0002e8f0a9e041566a81194037188b0db3727d87cf062aaa8a9"},"/Users/xpepermint/Work/0xcert/repositories/framework/packages/0xcert-merkle/src/core/merkle.ts":{"path":"/Users/xpepermint/Work/0xcert/repositories/framework/packages/0xcert-merkle/src/core/merkle.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":10,"column":1}},"1":{"start":{"line":3,"column":28},"end":{"line":3,"column":110}},"2":{"start":{"line":3,"column":91},"end":{"line":3,"column":106}},"3":{"start":{"line":4,"column":4},"end":{"line":9,"column":7}},"4":{"start":{"line":5,"column":36},"end":{"line":5,"column":97}},"5":{"start":{"line":5,"column":42},"end":{"line":5,"column":70}},"6":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"7":{"start":{"line":6,"column":35},"end":{"line":6,"column":100}},"8":{"start":{"line":6,"column":41},"end":{"line":6,"column":73}},"9":{"start":{"line":6,"column":88},"end":{"line":6,"column":98}},"10":{"start":{"line":7,"column":32},"end":{"line":7,"column":116}},"11":{"start":{"line":8,"column":8},"end":{"line":8,"column":78}},"12":{"start":{"line":11,"column":0},"end":{"line":11,"column":62}},"13":{"start":{"line":12,"column":0},"end":{"line":12,"column":55}},"14":{"start":{"line":14,"column":0},"end":{"line":18,"column":95}},"15":{"start":{"line":15,"column":4},"end":{"line":15,"column":70}},"16":{"start":{"line":16,"column":4},"end":{"line":16,"column":68}},"17":{"start":{"line":17,"column":4},"end":{"line":17,"column":68}},"18":{"start":{"line":21,"column":8},"end":{"line":21,"column":87}},"19":{"start":{"line":21,"column":55},"end":{"line":21,"column":56}},"20":{"start":{"line":21,"column":72},"end":{"line":21,"column":74}},"21":{"start":{"line":24,"column":8},"end":{"line":24,"column":59}},"22":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"23":{"start":{"line":30,"column":8},"end":{"line":47,"column":11}},"24":{"start":{"line":31,"column":27},"end":{"line":31,"column":36}},"25":{"start":{"line":32,"column":27},"end":{"line":32,"column":29}},"26":{"start":{"line":33,"column":26},"end":{"line":33,"column":81}},"27":{"start":{"line":34,"column":26},"end":{"line":34,"column":117}},"28":{"start":{"line":35,"column":12},"end":{"line":42,"column":13}},"29":{"start":{"line":35,"column":25},"end":{"line":35,"column":42}},"30":{"start":{"line":36,"column":30},"end":{"line":36,"column":38}},"31":{"start":{"line":37,"column":16},"end":{"line":37,"column":76}},"32":{"start":{"line":38,"column":30},"end":{"line":38,"column":112}},"33":{"start":{"line":39,"column":16},"end":{"line":39,"column":126}},"34":{"start":{"line":40,"column":29},"end":{"line":40,"column":37}},"35":{"start":{"line":41,"column":16},"end":{"line":41,"column":121}},"36":{"start":{"line":43,"column":12},"end":{"line":46,"column":14}},"37":{"start":{"line":44,"column":54},"end":{"line":44,"column":92}},"38":{"start":{"line":45,"column":51},"end":{"line":45,"column":66}},"39":{"start":{"line":50,"column":8},"end":{"line":65,"column":11}},"40":{"start":{"line":51,"column":25},"end":{"line":51,"column":65}},"41":{"start":{"line":51,"column":55},"end":{"line":51,"column":60}},"42":{"start":{"line":52,"column":27},"end":{"line":52,"column":29}},"43":{"start":{"line":53,"column":26},"end":{"line":55,"column":13}},"44":{"start":{"line":54,"column":41},"end":{"line":54,"column":61}},"45":{"start":{"line":56,"column":12},"end":{"line":63,"column":13}},"46":{"start":{"line":56,"column":25},"end":{"line":56,"column":33}},"47":{"start":{"line":57,"column":16},"end":{"line":62,"column":17}},"48":{"start":{"line":58,"column":20},"end":{"line":58,"column":77}},"49":{"start":{"line":58,"column":61},"end":{"line":58,"column":74}},"50":{"start":{"line":61,"column":20},"end":{"line":61,"column":83}},"51":{"start":{"line":61,"column":59},"end":{"line":61,"column":80}},"52":{"start":{"line":64,"column":12},"end":{"line":64,"column":37}},"53":{"start":{"line":68,"column":8},"end":{"line":93,"column":11}},"54":{"start":{"line":69,"column":26},"end":{"line":79,"column":13}},"55":{"start":{"line":70,"column":65},"end":{"line":77,"column":18}},"56":{"start":{"line":71,"column":34},"end":{"line":71,"column":102}},"57":{"start":{"line":72,"column":20},"end":{"line":76,"column":22}},"58":{"start":{"line":80,"column":25},"end":{"line":80,"column":70}},"59":{"start":{"line":80,"column":54},"end":{"line":80,"column":65}},"60":{"start":{"line":81,"column":12},"end":{"line":90,"column":13}},"61":{"start":{"line":81,"column":25},"end":{"line":81,"column":33}},"62":{"start":{"line":82,"column":30},"end":{"line":82,"column":62}},"63":{"start":{"line":82,"column":48},"end":{"line":82,"column":61}},"64":{"start":{"line":83,"column":29},"end":{"line":83,"column":65}},"65":{"start":{"line":83,"column":47},"end":{"line":83,"column":64}},"66":{"start":{"line":84,"column":16},"end":{"line":89,"column":17}},"67":{"start":{"line":85,"column":20},"end":{"line":88,"column":23}},"68":{"start":{"line":91,"column":25},"end":{"line":91,"column":57}},"69":{"start":{"line":91,"column":43},"end":{"line":91,"column":56}},"70":{"start":{"line":92,"column":12},"end":{"line":92,"column":43}},"71":{"start":{"line":96,"column":0},"end":{"line":96,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":10,"column":1}},"line":2},"1":{"name":"adopt","decl":{"start":{"line":3,"column":13},"end":{"line":3,"column":18}},"loc":{"start":{"line":3,"column":26},"end":{"line":3,"column":112}},"line":3},"2":{"name":"(anonymous_2)","decl":{"start":{"line":3,"column":70},"end":{"line":3,"column":71}},"loc":{"start":{"line":3,"column":89},"end":{"line":3,"column":108}},"line":3},"3":{"name":"(anonymous_3)","decl":{"start":{"line":4,"column":36},"end":{"line":4,"column":37}},"loc":{"start":{"line":4,"column":63},"end":{"line":9,"column":5}},"line":4},"4":{"name":"fulfilled","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":26}},"loc":{"start":{"line":5,"column":34},"end":{"line":5,"column":99}},"line":5},"5":{"name":"rejected","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":25}},"loc":{"start":{"line":6,"column":33},"end":{"line":6,"column":102}},"line":6},"6":{"name":"step","decl":{"start":{"line":7,"column":17},"end":{"line":7,"column":21}},"loc":{"start":{"line":7,"column":30},"end":{"line":7,"column":118}},"line":7},"7":{"name":"(anonymous_7)","decl":{"start":{"line":14,"column":1},"end":{"line":14,"column":2}},"loc":{"start":{"line":14,"column":33},"end":{"line":18,"column":1}},"line":14},"8":{"name":"(anonymous_8)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":25},"end":{"line":22,"column":5}},"line":20},"9":{"name":"(anonymous_9)","decl":{"start":{"line":21,"column":48},"end":{"line":21,"column":49}},"loc":{"start":{"line":21,"column":55},"end":{"line":21,"column":56}},"line":21},"10":{"name":"(anonymous_10)","decl":{"start":{"line":21,"column":66},"end":{"line":21,"column":67}},"loc":{"start":{"line":21,"column":72},"end":{"line":21,"column":74}},"line":21},"11":{"name":"(anonymous_11)","decl":{"start":{"line":23,"column":4},"end":{"line":23,"column":5}},"loc":{"start":{"line":23,"column":32},"end":{"line":25,"column":5}},"line":23},"12":{"name":"(anonymous_12)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":16},"end":{"line":28,"column":5}},"line":26},"13":{"name":"(anonymous_13)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":5}},"loc":{"start":{"line":29,"column":33},"end":{"line":48,"column":5}},"line":29},"14":{"name":"(anonymous_14)","decl":{"start":{"line":30,"column":47},"end":{"line":30,"column":48}},"loc":{"start":{"line":30,"column":60},"end":{"line":47,"column":9}},"line":30},"15":{"name":"(anonymous_15)","decl":{"start":{"line":44,"column":35},"end":{"line":44,"column":36}},"loc":{"start":{"line":44,"column":54},"end":{"line":44,"column":92}},"line":44},"16":{"name":"(anonymous_16)","decl":{"start":{"line":45,"column":33},"end":{"line":45,"column":34}},"loc":{"start":{"line":45,"column":51},"end":{"line":45,"column":66}},"line":45},"17":{"name":"(anonymous_17)","decl":{"start":{"line":49,"column":4},"end":{"line":49,"column":5}},"loc":{"start":{"line":49,"column":29},"end":{"line":66,"column":5}},"line":49},"18":{"name":"(anonymous_18)","decl":{"start":{"line":50,"column":47},"end":{"line":50,"column":48}},"loc":{"start":{"line":50,"column":60},"end":{"line":65,"column":9}},"line":50},"19":{"name":"(anonymous_19)","decl":{"start":{"line":51,"column":48},"end":{"line":51,"column":49}},"loc":{"start":{"line":51,"column":55},"end":{"line":51,"column":60}},"line":51},"20":{"name":"(anonymous_20)","decl":{"start":{"line":54,"column":34},"end":{"line":54,"column":35}},"loc":{"start":{"line":54,"column":41},"end":{"line":54,"column":61}},"line":54},"21":{"name":"(anonymous_21)","decl":{"start":{"line":58,"column":54},"end":{"line":58,"column":55}},"loc":{"start":{"line":58,"column":61},"end":{"line":58,"column":74}},"line":58},"22":{"name":"(anonymous_22)","decl":{"start":{"line":61,"column":52},"end":{"line":61,"column":53}},"loc":{"start":{"line":61,"column":59},"end":{"line":61,"column":80}},"line":61},"23":{"name":"(anonymous_23)","decl":{"start":{"line":67,"column":4},"end":{"line":67,"column":5}},"loc":{"start":{"line":67,"column":20},"end":{"line":94,"column":5}},"line":67},"24":{"name":"(anonymous_24)","decl":{"start":{"line":68,"column":47},"end":{"line":68,"column":48}},"loc":{"start":{"line":68,"column":60},"end":{"line":93,"column":9}},"line":68},"25":{"name":"(anonymous_25)","decl":{"start":{"line":70,"column":55},"end":{"line":70,"column":56}},"loc":{"start":{"line":70,"column":65},"end":{"line":77,"column":18}},"line":70},"26":{"name":"(anonymous_26)","decl":{"start":{"line":70,"column":97},"end":{"line":70,"column":98}},"loc":{"start":{"line":70,"column":110},"end":{"line":77,"column":17}},"line":70},"27":{"name":"(anonymous_27)","decl":{"start":{"line":80,"column":47},"end":{"line":80,"column":48}},"loc":{"start":{"line":80,"column":54},"end":{"line":80,"column":65}},"line":80},"28":{"name":"(anonymous_28)","decl":{"start":{"line":82,"column":41},"end":{"line":82,"column":42}},"loc":{"start":{"line":82,"column":48},"end":{"line":82,"column":61}},"line":82},"29":{"name":"(anonymous_29)","decl":{"start":{"line":83,"column":40},"end":{"line":83,"column":41}},"loc":{"start":{"line":83,"column":47},"end":{"line":83,"column":64}},"line":83},"30":{"name":"(anonymous_30)","decl":{"start":{"line":91,"column":36},"end":{"line":91,"column":37}},"loc":{"start":{"line":91,"column":43},"end":{"line":91,"column":56}},"line":91}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":10,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":10,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":35},"end":{"line":3,"column":109}},"type":"cond-expr","locations":[{"start":{"line":3,"column":56},"end":{"line":3,"column":61}},{"start":{"line":3,"column":64},"end":{"line":3,"column":109}}],"line":3},"2":{"loc":{"start":{"line":4,"column":16},"end":{"line":4,"column":34}},"type":"binary-expr","locations":[{"start":{"line":4,"column":16},"end":{"line":4,"column":17}},{"start":{"line":4,"column":22},"end":{"line":4,"column":33}}],"line":4},"3":{"loc":{"start":{"line":7,"column":32},"end":{"line":7,"column":115}},"type":"cond-expr","locations":[{"start":{"line":7,"column":46},"end":{"line":7,"column":67}},{"start":{"line":7,"column":70},"end":{"line":7,"column":115}}],"line":7},"4":{"loc":{"start":{"line":8,"column":51},"end":{"line":8,"column":67}},"type":"binary-expr","locations":[{"start":{"line":8,"column":51},"end":{"line":8,"column":61}},{"start":{"line":8,"column":65},"end":{"line":8,"column":67}}],"line":8},"5":{"loc":{"start":{"line":18,"column":26},"end":{"line":18,"column":93}},"type":"binary-expr","locations":[{"start":{"line":18,"column":26},"end":{"line":18,"column":54}},{"start":{"line":18,"column":59},"end":{"line":18,"column":92}}],"line":18},"6":{"loc":{"start":{"line":29,"column":19},"end":{"line":29,"column":31}},"type":"default-arg","locations":[{"start":{"line":29,"column":29},"end":{"line":29,"column":31}}],"line":29},"7":{"loc":{"start":{"line":57,"column":16},"end":{"line":62,"column":17}},"type":"if","locations":[{"start":{"line":57,"column":16},"end":{"line":62,"column":17}},{"start":{"line":57,"column":16},"end":{"line":62,"column":17}}],"line":57},"8":{"loc":{"start":{"line":84,"column":16},"end":{"line":89,"column":17}},"type":"if","locations":[{"start":{"line":84,"column":16},"end":{"line":89,"column":17}},{"start":{"line":84,"column":16},"end":{"line":89,"column":17}}],"line":84},"9":{"loc":{"start":{"line":84,"column":20},"end":{"line":84,"column":33}},"type":"binary-expr","locations":[{"start":{"line":84,"column":20},"end":{"line":84,"column":25}},{"start":{"line":84,"column":29},"end":{"line":84,"column":33}}],"line":84},"10":{"loc":{"start":{"line":92,"column":19},"end":{"line":92,"column":42}},"type":"cond-expr","locations":[{"start":{"line":92,"column":26},"end":{"line":92,"column":35}},{"start":{"line":92,"column":38},"end":{"line":92,"column":42}}],"line":92}},"s":{"0":1,"1":222,"2":72,"3":31,"4":222,"5":222,"6":0,"7":0,"8":0,"9":0,"10":253,"11":31,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":7,"19":7,"20":48,"21":0,"22":0,"23":14,"24":14,"25":14,"26":14,"27":14,"28":14,"29":14,"30":40,"31":40,"32":40,"33":40,"34":40,"35":40,"36":14,"37":40,"38":94,"39":7,"40":7,"41":8,"42":7,"43":7,"44":49,"45":7,"46":7,"47":21,"48":8,"49":33,"50":13,"51":86,"52":7,"53":4,"54":4,"55":6,"56":6,"57":6,"58":4,"59":22,"60":4,"61":4,"62":22,"63":40,"64":22,"65":162,"66":22,"67":18,"68":4,"69":4,"70":4,"71":1},"f":{"0":31,"1":222,"2":72,"3":31,"4":222,"5":0,"6":253,"7":1,"8":7,"9":7,"10":48,"11":0,"12":0,"13":14,"14":14,"15":40,"16":94,"17":7,"18":7,"19":8,"20":49,"21":33,"22":86,"23":4,"24":4,"25":6,"26":6,"27":22,"28":40,"29":162,"30":4},"b":{"0":[1,1,1],"1":[150,72],"2":[31,31],"3":[31,222],"4":[31,31],"5":[1,1],"6":[13],"7":[8,13],"8":[18,4],"9":[22,22],"10":[4,0]},"inputSourceMap":{"version":3,"file":"/Users/xpepermint/Work/0xcert/repositories/framework/packages/0xcert-merkle/src/core/merkle.ts","sources":["/Users/xpepermint/Work/0xcert/repositories/framework/packages/0xcert-merkle/src/core/merkle.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Merkle tree hash function interface.\n */\nexport enum MerkleHasherPosition {\n  VALUE = 0,\n  LEAF = 1,\n  NODE = 2,\n}\n\n/**\n * Merkle tree hash function interface.\n */\nexport type MerkleHasher = (\n  (value: any, path: (string | number)[], position: MerkleHasherPosition) => string)\n| ((value: any, path: (string | number)[], position: MerkleHasherPosition) => Promise<string>\n);\n\n/**\n * Merkle tree nonce function interface.\n */\nexport type MerkleNoncer = (\n  (path: (string | number)[]) => string)\n| ((path: (string | number)[]) => Promise<string>\n);\n\n/**\n * Merkle value interface.\n */\nexport interface MerkleValue {\n  index: number;\n  value: any;\n  nonce: string;\n}\n\n/**\n * Merkle node interface.\n */\nexport interface MerkleNode {\n  index: number;\n  hash: string;\n}\n\n/**\n * Merkle recipe interface with information for rebuilding merkle root.\n */\nexport interface MerkleRecipe {\n  values: MerkleValue[];\n  nodes: MerkleNode[];\n}\n\n/**\n * Merkle tree options interface.\n */\nexport interface MerkleOptions {\n  hasher?: MerkleHasher;\n  noncer?: MerkleNoncer;\n}\n\n/**\n * Merkle tree class.\n */\nexport class Merkle {\n  protected _options: MerkleOptions;\n\n  /**\n   * Class constructor.\n   * @param options Configuration options.\n   */\n  public constructor(options?: MerkleOptions) {\n    this._options = {\n      hasher: (v) => v,\n      noncer: () => '',\n      ...options,\n    };\n  }\n\n  /**\n   * Create a custom hash.\n   */\n  public hash(value: any, path: (string | number)[], position: MerkleHasherPosition): string | Promise<string> {\n    return this._options.hasher(value, path, position);\n  }\n\n  /**\n   * Create a custom hash.\n   */\n  public nonce(path: (string | number)[]): string | Promise<string> {\n    return this._options.noncer(path);\n  }\n\n  /**\n   * Returns a complete merkle recipe object with all merkle values and nodes.\n   * @param data List of arbitrary values.\n   */\n  public async notarize(data: (string | number | boolean)[], prepend: (string | number)[] = []): Promise<MerkleRecipe> {\n    const values = [...data];\n    const nonces = [];\n\n    const empty = await this._options.noncer([...prepend, values.length]);\n    const nodes = [await this._options.hasher(empty, [...prepend, values.length], MerkleHasherPosition.NODE)];\n\n    for (let i = values.length - 1; i >= 0; i--) {\n      const right = nodes[0];\n      nonces.unshift(\n        await this._options.noncer([...prepend, i]),\n      );\n      const value = await this._options.hasher(values[i], [...prepend, i], MerkleHasherPosition.VALUE);\n      nodes.unshift(\n        await this._options.hasher(`${value}${nonces[0]}`, [...prepend, i], MerkleHasherPosition.LEAF),\n      );\n      const left = nodes[0];\n      nodes.unshift(\n        await this._options.hasher(`${left}${right}`, [...prepend, i], MerkleHasherPosition.NODE),\n      );\n    }\n\n    return {\n      values: values.map((value, index) => ({ index, value, nonce: nonces[index] })),\n      nodes: nodes.map((hash, index) => ({ index, hash })),\n    };\n  }\n\n  /**\n   * Returns partial recipe object that includes only data for exposed values\n   * from which we can still recreate the imprint. This method expects a\n   * complete recipe (returned by the notarize function) then deletes nodes and\n   * values that are not needed to recalculate the Merkle root (imprint).\n   * @param recipe A complete data recipe.\n   * @param expose Value indexes to expose.\n   */\n  public async disclose(recipe: MerkleRecipe, expose: number[]) {\n    const size = Math.max(...expose.map((i) => i + 1), 0);\n    const values = [];\n    const nodes = [\n      recipe.nodes.find((n) => n.index === size * 2),\n    ];\n\n    for (let i = size - 1; i >= 0; i--) {\n      if (expose.indexOf(i) !== -1) {\n        values.unshift(\n          recipe.values.find((n) => n.index === i),\n        );\n      } else {\n        nodes.unshift(\n          recipe.nodes.find((n) => n.index === i * 2 + 1),\n        );\n      }\n    }\n\n    return { values, nodes };\n  }\n\n  /**\n   * Returns the root Merkle tree hash built from the provided recipe object.\n   * @param recipe Recipe object with nodes and values.\n   */\n  public async imprint(recipe: MerkleRecipe) {\n    const nodes = [\n      ...await Promise.all(\n        recipe.values.map(async (v, i) => {\n          const value = await this._options.hasher(v.value, [i], MerkleHasherPosition.VALUE);\n          return {\n            index: v.index * 2 + 1,\n            hash: await this._options.hasher(`${value}${v.nonce}`, [i], MerkleHasherPosition.LEAF),\n            value: v.value,\n          };\n        }),\n      ),\n      ...recipe.nodes,\n    ];\n    const size = Math.max(...nodes.map((n) => n.index + 1), 0);\n\n    for (let i = size - 1; i >= 0; i -= 2) {\n      const right = nodes.find((n) => n.index === i);\n      const left = nodes.find((n) => n.index === i - 1);\n\n      if (right && left) {\n        nodes.unshift({\n          index: i - 2,\n          hash: await this._options.hasher(`${left.hash}${right.hash}`, [i], MerkleHasherPosition.NODE),\n        });\n      }\n    }\n\n    const root = nodes.find((n) => n.index === 0);\n    return root ? root.hash : null;\n  }\n\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"20a84aa5ef7ef189029a1a7ab76715a5f310a0ad","contentHash":"b4e32e04382f8db9583b54367b247b95d3b3ca723e7b521b9d5efbea7ddd4314"}}