{"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/decoder.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/decoder.ts","statementMap":{"0":{"start":{"line":5,"column":22},"end":{"line":11,"column":3}},"1":{"start":{"line":6,"column":4},"end":{"line":6,"column":33}},"2":{"start":{"line":6,"column":26},"end":{"line":6,"column":33}},"3":{"start":{"line":7,"column":4},"end":{"line":7,"column":89}},"4":{"start":{"line":7,"column":71},"end":{"line":7,"column":83}},"5":{"start":{"line":9,"column":4},"end":{"line":9,"column":33}},"6":{"start":{"line":9,"column":26},"end":{"line":9,"column":33}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":17}},"8":{"start":{"line":12,"column":25},"end":{"line":16,"column":2}},"9":{"start":{"line":13,"column":4},"end":{"line":13,"column":72}},"10":{"start":{"line":15,"column":4},"end":{"line":15,"column":21}},"11":{"start":{"line":17,"column":19},"end":{"line":23,"column":1}},"12":{"start":{"line":18,"column":4},"end":{"line":18,"column":42}},"13":{"start":{"line":18,"column":31},"end":{"line":18,"column":42}},"14":{"start":{"line":19,"column":17},"end":{"line":19,"column":19}},"15":{"start":{"line":20,"column":4},"end":{"line":20,"column":131}},"16":{"start":{"line":20,"column":21},"end":{"line":20,"column":131}},"17":{"start":{"line":20,"column":40},"end":{"line":20,"column":131}},"18":{"start":{"line":20,"column":99},"end":{"line":20,"column":131}},"19":{"start":{"line":21,"column":4},"end":{"line":21,"column":36}},"20":{"start":{"line":22,"column":4},"end":{"line":22,"column":18}},"21":{"start":{"line":24,"column":22},"end":{"line":26,"column":1}},"22":{"start":{"line":25,"column":4},"end":{"line":25,"column":62}},"23":{"start":{"line":27,"column":0},"end":{"line":27,"column":62}},"24":{"start":{"line":28,"column":0},"end":{"line":28,"column":24}},"25":{"start":{"line":29,"column":16},"end":{"line":29,"column":48}},"26":{"start":{"line":30,"column":17},"end":{"line":30,"column":51}},"27":{"start":{"line":31,"column":26},"end":{"line":31,"column":54}},"28":{"start":{"line":32,"column":15},"end":{"line":32,"column":48}},"29":{"start":{"line":33,"column":21},"end":{"line":33,"column":44}},"30":{"start":{"line":34,"column":19},"end":{"line":34,"column":40}},"31":{"start":{"line":35,"column":18},"end":{"line":35,"column":38}},"32":{"start":{"line":36,"column":22},"end":{"line":36,"column":46}},"33":{"start":{"line":45,"column":30},"end":{"line":45,"column":87}},"34":{"start":{"line":47,"column":33},"end":{"line":47,"column":52}},"35":{"start":{"line":49,"column":23},"end":{"line":49,"column":58}},"36":{"start":{"line":50,"column":22},"end":{"line":50,"column":46}},"37":{"start":{"line":51,"column":19},"end":{"line":51,"column":21}},"38":{"start":{"line":52,"column":26},"end":{"line":52,"column":28}},"39":{"start":{"line":54,"column":4},"end":{"line":130,"column":5}},"40":{"start":{"line":55,"column":21},"end":{"line":55,"column":45}},"41":{"start":{"line":56,"column":20},"end":{"line":56,"column":44}},"42":{"start":{"line":58,"column":8},"end":{"line":128,"column":9}},"43":{"start":{"line":60,"column":16},"end":{"line":60,"column":25}},"44":{"start":{"line":62,"column":16},"end":{"line":62,"column":50}},"45":{"start":{"line":64,"column":16},"end":{"line":67,"column":17}},"46":{"start":{"line":65,"column":20},"end":{"line":65,"column":56}},"47":{"start":{"line":66,"column":20},"end":{"line":66,"column":29}},"48":{"start":{"line":68,"column":16},"end":{"line":68,"column":22}},"49":{"start":{"line":71,"column":20},"end":{"line":71,"column":31}},"50":{"start":{"line":72,"column":34},"end":{"line":72,"column":59}},"51":{"start":{"line":73,"column":39},"end":{"line":73,"column":70}},"52":{"start":{"line":74,"column":20},"end":{"line":82,"column":21}},"53":{"start":{"line":75,"column":24},"end":{"line":81,"column":27}},"54":{"start":{"line":84,"column":16},"end":{"line":84,"column":22}},"55":{"start":{"line":86,"column":16},"end":{"line":86,"column":51}},"56":{"start":{"line":87,"column":16},"end":{"line":87,"column":22}},"57":{"start":{"line":90,"column":36},"end":{"line":90,"column":60}},"58":{"start":{"line":91,"column":36},"end":{"line":91,"column":65}},"59":{"start":{"line":92,"column":20},"end":{"line":95,"column":22}},"60":{"start":{"line":96,"column":20},"end":{"line":101,"column":21}},"61":{"start":{"line":99,"column":24},"end":{"line":99,"column":60}},"62":{"start":{"line":100,"column":24},"end":{"line":100,"column":33}},"63":{"start":{"line":103,"column":16},"end":{"line":103,"column":22}},"64":{"start":{"line":105,"column":16},"end":{"line":105,"column":67}},"65":{"start":{"line":106,"column":16},"end":{"line":106,"column":22}},"66":{"start":{"line":108,"column":16},"end":{"line":108,"column":50}},"67":{"start":{"line":109,"column":16},"end":{"line":112,"column":17}},"68":{"start":{"line":110,"column":20},"end":{"line":110,"column":56}},"69":{"start":{"line":111,"column":20},"end":{"line":111,"column":29}},"70":{"start":{"line":113,"column":16},"end":{"line":113,"column":22}},"71":{"start":{"line":115,"column":16},"end":{"line":115,"column":50}},"72":{"start":{"line":116,"column":16},"end":{"line":119,"column":17}},"73":{"start":{"line":117,"column":20},"end":{"line":117,"column":56}},"74":{"start":{"line":118,"column":20},"end":{"line":118,"column":29}},"75":{"start":{"line":120,"column":16},"end":{"line":120,"column":22}},"76":{"start":{"line":122,"column":16},"end":{"line":122,"column":51}},"77":{"start":{"line":123,"column":16},"end":{"line":123,"column":22}},"78":{"start":{"line":125,"column":16},"end":{"line":125,"column":50}},"79":{"start":{"line":126,"column":16},"end":{"line":126,"column":52}},"80":{"start":{"line":127,"column":16},"end":{"line":127,"column":25}},"81":{"start":{"line":129,"column":8},"end":{"line":129,"column":37}},"82":{"start":{"line":131,"column":21},"end":{"line":131,"column":46}},"83":{"start":{"line":132,"column":14},"end":{"line":132,"column":35}},"84":{"start":{"line":133,"column":14},"end":{"line":133,"column":32}},"85":{"start":{"line":134,"column":25},"end":{"line":134,"column":49}},"86":{"start":{"line":135,"column":4},"end":{"line":135,"column":28}},"87":{"start":{"line":136,"column":22},"end":{"line":136,"column":68}},"88":{"start":{"line":137,"column":4},"end":{"line":137,"column":68}},"89":{"start":{"line":138,"column":21},"end":{"line":138,"column":47}},"90":{"start":{"line":142,"column":27},"end":{"line":142,"column":90}},"91":{"start":{"line":142,"column":44},"end":{"line":142,"column":89}},"92":{"start":{"line":143,"column":19},"end":{"line":145,"column":64}},"93":{"start":{"line":149,"column":4},"end":{"line":150,"column":45}},"94":{"start":{"line":150,"column":8},"end":{"line":150,"column":45}},"95":{"start":{"line":152,"column":19},"end":{"line":152,"column":42}},"96":{"start":{"line":153,"column":4},"end":{"line":153,"column":28}},"97":{"start":{"line":154,"column":4},"end":{"line":154,"column":29}},"98":{"start":{"line":155,"column":4},"end":{"line":155,"column":33}},"99":{"start":{"line":156,"column":4},"end":{"line":156,"column":27}},"100":{"start":{"line":157,"column":4},"end":{"line":157,"column":41}},"101":{"start":{"line":158,"column":4},"end":{"line":158,"column":46}},"102":{"start":{"line":159,"column":4},"end":{"line":159,"column":27}},"103":{"start":{"line":160,"column":4},"end":{"line":160,"column":31}},"104":{"start":{"line":161,"column":4},"end":{"line":161,"column":46}},"105":{"start":{"line":162,"column":4},"end":{"line":162,"column":18}},"106":{"start":{"line":164,"column":0},"end":{"line":164,"column":24}},"107":{"start":{"line":177,"column":4},"end":{"line":178,"column":42}},"108":{"start":{"line":178,"column":8},"end":{"line":178,"column":42}},"109":{"start":{"line":179,"column":18},"end":{"line":179,"column":20}},"110":{"start":{"line":180,"column":20},"end":{"line":180,"column":22}},"111":{"start":{"line":183,"column":21},"end":{"line":183,"column":26}},"112":{"start":{"line":184,"column":20},"end":{"line":184,"column":25}},"113":{"start":{"line":185,"column":4},"end":{"line":207,"column":5}},"114":{"start":{"line":185,"column":17},"end":{"line":185,"column":18}},"115":{"start":{"line":186,"column":25},"end":{"line":186,"column":45}},"116":{"start":{"line":187,"column":8},"end":{"line":192,"column":9}},"117":{"start":{"line":188,"column":12},"end":{"line":191,"column":34}},"118":{"start":{"line":189,"column":16},"end":{"line":189,"column":37}},"119":{"start":{"line":191,"column":16},"end":{"line":191,"column":34}},"120":{"start":{"line":193,"column":8},"end":{"line":200,"column":9}},"121":{"start":{"line":194,"column":12},"end":{"line":199,"column":50}},"122":{"start":{"line":195,"column":16},"end":{"line":195,"column":39}},"123":{"start":{"line":196,"column":17},"end":{"line":199,"column":50}},"124":{"start":{"line":197,"column":16},"end":{"line":197,"column":33}},"125":{"start":{"line":199,"column":16},"end":{"line":199,"column":50}},"126":{"start":{"line":201,"column":8},"end":{"line":206,"column":9}},"127":{"start":{"line":202,"column":12},"end":{"line":205,"column":53}},"128":{"start":{"line":203,"column":16},"end":{"line":203,"column":39}},"129":{"start":{"line":205,"column":16},"end":{"line":205,"column":53}},"130":{"start":{"line":209,"column":4},"end":{"line":214,"column":69}},"131":{"start":{"line":210,"column":8},"end":{"line":210,"column":21}},"132":{"start":{"line":214,"column":8},"end":{"line":214,"column":69}},"133":{"start":{"line":215,"column":4},"end":{"line":216,"column":43}},"134":{"start":{"line":216,"column":8},"end":{"line":216,"column":43}},"135":{"start":{"line":217,"column":4},"end":{"line":218,"column":42}},"136":{"start":{"line":218,"column":8},"end":{"line":218,"column":42}},"137":{"start":{"line":219,"column":4},"end":{"line":222,"column":6}},"138":{"start":{"line":225,"column":4},"end":{"line":225,"column":90}},"139":{"start":{"line":228,"column":4},"end":{"line":228,"column":39}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":74},"end":{"line":5,"column":75}},"loc":{"start":{"line":5,"column":96},"end":{"line":8,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":58},"end":{"line":7,"column":59}},"loc":{"start":{"line":7,"column":69},"end":{"line":7,"column":85}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":6},"end":{"line":8,"column":7}},"loc":{"start":{"line":8,"column":28},"end":{"line":11,"column":1}},"line":8},"3":{"name":"(anonymous_3)","decl":{"start":{"line":12,"column":80},"end":{"line":12,"column":81}},"loc":{"start":{"line":12,"column":95},"end":{"line":14,"column":1}},"line":12},"4":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":5},"end":{"line":14,"column":6}},"loc":{"start":{"line":14,"column":20},"end":{"line":16,"column":1}},"line":14},"5":{"name":"(anonymous_5)","decl":{"start":{"line":17,"column":50},"end":{"line":17,"column":51}},"loc":{"start":{"line":17,"column":65},"end":{"line":23,"column":1}},"line":17},"6":{"name":"(anonymous_6)","decl":{"start":{"line":24,"column":56},"end":{"line":24,"column":57}},"loc":{"start":{"line":24,"column":71},"end":{"line":26,"column":1}},"line":24},"7":{"name":"decode","decl":{"start":{"line":42,"column":9},"end":{"line":42,"column":15}},"loc":{"start":{"line":42,"column":25},"end":{"line":163,"column":1}},"line":42},"8":{"name":"(anonymous_8)","decl":{"start":{"line":142,"column":39},"end":{"line":142,"column":40}},"loc":{"start":{"line":142,"column":44},"end":{"line":142,"column":89}},"line":142},"9":{"name":"parsePrefix","decl":{"start":{"line":176,"column":9},"end":{"line":176,"column":20}},"loc":{"start":{"line":176,"column":29},"end":{"line":223,"column":1}},"line":176},"10":{"name":"isValidNetwork","decl":{"start":{"line":224,"column":9},"end":{"line":224,"column":23}},"loc":{"start":{"line":224,"column":33},"end":{"line":226,"column":1}},"line":224},"11":{"name":"isValidValue","decl":{"start":{"line":227,"column":9},"end":{"line":227,"column":21}},"loc":{"start":{"line":227,"column":29},"end":{"line":229,"column":1}},"line":227}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":22},"end":{"line":11,"column":3}},"type":"binary-expr","locations":[{"start":{"line":5,"column":23},"end":{"line":5,"column":27}},{"start":{"line":5,"column":31},"end":{"line":5,"column":51}},{"start":{"line":5,"column":57},"end":{"line":11,"column":2}}],"line":5},"1":{"loc":{"start":{"line":5,"column":57},"end":{"line":11,"column":2}},"type":"cond-expr","locations":[{"start":{"line":5,"column":74},"end":{"line":8,"column":1}},{"start":{"line":8,"column":6},"end":{"line":11,"column":1}}],"line":5},"2":{"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},"3":{"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":33}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":9,"column":33}},{"start":{"line":9,"column":4},"end":{"line":9,"column":33}}],"line":9},"4":{"loc":{"start":{"line":12,"column":25},"end":{"line":16,"column":2}},"type":"binary-expr","locations":[{"start":{"line":12,"column":26},"end":{"line":12,"column":30}},{"start":{"line":12,"column":34},"end":{"line":12,"column":57}},{"start":{"line":12,"column":63},"end":{"line":16,"column":1}}],"line":12},"5":{"loc":{"start":{"line":12,"column":63},"end":{"line":16,"column":1}},"type":"cond-expr","locations":[{"start":{"line":12,"column":80},"end":{"line":14,"column":1}},{"start":{"line":14,"column":5},"end":{"line":16,"column":1}}],"line":12},"6":{"loc":{"start":{"line":17,"column":19},"end":{"line":23,"column":1}},"type":"binary-expr","locations":[{"start":{"line":17,"column":20},"end":{"line":17,"column":24}},{"start":{"line":17,"column":28},"end":{"line":17,"column":45}},{"start":{"line":17,"column":50},"end":{"line":23,"column":1}}],"line":17},"7":{"loc":{"start":{"line":18,"column":4},"end":{"line":18,"column":42}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":18,"column":42}},{"start":{"line":18,"column":4},"end":{"line":18,"column":42}}],"line":18},"8":{"loc":{"start":{"line":18,"column":8},"end":{"line":18,"column":29}},"type":"binary-expr","locations":[{"start":{"line":18,"column":8},"end":{"line":18,"column":11}},{"start":{"line":18,"column":15},"end":{"line":18,"column":29}}],"line":18},"9":{"loc":{"start":{"line":20,"column":4},"end":{"line":20,"column":131}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":20,"column":131}},{"start":{"line":20,"column":4},"end":{"line":20,"column":131}}],"line":20},"10":{"loc":{"start":{"line":20,"column":40},"end":{"line":20,"column":131}},"type":"if","locations":[{"start":{"line":20,"column":40},"end":{"line":20,"column":131}},{"start":{"line":20,"column":40},"end":{"line":20,"column":131}}],"line":20},"11":{"loc":{"start":{"line":20,"column":44},"end":{"line":20,"column":97}},"type":"binary-expr","locations":[{"start":{"line":20,"column":44},"end":{"line":20,"column":59}},{"start":{"line":20,"column":63},"end":{"line":20,"column":97}}],"line":20},"12":{"loc":{"start":{"line":24,"column":22},"end":{"line":26,"column":1}},"type":"binary-expr","locations":[{"start":{"line":24,"column":23},"end":{"line":24,"column":27}},{"start":{"line":24,"column":31},"end":{"line":24,"column":51}},{"start":{"line":24,"column":56},"end":{"line":26,"column":1}}],"line":24},"13":{"loc":{"start":{"line":25,"column":11},"end":{"line":25,"column":61}},"type":"cond-expr","locations":[{"start":{"line":25,"column":37},"end":{"line":25,"column":40}},{"start":{"line":25,"column":43},"end":{"line":25,"column":61}}],"line":25},"14":{"loc":{"start":{"line":25,"column":12},"end":{"line":25,"column":33}},"type":"binary-expr","locations":[{"start":{"line":25,"column":12},"end":{"line":25,"column":15}},{"start":{"line":25,"column":19},"end":{"line":25,"column":33}}],"line":25},"15":{"loc":{"start":{"line":58,"column":8},"end":{"line":128,"column":9}},"type":"switch","locations":[{"start":{"line":59,"column":12},"end":{"line":60,"column":25}},{"start":{"line":61,"column":12},"end":{"line":68,"column":22}},{"start":{"line":69,"column":12},"end":{"line":84,"column":22}},{"start":{"line":85,"column":12},"end":{"line":87,"column":22}},{"start":{"line":88,"column":12},"end":{"line":103,"column":22}},{"start":{"line":104,"column":12},"end":{"line":106,"column":22}},{"start":{"line":107,"column":12},"end":{"line":113,"column":22}},{"start":{"line":114,"column":12},"end":{"line":120,"column":22}},{"start":{"line":121,"column":12},"end":{"line":123,"column":22}},{"start":{"line":124,"column":12},"end":{"line":127,"column":25}}],"line":58},"16":{"loc":{"start":{"line":64,"column":16},"end":{"line":67,"column":17}},"type":"if","locations":[{"start":{"line":64,"column":16},"end":{"line":67,"column":17}},{"start":{"line":64,"column":16},"end":{"line":67,"column":17}}],"line":64},"17":{"loc":{"start":{"line":96,"column":20},"end":{"line":101,"column":21}},"type":"if","locations":[{"start":{"line":96,"column":20},"end":{"line":101,"column":21}},{"start":{"line":96,"column":20},"end":{"line":101,"column":21}}],"line":96},"18":{"loc":{"start":{"line":96,"column":24},"end":{"line":98,"column":74}},"type":"binary-expr","locations":[{"start":{"line":96,"column":24},"end":{"line":96,"column":76}},{"start":{"line":97,"column":24},"end":{"line":97,"column":75}},{"start":{"line":98,"column":24},"end":{"line":98,"column":74}}],"line":96},"19":{"loc":{"start":{"line":109,"column":16},"end":{"line":112,"column":17}},"type":"if","locations":[{"start":{"line":109,"column":16},"end":{"line":112,"column":17}},{"start":{"line":109,"column":16},"end":{"line":112,"column":17}}],"line":109},"20":{"loc":{"start":{"line":116,"column":16},"end":{"line":119,"column":17}},"type":"if","locations":[{"start":{"line":116,"column":16},"end":{"line":119,"column":17}},{"start":{"line":116,"column":16},"end":{"line":119,"column":17}}],"line":116},"21":{"loc":{"start":{"line":143,"column":19},"end":{"line":145,"column":64}},"type":"cond-expr","locations":[{"start":{"line":144,"column":10},"end":{"line":144,"column":30}},{"start":{"line":145,"column":10},"end":{"line":145,"column":64}}],"line":143},"22":{"loc":{"start":{"line":149,"column":4},"end":{"line":150,"column":45}},"type":"if","locations":[{"start":{"line":149,"column":4},"end":{"line":150,"column":45}},{"start":{"line":149,"column":4},"end":{"line":150,"column":45}}],"line":149},"23":{"loc":{"start":{"line":177,"column":4},"end":{"line":178,"column":42}},"type":"if","locations":[{"start":{"line":177,"column":4},"end":{"line":178,"column":42}},{"start":{"line":177,"column":4},"end":{"line":178,"column":42}}],"line":177},"24":{"loc":{"start":{"line":187,"column":8},"end":{"line":192,"column":9}},"type":"if","locations":[{"start":{"line":187,"column":8},"end":{"line":192,"column":9}},{"start":{"line":187,"column":8},"end":{"line":192,"column":9}}],"line":187},"25":{"loc":{"start":{"line":188,"column":12},"end":{"line":191,"column":34}},"type":"if","locations":[{"start":{"line":188,"column":12},"end":{"line":191,"column":34}},{"start":{"line":188,"column":12},"end":{"line":191,"column":34}}],"line":188},"26":{"loc":{"start":{"line":188,"column":16},"end":{"line":188,"column":49}},"type":"binary-expr","locations":[{"start":{"line":188,"column":16},"end":{"line":188,"column":30}},{"start":{"line":188,"column":34},"end":{"line":188,"column":49}}],"line":188},"27":{"loc":{"start":{"line":193,"column":8},"end":{"line":200,"column":9}},"type":"if","locations":[{"start":{"line":193,"column":8},"end":{"line":200,"column":9}},{"start":{"line":193,"column":8},"end":{"line":200,"column":9}}],"line":193},"28":{"loc":{"start":{"line":193,"column":12},"end":{"line":193,"column":36}},"type":"binary-expr","locations":[{"start":{"line":193,"column":12},"end":{"line":193,"column":22}},{"start":{"line":193,"column":26},"end":{"line":193,"column":36}}],"line":193},"29":{"loc":{"start":{"line":194,"column":12},"end":{"line":199,"column":50}},"type":"if","locations":[{"start":{"line":194,"column":12},"end":{"line":199,"column":50}},{"start":{"line":194,"column":12},"end":{"line":199,"column":50}}],"line":194},"30":{"loc":{"start":{"line":194,"column":16},"end":{"line":194,"column":48}},"type":"binary-expr","locations":[{"start":{"line":194,"column":16},"end":{"line":194,"column":30}},{"start":{"line":194,"column":34},"end":{"line":194,"column":48}}],"line":194},"31":{"loc":{"start":{"line":196,"column":17},"end":{"line":199,"column":50}},"type":"if","locations":[{"start":{"line":196,"column":17},"end":{"line":199,"column":50}},{"start":{"line":196,"column":17},"end":{"line":199,"column":50}}],"line":196},"32":{"loc":{"start":{"line":201,"column":8},"end":{"line":206,"column":9}},"type":"if","locations":[{"start":{"line":201,"column":8},"end":{"line":206,"column":9}},{"start":{"line":201,"column":8},"end":{"line":206,"column":9}}],"line":201},"33":{"loc":{"start":{"line":202,"column":12},"end":{"line":205,"column":53}},"type":"if","locations":[{"start":{"line":202,"column":12},"end":{"line":205,"column":53}},{"start":{"line":202,"column":12},"end":{"line":205,"column":53}}],"line":202},"34":{"loc":{"start":{"line":202,"column":16},"end":{"line":202,"column":49}},"type":"binary-expr","locations":[{"start":{"line":202,"column":16},"end":{"line":202,"column":30}},{"start":{"line":202,"column":34},"end":{"line":202,"column":49}}],"line":202},"35":{"loc":{"start":{"line":209,"column":4},"end":{"line":214,"column":69}},"type":"if","locations":[{"start":{"line":209,"column":4},"end":{"line":214,"column":69}},{"start":{"line":209,"column":4},"end":{"line":214,"column":69}}],"line":209},"36":{"loc":{"start":{"line":215,"column":4},"end":{"line":216,"column":43}},"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":216,"column":43}},{"start":{"line":215,"column":4},"end":{"line":216,"column":43}}],"line":215},"37":{"loc":{"start":{"line":217,"column":4},"end":{"line":218,"column":42}},"type":"if","locations":[{"start":{"line":217,"column":4},"end":{"line":218,"column":42}},{"start":{"line":217,"column":4},"end":{"line":218,"column":42}}],"line":217},"38":{"loc":{"start":{"line":225,"column":11},"end":{"line":225,"column":89}},"type":"binary-expr","locations":[{"start":{"line":225,"column":11},"end":{"line":225,"column":27}},{"start":{"line":225,"column":31},"end":{"line":225,"column":47}},{"start":{"line":225,"column":51},"end":{"line":225,"column":69}},{"start":{"line":225,"column":73},"end":{"line":225,"column":89}}],"line":225},"39":{"loc":{"start":{"line":228,"column":11},"end":{"line":228,"column":38}},"type":"binary-expr","locations":[{"start":{"line":228,"column":11},"end":{"line":228,"column":25}},{"start":{"line":228,"column":29},"end":{"line":228,"column":38}}],"line":228}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":1,"9":0,"10":0,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":34,"34":33,"35":26,"36":26,"37":26,"38":26,"39":26,"40":68,"41":68,"42":68,"43":0,"44":26,"45":26,"46":1,"47":1,"48":25,"49":1,"50":1,"51":1,"52":1,"53":2,"54":1,"55":2,"56":2,"57":6,"58":6,"59":6,"60":6,"61":1,"62":1,"63":5,"64":18,"65":18,"66":4,"67":4,"68":1,"69":1,"70":3,"71":7,"72":7,"73":1,"74":1,"75":6,"76":3,"77":3,"78":1,"79":1,"80":1,"81":63,"82":26,"83":26,"84":26,"85":26,"86":26,"87":26,"88":26,"89":26,"90":26,"91":63,"92":26,"93":26,"94":1,"95":25,"96":25,"97":25,"98":25,"99":25,"100":25,"101":25,"102":25,"103":25,"104":25,"105":25,"106":1,"107":33,"108":1,"109":32,"110":32,"111":32,"112":32,"113":32,"114":32,"115":125,"116":125,"117":91,"118":66,"119":25,"120":125,"121":58,"122":40,"123":18,"124":18,"125":0,"126":125,"127":19,"128":17,"129":2,"130":30,"131":7,"132":23,"133":29,"134":2,"135":27,"136":1,"137":26,"138":29,"139":27},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":1,"6":1,"7":34,"8":63,"9":33,"10":29,"11":27},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[1,1,1],"5":[1,0],"6":[1,1,1],"7":[1,0],"8":[1,1],"9":[0,0],"10":[0,0],"11":[0,0],"12":[1,1,1],"13":[0,1],"14":[1,1],"15":[0,26,1,2,6,18,4,7,3,1],"16":[1,25],"17":[1,5],"18":[6,4,2],"19":[1,3],"20":[1,6],"21":[3,23],"22":[1,25],"23":[1,32],"24":[91,34],"25":[66,25],"26":[91,66],"27":[58,67],"28":[125,59],"29":[40,18],"30":[58,57],"31":[18,0],"32":[19,106],"33":[17,2],"34":[19,17],"35":[7,23],"36":[2,27],"37":[1,26],"38":[29,4,3,3],"39":[27,21]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/decoder.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/decoder.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\nimport { BufferReader } from \"@node-lightning/bufio\";\nimport bech32 from \"bech32\";\nimport { ADDRESS_VERSION } from \"./address-version\";\nimport * as crypto from \"./crypto\";\nimport { FIELD_TYPE } from \"./field-type\";\nimport { hrpToPico } from \"./hrp-pico\";\nimport { Invoice } from \"./invoice\";\nimport { WordCursor } from \"./word-cursor\";\n\n/**\n * Decodes an invoice into an Invoice object\n * @param invoice\n * @return\n */\nexport function decode(invoice: string): Invoice {\n    // Decode the invoice into prefix and words.\n    // The words will be interated over to decode the rest of thee invoice\n    const { prefix, words } = bech32.decode(invoice, Number.MAX_SAFE_INTEGER);\n\n    // Parse the prefix into the network and the value in pico bitcoin.\n    const { network, picoBtc } = parsePrefix(prefix);\n\n    // Construct a word cursor to read from the remaining data\n    const wordcursor = new WordCursor(words);\n\n    const timestamp = wordcursor.readUIntBE(7); // read 7 words / 35 bits\n\n    const fields = [];\n    const unknownFields = [];\n\n    // read fields until at signature\n    while (wordcursor.wordsRemaining > 104) {\n        const type = wordcursor.readUIntBE(1); // read 1 word / 5 bits\n        const len = wordcursor.readUIntBE(2); // read 2 words / 10 bits\n\n        let value;\n\n        switch (type) {\n            case 0:\n                continue; // read off padding\n            case FIELD_TYPE.PAYMENT_HASH: // p - 256-bit sha256 payment_hash\n                value = wordcursor.readBytes(len);\n                // push non-standard length field into unknown fields\n                if (len !== 52) {\n                    unknownFields.push({ type, value });\n                    continue;\n                }\n                break;\n            case FIELD_TYPE.ROUTE: // r - variable, one or more entries containing extra routing info\n                {\n                    value = [];\n                    const bytes = wordcursor.readBytes(len);\n                    const bytecursor = new BufferReader(bytes);\n                    while (!bytecursor.eof) {\n                        value.push({\n                            pubkey: bytecursor.readBytes(33),\n                            short_channel_id: bytecursor.readBytes(8),\n                            fee_base_msat: bytecursor.readUInt32BE(),\n                            fee_proportional_millionths: bytecursor.readUInt32BE(),\n                            cltv_expiry_delta: bytecursor.readUInt16BE(),\n                        });\n                    }\n                }\n                break;\n            case FIELD_TYPE.EXPIRY: // x - expiry time in seconds\n                value = wordcursor.readUIntBE(len);\n                break;\n            case FIELD_TYPE.FALLBACK_ADDRESS: // f - variable depending on version\n                {\n                    const version = wordcursor.readUIntBE(1);\n                    const address = wordcursor.readBytes(len - 1);\n                    value = {\n                        version,\n                        address,\n                    };\n                    if (\n                        version !== ADDRESS_VERSION.SEGWIT &&\n                        version !== ADDRESS_VERSION.P2PKH &&\n                        version !== ADDRESS_VERSION.P2SH\n                    ) {\n                        unknownFields.push({ type, value });\n                        continue;\n                    }\n                }\n                break;\n            case FIELD_TYPE.SHORT_DESC: // d - short description of purpose of payment utf-8\n                value = wordcursor.readBytes(len).toString(\"utf8\");\n                break;\n            case FIELD_TYPE.PAYEE_NODE: // n - 33-byte public key of the payee node\n                value = wordcursor.readBytes(len);\n                if (len !== 53) {\n                    unknownFields.push({ type, value });\n                    continue;\n                }\n                break;\n            case FIELD_TYPE.HASH_DESC: // h - 256-bit sha256 description of purpose of payment\n                value = wordcursor.readBytes(len);\n                if (len !== 52) {\n                    unknownFields.push({ type, value });\n                    continue;\n                }\n                break;\n            case FIELD_TYPE.MIN_FINAL_CLTV_EXPIRY: // c - min_final_cltv_expiry to use for the last HTLC in the route\n                value = wordcursor.readUIntBE(len);\n                break;\n            default:\n                value = wordcursor.readBytes(len);\n                unknownFields.push({ type, value });\n                continue;\n        }\n\n        fields.push({ type, value });\n    }\n\n    const sigBytes = wordcursor.readBytes(103); // read 512-bit sig\n    const r = sigBytes.slice(0, 32);\n    const s = sigBytes.slice(32);\n    const recoveryFlag = wordcursor.readUIntBE(1);\n\n    wordcursor.position = 0;\n    let preHashData = wordcursor.readBytes(words.length - 104, true);\n    preHashData = Buffer.concat([Buffer.from(prefix), preHashData]);\n    const hashData = crypto.sha256(preHashData);\n\n    // extract the pubkey for verifying the signature by either:\n    // 1: using the payee field value (n)\n    // 2: performing signature recovery\n    const payeeNodeField = fields.find(p => p.type === FIELD_TYPE.PAYEE_NODE);\n    const pubkey = payeeNodeField\n        ? payeeNodeField.value // use payee node provided\n        : crypto.ecdsaRecovery(hashData, sigBytes, recoveryFlag); // recovery pubkey from ecdsa sig\n\n    // validate signature\n    // note if we performed signature recovery this will always match\n    // so we may want to just skip this if we had signature recovery\n    if (!crypto.ecdsaVerify(pubkey, hashData, sigBytes)) throw new Error(\"Signature invalid\");\n\n    // constuct the invoice\n    const result = new Invoice();\n    result._value = picoBtc; // directly assign pico value since there is not setter\n    result.network = network;\n    result.timestamp = timestamp;\n    result.fields = fields;\n    result.unknownFields = unknownFields;\n    result.signature = { r, s, recoveryFlag };\n    result.pubkey = pubkey;\n    result.hashData = hashData;\n    result.usedSigRecovery = !!payeeNodeField;\n    return result;\n}\n\n//////////////\n\n/**\n * Parses the prefix into network and value and then performs\n * validations on the values.\n *\n * This code is rough. Should refactor into two steps:\n * 1) tokenize\n * 2) parse tokens\n *\n * Value is returned as pico bitcoin.\n */\nfunction parsePrefix(prefix: string): { network: string; picoBtc: bigint } {\n    if (!prefix.startsWith(\"ln\")) throw new Error(\"Invalid prefix\");\n    let network = \"\";\n    let tempValue = \"\";\n    let value;\n    let multiplier;\n    let hasNetwork = false;\n    let hasAmount = false;\n\n    for (let i = 2; i < prefix.length; i++) {\n        const charCode = prefix.charCodeAt(i);\n\n        if (!hasNetwork) {\n            if (charCode >= 97 && charCode <= 122) network += prefix[i];\n            else hasNetwork = true;\n        }\n\n        if (hasNetwork && !hasAmount) {\n            if (charCode >= 48 && charCode <= 57) tempValue += prefix[i];\n            else if (tempValue) hasAmount = true;\n            else throw new Error(\"Invalid amount\");\n        }\n\n        if (hasAmount) {\n            if (charCode >= 97 && charCode <= 122) multiplier = prefix[i];\n            else throw new Error(\"Invalid character\");\n        }\n    }\n\n    // returns null if we do not have a value\n    if (tempValue === \"\") value = null;\n    // otherwise we multiply by the value by the pico amount to obtain\n    // the actual pico value of the\n    else value = BigInt(tempValue) * hrpToPico(multiplier);\n\n    if (!isValidNetwork(network)) throw new Error(\"Invalid network\");\n    if (!isValidValue(value)) throw new Error(\"Invalid amount\");\n\n    return {\n        network,\n        picoBtc: value,\n    };\n}\n\nfunction isValidNetwork(network) {\n    return network === \"bc\" || network === \"tb\" || network === \"bcrt\" || network === \"sb\";\n}\n\nfunction isValidValue(value) {\n    return value === null || value > 0;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"aa2a96a7d1e31ced8e1c203402d5d9c3ba853188"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/address-version.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/address-version.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"2":{"start":{"line":5,"column":0},"end":{"line":9,"column":80}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":62}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":61}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":59}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":28},"end":{"line":9,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":21},"end":{"line":9,"column":78}},"type":"binary-expr","locations":[{"start":{"line":9,"column":21},"end":{"line":9,"column":44}},{"start":{"line":9,"column":49},"end":{"line":9,"column":77}}],"line":9}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/address-version.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/address-version.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,yDAAU,CAAA;IACV,wDAAU,CAAA;IACV,sDAAS,CAAA;AACb,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B","sourcesContent":["export enum ADDRESS_VERSION {\n    SEGWIT = 0,\n    P2PKH = 17,\n    P2SH = 18,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"78ac530047aec7afc4e8cbd19f4f18abce000adf"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/crypto.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/crypto.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":25},"end":{"line":13,"column":2}},"9":{"start":{"line":10,"column":4},"end":{"line":10,"column":72}},"10":{"start":{"line":12,"column":4},"end":{"line":12,"column":21}},"11":{"start":{"line":14,"column":19},"end":{"line":20,"column":1}},"12":{"start":{"line":15,"column":4},"end":{"line":15,"column":42}},"13":{"start":{"line":15,"column":31},"end":{"line":15,"column":42}},"14":{"start":{"line":16,"column":17},"end":{"line":16,"column":19}},"15":{"start":{"line":17,"column":4},"end":{"line":17,"column":131}},"16":{"start":{"line":17,"column":21},"end":{"line":17,"column":131}},"17":{"start":{"line":17,"column":40},"end":{"line":17,"column":131}},"18":{"start":{"line":17,"column":99},"end":{"line":17,"column":131}},"19":{"start":{"line":18,"column":4},"end":{"line":18,"column":36}},"20":{"start":{"line":19,"column":4},"end":{"line":19,"column":18}},"21":{"start":{"line":21,"column":0},"end":{"line":21,"column":62}},"22":{"start":{"line":22,"column":0},"end":{"line":22,"column":90}},"23":{"start":{"line":23,"column":15},"end":{"line":23,"column":62}},"24":{"start":{"line":25,"column":4},"end":{"line":25,"column":31}},"25":{"start":{"line":27,"column":0},"end":{"line":27,"column":24}},"26":{"start":{"line":29,"column":4},"end":{"line":29,"column":53}},"27":{"start":{"line":31,"column":0},"end":{"line":31,"column":30}},"28":{"start":{"line":33,"column":4},"end":{"line":33,"column":72}},"29":{"start":{"line":35,"column":0},"end":{"line":35,"column":38}},"30":{"start":{"line":37,"column":4},"end":{"line":37,"column":56}},"31":{"start":{"line":39,"column":0},"end":{"line":39,"column":34}}},"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":80},"end":{"line":9,"column":81}},"loc":{"start":{"line":9,"column":95},"end":{"line":11,"column":1}},"line":9},"4":{"name":"(anonymous_4)","decl":{"start":{"line":11,"column":5},"end":{"line":11,"column":6}},"loc":{"start":{"line":11,"column":20},"end":{"line":13,"column":1}},"line":11},"5":{"name":"(anonymous_5)","decl":{"start":{"line":14,"column":50},"end":{"line":14,"column":51}},"loc":{"start":{"line":14,"column":65},"end":{"line":20,"column":1}},"line":14},"6":{"name":"sha256","decl":{"start":{"line":24,"column":9},"end":{"line":24,"column":15}},"loc":{"start":{"line":24,"column":22},"end":{"line":26,"column":1}},"line":24},"7":{"name":"ecdsaSign","decl":{"start":{"line":28,"column":9},"end":{"line":28,"column":18}},"loc":{"start":{"line":28,"column":37},"end":{"line":30,"column":1}},"line":28},"8":{"name":"ecdsaRecovery","decl":{"start":{"line":32,"column":9},"end":{"line":32,"column":22}},"loc":{"start":{"line":32,"column":57},"end":{"line":34,"column":1}},"line":32},"9":{"name":"ecdsaVerify","decl":{"start":{"line":36,"column":9},"end":{"line":36,"column":20}},"loc":{"start":{"line":36,"column":49},"end":{"line":38,"column":1}},"line":36}},"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":25},"end":{"line":13,"column":2}},"type":"binary-expr","locations":[{"start":{"line":9,"column":26},"end":{"line":9,"column":30}},{"start":{"line":9,"column":34},"end":{"line":9,"column":57}},{"start":{"line":9,"column":63},"end":{"line":13,"column":1}}],"line":9},"5":{"loc":{"start":{"line":9,"column":63},"end":{"line":13,"column":1}},"type":"cond-expr","locations":[{"start":{"line":9,"column":80},"end":{"line":11,"column":1}},{"start":{"line":11,"column":5},"end":{"line":13,"column":1}}],"line":9},"6":{"loc":{"start":{"line":14,"column":19},"end":{"line":20,"column":1}},"type":"binary-expr","locations":[{"start":{"line":14,"column":20},"end":{"line":14,"column":24}},{"start":{"line":14,"column":28},"end":{"line":14,"column":45}},{"start":{"line":14,"column":50},"end":{"line":20,"column":1}}],"line":14},"7":{"loc":{"start":{"line":15,"column":4},"end":{"line":15,"column":42}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":15,"column":42}},{"start":{"line":15,"column":4},"end":{"line":15,"column":42}}],"line":15},"8":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":29}},"type":"binary-expr","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":11}},{"start":{"line":15,"column":15},"end":{"line":15,"column":29}}],"line":15},"9":{"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":131}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":17,"column":131}},{"start":{"line":17,"column":4},"end":{"line":17,"column":131}}],"line":17},"10":{"loc":{"start":{"line":17,"column":40},"end":{"line":17,"column":131}},"type":"if","locations":[{"start":{"line":17,"column":40},"end":{"line":17,"column":131}},{"start":{"line":17,"column":40},"end":{"line":17,"column":131}}],"line":17},"11":{"loc":{"start":{"line":17,"column":44},"end":{"line":17,"column":97}},"type":"binary-expr","locations":[{"start":{"line":17,"column":44},"end":{"line":17,"column":59}},{"start":{"line":17,"column":63},"end":{"line":17,"column":97}}],"line":17}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":1,"9":0,"10":0,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":1,"22":1,"23":1,"24":39,"25":1,"26":12,"27":1,"28":23,"29":1,"30":26,"31":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":1,"6":39,"7":12,"8":23,"9":26},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[1,1,1],"5":[1,0],"6":[1,1,1],"7":[1,0],"8":[1,1],"9":[0,0],"10":[0,0],"11":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/crypto.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/crypto.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAiD;AAEjD,SAAgB,MAAM,CAAC,IAAY;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAFD,wBAEC;AAED,SAAgB,SAAS,CACrB,OAAe,EACf,OAAe;IAEf,OAAO,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AALD,8BAKC;AAED,SAAgB,aAAa,CAAC,OAAe,EAAE,SAAiB,EAAE,YAAoB;IAClF,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAFD,sCAEC;AAED,SAAgB,WAAW,CAAC,MAAc,EAAE,OAAe,EAAE,SAAiB;IAC1E,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAFD,kCAEC","sourcesContent":["import * as crypto from \"@node-lightning/crypto\";\n\nexport function sha256(data: Buffer): Buffer {\n    return crypto.sha256(data);\n}\n\nexport function ecdsaSign(\n    message: Buffer,\n    privKey: Buffer,\n): { signature: Buffer; recovery: number } {\n    return crypto.signWithRecovery(message, privKey);\n}\n\nexport function ecdsaRecovery(message: Buffer, signature: Buffer, recoveryFlag: number): Buffer {\n    return crypto.recoverPubKey(signature, recoveryFlag, message, true);\n}\n\nexport function ecdsaVerify(pubkey: Buffer, message: Buffer, signature: Buffer): boolean {\n    return crypto.verifySig(message, signature, pubkey);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"52b00187980052d96bae87af80d661d3941ddab1"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/field-type.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/field-type.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"2":{"start":{"line":5,"column":0},"end":{"line":14,"column":65}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":64}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":52}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":72}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":61}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":61}},"9":{"start":{"line":12,"column":4},"end":{"line":12,"column":59}},"10":{"start":{"line":13,"column":4},"end":{"line":13,"column":83}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":23},"end":{"line":14,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":16},"end":{"line":14,"column":63}},"type":"binary-expr","locations":[{"start":{"line":14,"column":16},"end":{"line":14,"column":34}},{"start":{"line":14,"column":39},"end":{"line":14,"column":62}}],"line":14}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/field-type.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/field-type.ts"],"names":[],"mappings":";;;AAAA,IAAY,UASX;AATD,WAAY,UAAU;IAClB,2DAAgB,CAAA;IAChB,6CAAS,CAAA;IACT,+CAAU,CAAA;IACV,mEAAoB,CAAA;IACpB,wDAAe,CAAA;IACf,wDAAe,CAAA;IACf,sDAAc,CAAA;IACd,8EAA0B,CAAA;AAC9B,CAAC,EATW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QASrB","sourcesContent":["export enum FIELD_TYPE {\n    PAYMENT_HASH = 1,\n    ROUTE = 3,\n    EXPIRY = 6,\n    FALLBACK_ADDRESS = 9,\n    SHORT_DESC = 13,\n    PAYEE_NODE = 19,\n    HASH_DESC = 23,\n    MIN_FINAL_CLTV_EXPIRY = 24,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a39d1b28cfb0a0fa2f7bd70325a2f870a8d05d5f"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/hrp-pico.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/hrp-pico.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":27}},"2":{"start":{"line":15,"column":4},"end":{"line":16,"column":28}},"3":{"start":{"line":16,"column":8},"end":{"line":16,"column":28}},"4":{"start":{"line":17,"column":4},"end":{"line":28,"column":5}},"5":{"start":{"line":19,"column":12},"end":{"line":19,"column":31}},"6":{"start":{"line":21,"column":12},"end":{"line":21,"column":31}},"7":{"start":{"line":23,"column":12},"end":{"line":23,"column":31}},"8":{"start":{"line":25,"column":12},"end":{"line":25,"column":29}},"9":{"start":{"line":27,"column":12},"end":{"line":27,"column":50}},"10":{"start":{"line":30,"column":0},"end":{"line":30,"column":30}}},"fnMap":{"0":{"name":"hrpToPico","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":18}},"loc":{"start":{"line":14,"column":34},"end":{"line":29,"column":1}},"line":14}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":4},"end":{"line":16,"column":28}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":16,"column":28}},{"start":{"line":15,"column":4},"end":{"line":16,"column":28}}],"line":15},"1":{"loc":{"start":{"line":17,"column":4},"end":{"line":28,"column":5}},"type":"switch","locations":[{"start":{"line":18,"column":8},"end":{"line":19,"column":31}},{"start":{"line":20,"column":8},"end":{"line":21,"column":31}},{"start":{"line":22,"column":8},"end":{"line":23,"column":31}},{"start":{"line":24,"column":8},"end":{"line":25,"column":29}},{"start":{"line":26,"column":8},"end":{"line":27,"column":50}}],"line":17}},"s":{"0":1,"1":1,"2":49,"3":10,"4":39,"5":18,"6":11,"7":5,"8":4,"9":1,"10":1},"f":{"0":49},"b":{"0":[10,39],"1":[18,11,5,4,1]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/hrp-pico.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/hrp-pico.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,SAAgB,SAAS,CAAC,aAAqB;IAC3C,IAAI,CAAC,aAAa;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,QAAQ,aAAa,EAAE;QACnB,KAAK,GAAG;YACJ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,GAAG;YACJ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,GAAG;YACJ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,GAAG;YACJ,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB;YACI,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KAC7C;AACL,CAAC;AAdD,8BAcC","sourcesContent":["/**\n * Returns the pico equivalent of the hrp multiplier as a BN object\n *\n * For instance:\n *   since m (milli) is 0.001 bitcoin, this is the equivalent of\n *   1000000000 or 1e9 pico bitcoin.\n *\n * @param hrpMultiplier\n * @return returns the BN pico bitcoin value\n */\nexport function hrpToPico(hrpMultiplier: string): bigint {\n    if (!hrpMultiplier) return BigInt(1e12);\n    switch (hrpMultiplier) {\n        case \"m\":\n            return BigInt(1e9);\n        case \"u\":\n            return BigInt(1e6);\n        case \"n\":\n            return BigInt(1e3);\n        case \"p\":\n            return BigInt(1);\n        default:\n            throw new Error(\"Invalid multiplier\");\n    }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"14d1f910d683337d106ebd2db489bcf2eff8b219"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/invoice.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/invoice.ts","statementMap":{"0":{"start":{"line":6,"column":22},"end":{"line":12,"column":3}},"1":{"start":{"line":7,"column":4},"end":{"line":7,"column":33}},"2":{"start":{"line":7,"column":26},"end":{"line":7,"column":33}},"3":{"start":{"line":8,"column":4},"end":{"line":8,"column":89}},"4":{"start":{"line":8,"column":71},"end":{"line":8,"column":83}},"5":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"6":{"start":{"line":10,"column":26},"end":{"line":10,"column":33}},"7":{"start":{"line":11,"column":4},"end":{"line":11,"column":17}},"8":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"9":{"start":{"line":14,"column":4},"end":{"line":14,"column":72}},"10":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"11":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"12":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"13":{"start":{"line":19,"column":31},"end":{"line":19,"column":42}},"14":{"start":{"line":20,"column":17},"end":{"line":20,"column":19}},"15":{"start":{"line":21,"column":4},"end":{"line":21,"column":131}},"16":{"start":{"line":21,"column":21},"end":{"line":21,"column":131}},"17":{"start":{"line":21,"column":40},"end":{"line":21,"column":131}},"18":{"start":{"line":21,"column":99},"end":{"line":21,"column":131}},"19":{"start":{"line":22,"column":4},"end":{"line":22,"column":36}},"20":{"start":{"line":23,"column":4},"end":{"line":23,"column":18}},"21":{"start":{"line":25,"column":22},"end":{"line":27,"column":1}},"22":{"start":{"line":26,"column":4},"end":{"line":26,"column":62}},"23":{"start":{"line":28,"column":0},"end":{"line":28,"column":62}},"24":{"start":{"line":29,"column":0},"end":{"line":29,"column":25}},"25":{"start":{"line":30,"column":17},"end":{"line":30,"column":51}},"26":{"start":{"line":31,"column":20},"end":{"line":31,"column":57}},"27":{"start":{"line":32,"column":26},"end":{"line":32,"column":54}},"28":{"start":{"line":33,"column":20},"end":{"line":33,"column":42}},"29":{"start":{"line":34,"column":15},"end":{"line":34,"column":48}},"30":{"start":{"line":35,"column":21},"end":{"line":35,"column":44}},"31":{"start":{"line":36,"column":19},"end":{"line":36,"column":29}},"32":{"start":{"line":37,"column":18},"end":{"line":37,"column":43}},"33":{"start":{"line":38,"column":18},"end":{"line":38,"column":30}},"34":{"start":{"line":39,"column":29},"end":{"line":39,"column":32}},"35":{"start":{"line":49,"column":8},"end":{"line":49,"column":27}},"36":{"start":{"line":50,"column":8},"end":{"line":50,"column":25}},"37":{"start":{"line":51,"column":8},"end":{"line":51,"column":32}},"38":{"start":{"line":60,"column":8},"end":{"line":60,"column":47}},"39":{"start":{"line":76,"column":8},"end":{"line":76,"column":92}},"40":{"start":{"line":79,"column":8},"end":{"line":82,"column":82}},"41":{"start":{"line":80,"column":12},"end":{"line":80,"column":31}},"42":{"start":{"line":82,"column":12},"end":{"line":82,"column":82}},"43":{"start":{"line":94,"column":8},"end":{"line":94,"column":75}},"44":{"start":{"line":97,"column":8},"end":{"line":100,"column":50}},"45":{"start":{"line":98,"column":12},"end":{"line":98,"column":31}},"46":{"start":{"line":100,"column":12},"end":{"line":100,"column":50}},"47":{"start":{"line":110,"column":8},"end":{"line":110,"column":76}},"48":{"start":{"line":113,"column":8},"end":{"line":116,"column":51}},"49":{"start":{"line":114,"column":12},"end":{"line":114,"column":31}},"50":{"start":{"line":116,"column":12},"end":{"line":116,"column":51}},"51":{"start":{"line":126,"column":8},"end":{"line":126,"column":95}},"52":{"start":{"line":129,"column":8},"end":{"line":129,"column":67}},"53":{"start":{"line":140,"column":8},"end":{"line":140,"column":73}},"54":{"start":{"line":143,"column":8},"end":{"line":144,"column":46}},"55":{"start":{"line":144,"column":12},"end":{"line":144,"column":46}},"56":{"start":{"line":145,"column":8},"end":{"line":145,"column":73}},"57":{"start":{"line":159,"column":8},"end":{"line":159,"column":47}},"58":{"start":{"line":162,"column":20},"end":{"line":162,"column":43}},"59":{"start":{"line":163,"column":8},"end":{"line":166,"column":34}},"60":{"start":{"line":164,"column":12},"end":{"line":164,"column":48}},"61":{"start":{"line":166,"column":12},"end":{"line":166,"column":34}},"62":{"start":{"line":178,"column":8},"end":{"line":178,"column":71}},"63":{"start":{"line":181,"column":8},"end":{"line":181,"column":67}},"64":{"start":{"line":182,"column":8},"end":{"line":182,"column":71}},"65":{"start":{"line":195,"column":8},"end":{"line":195,"column":70}},"66":{"start":{"line":198,"column":8},"end":{"line":199,"column":46}},"67":{"start":{"line":199,"column":12},"end":{"line":199,"column":46}},"68":{"start":{"line":200,"column":8},"end":{"line":200,"column":68}},"69":{"start":{"line":201,"column":8},"end":{"line":201,"column":70}},"70":{"start":{"line":214,"column":8},"end":{"line":214,"column":71}},"71":{"start":{"line":217,"column":8},"end":{"line":218,"column":46}},"72":{"start":{"line":218,"column":12},"end":{"line":218,"column":46}},"73":{"start":{"line":219,"column":8},"end":{"line":219,"column":71}},"74":{"start":{"line":228,"column":8},"end":{"line":228,"column":125}},"75":{"start":{"line":231,"column":8},"end":{"line":231,"column":82}},"76":{"start":{"line":239,"column":8},"end":{"line":241,"column":31}},"77":{"start":{"line":240,"column":25},"end":{"line":240,"column":76}},"78":{"start":{"line":241,"column":22},"end":{"line":241,"column":29}},"79":{"start":{"line":258,"column":8},"end":{"line":270,"column":9}},"80":{"start":{"line":259,"column":12},"end":{"line":259,"column":62}},"81":{"start":{"line":260,"column":12},"end":{"line":260,"column":67}},"82":{"start":{"line":262,"column":13},"end":{"line":270,"column":9}},"83":{"start":{"line":263,"column":12},"end":{"line":263,"column":61}},"84":{"start":{"line":264,"column":12},"end":{"line":264,"column":67}},"85":{"start":{"line":266,"column":13},"end":{"line":270,"column":9}},"86":{"start":{"line":267,"column":26},"end":{"line":267,"column":64}},"87":{"start":{"line":268,"column":12},"end":{"line":268,"column":31}},"88":{"start":{"line":269,"column":12},"end":{"line":269,"column":65}},"89":{"start":{"line":271,"column":8},"end":{"line":272,"column":43}},"90":{"start":{"line":272,"column":12},"end":{"line":272,"column":43}},"91":{"start":{"line":273,"column":8},"end":{"line":273,"column":106}},"92":{"start":{"line":281,"column":8},"end":{"line":281,"column":99}},"93":{"start":{"line":281,"column":39},"end":{"line":281,"column":79}},"94":{"start":{"line":281,"column":90},"end":{"line":281,"column":97}},"95":{"start":{"line":292,"column":8},"end":{"line":298,"column":9}},"96":{"start":{"line":293,"column":12},"end":{"line":294,"column":64}},"97":{"start":{"line":294,"column":16},"end":{"line":294,"column":64}},"98":{"start":{"line":295,"column":12},"end":{"line":297,"column":13}},"99":{"start":{"line":296,"column":16},"end":{"line":296,"column":84}},"100":{"start":{"line":299,"column":8},"end":{"line":299,"column":81}},"101":{"start":{"line":307,"column":22},"end":{"line":307,"column":60}},"102":{"start":{"line":307,"column":44},"end":{"line":307,"column":59}},"103":{"start":{"line":308,"column":8},"end":{"line":308,"column":43}},"104":{"start":{"line":316,"column":22},"end":{"line":316,"column":60}},"105":{"start":{"line":316,"column":44},"end":{"line":316,"column":59}},"106":{"start":{"line":317,"column":8},"end":{"line":320,"column":46}},"107":{"start":{"line":318,"column":12},"end":{"line":318,"column":32}},"108":{"start":{"line":320,"column":12},"end":{"line":320,"column":46}},"109":{"start":{"line":326,"column":8},"end":{"line":326,"column":63}},"110":{"start":{"line":326,"column":46},"end":{"line":326,"column":61}},"111":{"start":{"line":329,"column":0},"end":{"line":329,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":74},"end":{"line":6,"column":75}},"loc":{"start":{"line":6,"column":96},"end":{"line":9,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":58},"end":{"line":8,"column":59}},"loc":{"start":{"line":8,"column":69},"end":{"line":8,"column":85}},"line":8},"2":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":7}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":1}},"line":9},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":80},"end":{"line":13,"column":81}},"loc":{"start":{"line":13,"column":95},"end":{"line":15,"column":1}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":5},"end":{"line":15,"column":6}},"loc":{"start":{"line":15,"column":20},"end":{"line":17,"column":1}},"line":15},"5":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":50},"end":{"line":18,"column":51}},"loc":{"start":{"line":18,"column":65},"end":{"line":24,"column":1}},"line":18},"6":{"name":"(anonymous_6)","decl":{"start":{"line":25,"column":56},"end":{"line":25,"column":57}},"loc":{"start":{"line":25,"column":71},"end":{"line":27,"column":1}},"line":25},"7":{"name":"(anonymous_7)","decl":{"start":{"line":48,"column":4},"end":{"line":48,"column":5}},"loc":{"start":{"line":48,"column":18},"end":{"line":52,"column":5}},"line":48},"8":{"name":"(anonymous_8)","decl":{"start":{"line":59,"column":4},"end":{"line":59,"column":5}},"loc":{"start":{"line":59,"column":19},"end":{"line":61,"column":5}},"line":59},"9":{"name":"(anonymous_9)","decl":{"start":{"line":75,"column":4},"end":{"line":75,"column":5}},"loc":{"start":{"line":75,"column":17},"end":{"line":77,"column":5}},"line":75},"10":{"name":"(anonymous_10)","decl":{"start":{"line":78,"column":4},"end":{"line":78,"column":5}},"loc":{"start":{"line":78,"column":20},"end":{"line":83,"column":5}},"line":78},"11":{"name":"(anonymous_11)","decl":{"start":{"line":93,"column":4},"end":{"line":93,"column":5}},"loc":{"start":{"line":93,"column":19},"end":{"line":95,"column":5}},"line":93},"12":{"name":"(anonymous_12)","decl":{"start":{"line":96,"column":4},"end":{"line":96,"column":5}},"loc":{"start":{"line":96,"column":22},"end":{"line":101,"column":5}},"line":96},"13":{"name":"(anonymous_13)","decl":{"start":{"line":109,"column":4},"end":{"line":109,"column":5}},"loc":{"start":{"line":109,"column":20},"end":{"line":111,"column":5}},"line":109},"14":{"name":"(anonymous_14)","decl":{"start":{"line":112,"column":4},"end":{"line":112,"column":5}},"loc":{"start":{"line":112,"column":23},"end":{"line":117,"column":5}},"line":112},"15":{"name":"(anonymous_15)","decl":{"start":{"line":125,"column":4},"end":{"line":125,"column":5}},"loc":{"start":{"line":125,"column":17},"end":{"line":127,"column":5}},"line":125},"16":{"name":"(anonymous_16)","decl":{"start":{"line":128,"column":4},"end":{"line":128,"column":5}},"loc":{"start":{"line":128,"column":22},"end":{"line":130,"column":5}},"line":128},"17":{"name":"(anonymous_17)","decl":{"start":{"line":139,"column":4},"end":{"line":139,"column":5}},"loc":{"start":{"line":139,"column":22},"end":{"line":141,"column":5}},"line":139},"18":{"name":"(anonymous_18)","decl":{"start":{"line":142,"column":4},"end":{"line":142,"column":5}},"loc":{"start":{"line":142,"column":27},"end":{"line":146,"column":5}},"line":142},"19":{"name":"(anonymous_19)","decl":{"start":{"line":158,"column":4},"end":{"line":158,"column":5}},"loc":{"start":{"line":158,"column":15},"end":{"line":160,"column":5}},"line":158},"20":{"name":"(anonymous_20)","decl":{"start":{"line":161,"column":4},"end":{"line":161,"column":5}},"loc":{"start":{"line":161,"column":19},"end":{"line":167,"column":5}},"line":161},"21":{"name":"(anonymous_21)","decl":{"start":{"line":177,"column":4},"end":{"line":177,"column":5}},"loc":{"start":{"line":177,"column":20},"end":{"line":179,"column":5}},"line":177},"22":{"name":"(anonymous_22)","decl":{"start":{"line":180,"column":4},"end":{"line":180,"column":5}},"loc":{"start":{"line":180,"column":25},"end":{"line":183,"column":5}},"line":180},"23":{"name":"(anonymous_23)","decl":{"start":{"line":194,"column":4},"end":{"line":194,"column":5}},"loc":{"start":{"line":194,"column":19},"end":{"line":196,"column":5}},"line":194},"24":{"name":"(anonymous_24)","decl":{"start":{"line":197,"column":4},"end":{"line":197,"column":5}},"loc":{"start":{"line":197,"column":24},"end":{"line":202,"column":5}},"line":197},"25":{"name":"(anonymous_25)","decl":{"start":{"line":213,"column":4},"end":{"line":213,"column":5}},"loc":{"start":{"line":213,"column":20},"end":{"line":215,"column":5}},"line":213},"26":{"name":"(anonymous_26)","decl":{"start":{"line":216,"column":4},"end":{"line":216,"column":5}},"loc":{"start":{"line":216,"column":25},"end":{"line":220,"column":5}},"line":216},"27":{"name":"(anonymous_27)","decl":{"start":{"line":227,"column":4},"end":{"line":227,"column":5}},"loc":{"start":{"line":227,"column":29},"end":{"line":229,"column":5}},"line":227},"28":{"name":"(anonymous_28)","decl":{"start":{"line":230,"column":4},"end":{"line":230,"column":5}},"loc":{"start":{"line":230,"column":34},"end":{"line":232,"column":5}},"line":230},"29":{"name":"(anonymous_29)","decl":{"start":{"line":238,"column":4},"end":{"line":238,"column":5}},"loc":{"start":{"line":238,"column":28},"end":{"line":242,"column":5}},"line":238},"30":{"name":"(anonymous_30)","decl":{"start":{"line":240,"column":20},"end":{"line":240,"column":21}},"loc":{"start":{"line":240,"column":25},"end":{"line":240,"column":76}},"line":240},"31":{"name":"(anonymous_31)","decl":{"start":{"line":241,"column":17},"end":{"line":241,"column":18}},"loc":{"start":{"line":241,"column":22},"end":{"line":241,"column":29}},"line":241},"32":{"name":"(anonymous_32)","decl":{"start":{"line":254,"column":4},"end":{"line":254,"column":5}},"loc":{"start":{"line":254,"column":32},"end":{"line":274,"column":5}},"line":254},"33":{"name":"(anonymous_33)","decl":{"start":{"line":280,"column":4},"end":{"line":280,"column":5}},"loc":{"start":{"line":280,"column":17},"end":{"line":282,"column":5}},"line":280},"34":{"name":"(anonymous_34)","decl":{"start":{"line":281,"column":34},"end":{"line":281,"column":35}},"loc":{"start":{"line":281,"column":39},"end":{"line":281,"column":79}},"line":281},"35":{"name":"(anonymous_35)","decl":{"start":{"line":281,"column":85},"end":{"line":281,"column":86}},"loc":{"start":{"line":281,"column":90},"end":{"line":281,"column":97}},"line":281},"36":{"name":"(anonymous_36)","decl":{"start":{"line":291,"column":4},"end":{"line":291,"column":5}},"loc":{"start":{"line":291,"column":21},"end":{"line":300,"column":5}},"line":291},"37":{"name":"(anonymous_37)","decl":{"start":{"line":306,"column":4},"end":{"line":306,"column":5}},"loc":{"start":{"line":306,"column":30},"end":{"line":309,"column":5}},"line":306},"38":{"name":"(anonymous_38)","decl":{"start":{"line":307,"column":39},"end":{"line":307,"column":40}},"loc":{"start":{"line":307,"column":44},"end":{"line":307,"column":59}},"line":307},"39":{"name":"(anonymous_39)","decl":{"start":{"line":315,"column":4},"end":{"line":315,"column":5}},"loc":{"start":{"line":315,"column":32},"end":{"line":321,"column":5}},"line":315},"40":{"name":"(anonymous_40)","decl":{"start":{"line":316,"column":39},"end":{"line":316,"column":40}},"loc":{"start":{"line":316,"column":44},"end":{"line":316,"column":59}},"line":316},"41":{"name":"(anonymous_41)","decl":{"start":{"line":325,"column":4},"end":{"line":325,"column":5}},"loc":{"start":{"line":325,"column":29},"end":{"line":327,"column":5}},"line":325},"42":{"name":"(anonymous_42)","decl":{"start":{"line":326,"column":41},"end":{"line":326,"column":42}},"loc":{"start":{"line":326,"column":46},"end":{"line":326,"column":61}},"line":326}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":22},"end":{"line":12,"column":3}},"type":"binary-expr","locations":[{"start":{"line":6,"column":23},"end":{"line":6,"column":27}},{"start":{"line":6,"column":31},"end":{"line":6,"column":51}},{"start":{"line":6,"column":57},"end":{"line":12,"column":2}}],"line":6},"1":{"loc":{"start":{"line":6,"column":57},"end":{"line":12,"column":2}},"type":"cond-expr","locations":[{"start":{"line":6,"column":74},"end":{"line":9,"column":1}},{"start":{"line":9,"column":6},"end":{"line":12,"column":1}}],"line":6},"2":{"loc":{"start":{"line":7,"column":4},"end":{"line":7,"column":33}},"type":"if","locations":[{"start":{"line":7,"column":4},"end":{"line":7,"column":33}},{"start":{"line":7,"column":4},"end":{"line":7,"column":33}}],"line":7},"3":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},{"start":{"line":10,"column":4},"end":{"line":10,"column":33}}],"line":10},"4":{"loc":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":30}},{"start":{"line":13,"column":34},"end":{"line":13,"column":57}},{"start":{"line":13,"column":63},"end":{"line":17,"column":1}}],"line":13},"5":{"loc":{"start":{"line":13,"column":63},"end":{"line":17,"column":1}},"type":"cond-expr","locations":[{"start":{"line":13,"column":80},"end":{"line":15,"column":1}},{"start":{"line":15,"column":5},"end":{"line":17,"column":1}}],"line":13},"6":{"loc":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"type":"binary-expr","locations":[{"start":{"line":18,"column":20},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":45}},{"start":{"line":18,"column":50},"end":{"line":24,"column":1}}],"line":18},"7":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},{"start":{"line":19,"column":4},"end":{"line":19,"column":42}}],"line":19},"8":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":29}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":11}},{"start":{"line":19,"column":15},"end":{"line":19,"column":29}}],"line":19},"9":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":131}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":131}},{"start":{"line":21,"column":4},"end":{"line":21,"column":131}}],"line":21},"10":{"loc":{"start":{"line":21,"column":40},"end":{"line":21,"column":131}},"type":"if","locations":[{"start":{"line":21,"column":40},"end":{"line":21,"column":131}},{"start":{"line":21,"column":40},"end":{"line":21,"column":131}}],"line":21},"11":{"loc":{"start":{"line":21,"column":44},"end":{"line":21,"column":97}},"type":"binary-expr","locations":[{"start":{"line":21,"column":44},"end":{"line":21,"column":59}},{"start":{"line":21,"column":63},"end":{"line":21,"column":97}}],"line":21},"12":{"loc":{"start":{"line":25,"column":22},"end":{"line":27,"column":1}},"type":"binary-expr","locations":[{"start":{"line":25,"column":23},"end":{"line":25,"column":27}},{"start":{"line":25,"column":31},"end":{"line":25,"column":51}},{"start":{"line":25,"column":56},"end":{"line":27,"column":1}}],"line":25},"13":{"loc":{"start":{"line":26,"column":11},"end":{"line":26,"column":61}},"type":"cond-expr","locations":[{"start":{"line":26,"column":37},"end":{"line":26,"column":40}},{"start":{"line":26,"column":43},"end":{"line":26,"column":61}}],"line":26},"14":{"loc":{"start":{"line":26,"column":12},"end":{"line":26,"column":33}},"type":"binary-expr","locations":[{"start":{"line":26,"column":12},"end":{"line":26,"column":15}},{"start":{"line":26,"column":19},"end":{"line":26,"column":33}}],"line":26},"15":{"loc":{"start":{"line":76,"column":15},"end":{"line":76,"column":91}},"type":"cond-expr","locations":[{"start":{"line":76,"column":31},"end":{"line":76,"column":84}},{"start":{"line":76,"column":87},"end":{"line":76,"column":91}}],"line":76},"16":{"loc":{"start":{"line":79,"column":8},"end":{"line":82,"column":82}},"type":"if","locations":[{"start":{"line":79,"column":8},"end":{"line":82,"column":82}},{"start":{"line":79,"column":8},"end":{"line":82,"column":82}}],"line":79},"17":{"loc":{"start":{"line":94,"column":15},"end":{"line":94,"column":74}},"type":"cond-expr","locations":[{"start":{"line":94,"column":31},"end":{"line":94,"column":67}},{"start":{"line":94,"column":70},"end":{"line":94,"column":74}}],"line":94},"18":{"loc":{"start":{"line":97,"column":8},"end":{"line":100,"column":50}},"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":100,"column":50}},{"start":{"line":97,"column":8},"end":{"line":100,"column":50}}],"line":97},"19":{"loc":{"start":{"line":110,"column":15},"end":{"line":110,"column":75}},"type":"cond-expr","locations":[{"start":{"line":110,"column":31},"end":{"line":110,"column":68}},{"start":{"line":110,"column":71},"end":{"line":110,"column":75}}],"line":110},"20":{"loc":{"start":{"line":113,"column":8},"end":{"line":116,"column":51}},"type":"if","locations":[{"start":{"line":113,"column":8},"end":{"line":116,"column":51}},{"start":{"line":113,"column":8},"end":{"line":116,"column":51}}],"line":113},"21":{"loc":{"start":{"line":113,"column":12},"end":{"line":113,"column":37}},"type":"binary-expr","locations":[{"start":{"line":113,"column":12},"end":{"line":113,"column":16}},{"start":{"line":113,"column":20},"end":{"line":113,"column":37}}],"line":113},"22":{"loc":{"start":{"line":143,"column":8},"end":{"line":144,"column":46}},"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":144,"column":46}},{"start":{"line":143,"column":8},"end":{"line":144,"column":46}}],"line":143},"23":{"loc":{"start":{"line":159,"column":15},"end":{"line":159,"column":46}},"type":"binary-expr","locations":[{"start":{"line":159,"column":15},"end":{"line":159,"column":29}},{"start":{"line":159,"column":33},"end":{"line":159,"column":46}}],"line":159},"24":{"loc":{"start":{"line":163,"column":8},"end":{"line":166,"column":34}},"type":"if","locations":[{"start":{"line":163,"column":8},"end":{"line":166,"column":34}},{"start":{"line":163,"column":8},"end":{"line":166,"column":34}}],"line":163},"25":{"loc":{"start":{"line":198,"column":8},"end":{"line":199,"column":46}},"type":"if","locations":[{"start":{"line":198,"column":8},"end":{"line":199,"column":46}},{"start":{"line":198,"column":8},"end":{"line":199,"column":46}}],"line":198},"26":{"loc":{"start":{"line":217,"column":8},"end":{"line":218,"column":46}},"type":"if","locations":[{"start":{"line":217,"column":8},"end":{"line":218,"column":46}},{"start":{"line":217,"column":8},"end":{"line":218,"column":46}}],"line":217},"27":{"loc":{"start":{"line":258,"column":8},"end":{"line":270,"column":9}},"type":"if","locations":[{"start":{"line":258,"column":8},"end":{"line":270,"column":9}},{"start":{"line":258,"column":8},"end":{"line":270,"column":9}}],"line":258},"28":{"loc":{"start":{"line":258,"column":12},"end":{"line":258,"column":89}},"type":"binary-expr","locations":[{"start":{"line":258,"column":12},"end":{"line":258,"column":35}},{"start":{"line":258,"column":39},"end":{"line":258,"column":62}},{"start":{"line":258,"column":66},"end":{"line":258,"column":89}}],"line":258},"29":{"loc":{"start":{"line":262,"column":13},"end":{"line":270,"column":9}},"type":"if","locations":[{"start":{"line":262,"column":13},"end":{"line":270,"column":9}},{"start":{"line":262,"column":13},"end":{"line":270,"column":9}}],"line":262},"30":{"loc":{"start":{"line":262,"column":17},"end":{"line":262,"column":67}},"type":"binary-expr","locations":[{"start":{"line":262,"column":17},"end":{"line":262,"column":40}},{"start":{"line":262,"column":44},"end":{"line":262,"column":67}}],"line":262},"31":{"loc":{"start":{"line":266,"column":13},"end":{"line":270,"column":9}},"type":"if","locations":[{"start":{"line":266,"column":13},"end":{"line":270,"column":9}},{"start":{"line":266,"column":13},"end":{"line":270,"column":9}}],"line":266},"32":{"loc":{"start":{"line":266,"column":17},"end":{"line":266,"column":71}},"type":"binary-expr","locations":[{"start":{"line":266,"column":17},"end":{"line":266,"column":42}},{"start":{"line":266,"column":46},"end":{"line":266,"column":71}}],"line":266},"33":{"loc":{"start":{"line":271,"column":8},"end":{"line":272,"column":43}},"type":"if","locations":[{"start":{"line":271,"column":8},"end":{"line":272,"column":43}},{"start":{"line":271,"column":8},"end":{"line":272,"column":43}}],"line":271},"34":{"loc":{"start":{"line":293,"column":12},"end":{"line":294,"column":64}},"type":"if","locations":[{"start":{"line":293,"column":12},"end":{"line":294,"column":64}},{"start":{"line":293,"column":12},"end":{"line":294,"column":64}}],"line":293},"35":{"loc":{"start":{"line":295,"column":12},"end":{"line":297,"column":13}},"type":"if","locations":[{"start":{"line":295,"column":12},"end":{"line":297,"column":13}},{"start":{"line":295,"column":12},"end":{"line":297,"column":13}}],"line":295},"36":{"loc":{"start":{"line":308,"column":16},"end":{"line":308,"column":41}},"type":"cond-expr","locations":[{"start":{"line":308,"column":24},"end":{"line":308,"column":35}},{"start":{"line":308,"column":38},"end":{"line":308,"column":41}}],"line":308},"37":{"loc":{"start":{"line":317,"column":8},"end":{"line":320,"column":46}},"type":"if","locations":[{"start":{"line":317,"column":8},"end":{"line":320,"column":46}},{"start":{"line":317,"column":8},"end":{"line":320,"column":46}}],"line":317}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":1,"9":0,"10":0,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":1,"22":2,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":79,"36":79,"37":79,"38":41,"39":11,"40":7,"41":3,"42":4,"43":16,"44":15,"45":3,"46":12,"47":14,"48":8,"49":3,"50":5,"51":3,"52":2,"53":11,"54":14,"55":0,"56":14,"57":2,"58":2,"59":2,"60":1,"61":1,"62":7,"63":11,"64":11,"65":10,"66":9,"67":0,"68":9,"69":9,"70":3,"71":3,"72":0,"73":3,"74":2,"75":2,"76":10,"77":32,"78":10,"79":12,"80":5,"81":5,"82":7,"83":3,"84":3,"85":4,"86":4,"87":4,"88":4,"89":12,"90":4,"91":12,"92":10,"93":40,"94":10,"95":1,"96":2,"97":0,"98":2,"99":0,"100":1,"101":36,"102":50,"103":36,"104":41,"105":22,"106":41,"107":2,"108":39,"109":20,"110":10,"111":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":1,"6":2,"7":79,"8":41,"9":11,"10":7,"11":16,"12":15,"13":14,"14":8,"15":3,"16":2,"17":11,"18":14,"19":2,"20":2,"21":7,"22":11,"23":10,"24":9,"25":3,"26":3,"27":2,"28":2,"29":10,"30":32,"31":10,"32":12,"33":10,"34":40,"35":10,"36":1,"37":36,"38":50,"39":41,"40":22,"41":20,"42":10},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[1,1,1],"5":[1,0],"6":[1,1,1],"7":[1,0],"8":[1,1],"9":[0,0],"10":[0,0],"11":[0,0],"12":[1,1,1],"13":[0,2],"14":[2,2],"15":[8,3],"16":[3,4],"17":[13,3],"18":[3,12],"19":[9,5],"20":[3,5],"21":[8,6],"22":[0,14],"23":[2,1],"24":[1,1],"25":[0,9],"26":[0,3],"27":[5,7],"28":[12,10,8],"29":[3,4],"30":[7,5],"31":[4,0],"32":[4,1],"33":[4,8],"34":[0,2],"35":[0,2],"36":[33,3],"37":[2,39]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/invoice.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/invoice.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n\nimport bech32 from \"bech32\";\nimport bs58check from \"bs58check\";\nimport { ADDRESS_VERSION } from \"./address-version\";\nimport { EXPIRY_DEFAULT, MIN_FINAL_CLTV_EXPIRY_DEFAULT } from \"./constants\";\nimport * as crypto from \"./crypto\";\nimport { FallbackAddress } from \"./fallback-address\";\nimport { FIELD_TYPE } from \"./field-type\";\nimport { Route } from \"./route\";\nimport { Signature } from \"./signature\";\n\nconst picoToMsat = BigInt(10);\nconst picoToSat = picoToMsat * BigInt(1000);\nconst picoToBtc = BigInt(1e12);\nconst MAX_SHORT_DESC_BYTES = 639;\n\n/**\n * Invoice is the state container used for invoice data. It is used\n * when building an invoice or contains the results from decoded\n * invoices. The Invoice type does not perform validation on\n * data it contains but does contain helper methods to help\n * construct proper invoices.\n */\nexport class Invoice {\n    public network: string;\n    public timestamp: number = 0;\n    public fields: any[] = [];\n    public unknownFields: any[] = [];\n\n    /**\n     * ECDSA signature used to sign the invoice.\n     */\n    public signature: Signature;\n\n    /**\n     * Compressed public key on elliptic curve secp256k1 corresponding\n     * to the node that generated and signed the invoice. Returned\n     * as 33-bytes.\n     */\n    public pubkey: Buffer;\n\n    /**\n     * Buffer containing the buffer of the data used to generate the\n     * hash used in the signature.\n     */\n    public hashData: Buffer;\n\n    /**\n     * Inidicates if signature recovery was used when decoding and\n     * performing signature verification for an invoice. This value\n     * will be false if a payee node field was provided.\n     */\n    public usedSigRecovery: boolean;\n\n    /**\n     * Invoice value stored in pico bitcoin\n     */\n    public _value: bigint;\n\n    /**\n     * Returns true when the invoice has a value\n     * associated with it. Invoices may optionally contain a value.\n     * When there is no value, the invoice is for the receipt of\n     * any value.\n     */\n    public get hasValue(): boolean {\n        return typeof this._value === \"bigint\";\n    }\n\n    /**\n     * Warning: there is the possibility of precision loss!\n     *\n     * Gets the value in bitcoin as a string by converting from pico btc\n     * into bitcoin. Returns null if the invoice has no amount.\n     *\n     * Sets the value from a number or string that represeents a bitcoin\n     * value, such as 0.0001 to represent 10000 satoshi. Setting a falsy\n     * value will remove the value from the invoice.\n     *\n     * @deprecated This property is maintained for backwards compaibility.\n     * Use property `valueSat` or `valueMsat` instead.\n     */\n    public get amount(): string {\n        return this.hasValue ? (Number(this._value) / Number(picoToBtc)).toFixed(11) : null;\n    }\n\n    public set amount(val) {\n        if (!val) this._value = null;\n        else this._value = BigInt(Math.trunc(parseFloat(val) * Number(picoToBtc)));\n    }\n\n    /**\n     * Warning: Msat fractions are truncated!\n     *\n     * Gets the value in satoshi as a string by converting from pico btc\n     * into satoshi. Returns null if the invoice has no amount.\n     *\n     * Sets the value in satoshi from a string or number, such as 10000 satoshi.\n     * Setting a falsy value will remove the value from the invoice.\n     */\n    public get valueSat() {\n        return this.hasValue ? (this._value / picoToSat).toString() : null;\n    }\n\n    public set valueSat(val) {\n        if (!val) this._value = null;\n        else this._value = BigInt(val) * picoToSat;\n    }\n\n    /**\n     * Gets the value in milli-sataoshi as a string or returns null\n     * if the invoice has no amount.\n     *\n     * Sets the value in millisatoshi from a string or number. Setting a falsy\n     * value will remove the value from the invoice.\n     */\n    public get valueMsat(): string {\n        return this.hasValue ? (this._value / picoToMsat).toString() : null;\n    }\n\n    public set valueMsat(val) {\n        if (!val || Number(val) === 0) this._value = null;\n        else this._value = BigInt(val) * picoToMsat;\n    }\n\n    /**\n     * Get the expiry time for the invoice as a big endian number\n     * of seconds. The defualt is one hour (3600).\n     *\n     * Sets the expiry time in seconds for the invoice.  Only a single\n     * expiry field is valid in the invoice.\n     */\n    public get expiry(): number {\n        return this._getFieldValue(FIELD_TYPE.EXPIRY, EXPIRY_DEFAULT);\n    }\n\n    public set expiry(value) {\n        this._setFieldValue(FIELD_TYPE.EXPIRY, value);\n    }\n\n    /**\n     * Gets the 256-bit payment hash. The preimage of this value\n     * will provide proof of payment.\n     *\n     * Sets the 256-bit payment hash for the invoice from a Buffer\n     * or hex-encoded string. Only a single field of this type is\n     * valid in the invoice.\n     */\n    public get paymentHash(): Buffer {\n        return this._getFieldValue(FIELD_TYPE.PAYMENT_HASH);\n    }\n\n    public set paymentHash(value) {\n        if (typeof value === \"string\") value = Buffer.from(value, \"hex\");\n        this._setFieldValue(FIELD_TYPE.PAYMENT_HASH, value);\n    }\n\n    /**\n     * Gets the description as either a shortDesc or hashDesc\n     * value. If it is the former it is returned as a string.\n     * hashDesc is returned as a buffer of the hash.\n     *\n     * Sets the description for the invoice. An invoice must use hash\n     * description for messages longer than 639 bytes. If the string is\n     * longer than 639 bytes, the description will be hashed and stored\n     * in hashDesc. Otherwise, the raw string will be stored in the\n     * short desc.\n     */\n    public get desc(): string | Buffer {\n        return this.shortDesc || this.hashDesc;\n    }\n\n    public set desc(desc) {\n        const len = Buffer.byteLength(desc);\n        if (len > MAX_SHORT_DESC_BYTES) this.hashDesc = crypto.sha256(desc as Buffer);\n        else this.shortDesc = desc as string;\n    }\n\n    /**\n     * Gets the short description text. Returns null when the invoice\n     * does not contain a short description. An invoice must set\n     * either a short description or a hash description.\n     *\n     * Sets the short description text. Maximum valid length is 639\n     * bytes. Only a single short desc or hash desc field is allowed.\n     * Setting this field will remove the hashDesc field value.\n     */\n    public get shortDesc(): string {\n        return this._getFieldValue(FIELD_TYPE.SHORT_DESC);\n    }\n\n    public set shortDesc(value) {\n        this._removeFieldByType(FIELD_TYPE.HASH_DESC);\n        this._setFieldValue(FIELD_TYPE.SHORT_DESC, value);\n    }\n\n    /**\n     * Gets the 256-bit hash of the description. Returns\n     * null when an invoice does not contain a hash description.\n     * An invoice must contain either a shortDesc or hashDesc.\n     *\n     * Sets the hash description to the hex-encoded string or\n     * Buffer containing the the hashed description.\n     * This must be used for descriptions that are over 639 bytes\n     * long. Setting this field will remove any short desc fields.\n     */\n    public get hashDesc(): Buffer {\n        return this._getFieldValue(FIELD_TYPE.HASH_DESC);\n    }\n\n    public set hashDesc(value) {\n        if (typeof value === \"string\") value = Buffer.from(value, \"hex\");\n        this._removeFieldByType(FIELD_TYPE.SHORT_DESC);\n        this._setFieldValue(FIELD_TYPE.HASH_DESC, value);\n    }\n\n    /**\n     * Gets the 33-byte public key of the payee node. This is\n     * used to explicitly describe the payee node instead of\n     * relying on pub key recovery from the signature.\n     *\n     * Sets the 33-byte public key of the payee node. This is\n     * used to set the public key explicitly instead of relying\n     * on signature recovery. This field must match the pubkey\n     * used to generate the signature.\n     */\n    public get payeeNode(): Buffer {\n        return this._getFieldValue(FIELD_TYPE.PAYEE_NODE);\n    }\n\n    public set payeeNode(value) {\n        if (typeof value === \"string\") value = Buffer.from(value, \"hex\");\n        this._setFieldValue(FIELD_TYPE.PAYEE_NODE, value);\n    }\n\n    /**\n     * Gets the min final route CLTV expiry. If none is provided,\n     * the default is 9.\n     *\n     * Sets the min final route CLTV expiry used in the final route.\n     */\n    public get minFinalCltvExpiry(): number {\n        return this._getFieldValue(FIELD_TYPE.MIN_FINAL_CLTV_EXPIRY, MIN_FINAL_CLTV_EXPIRY_DEFAULT);\n    }\n\n    public set minFinalCltvExpiry(value) {\n        this._setFieldValue(FIELD_TYPE.MIN_FINAL_CLTV_EXPIRY, value);\n    }\n\n    /**\n     * Gets a list of fall back addresses. An invoice can include\n     * multiple fallback addresses to send to an on-chain address\n     * in the event of failure.\n     */\n    public get fallbackAddresses(): FallbackAddress[] {\n        return this.fields\n            .filter(p => p.type === FIELD_TYPE.FALLBACK_ADDRESS)\n            .map(p => p.value) as FallbackAddress[];\n    }\n\n    /**\n     * Adds a fallback address to the invoice. An invoice can include\n     * one or more fallback addresses to send to an on-chain address\n     * in the event of failure. This field may not make sense for small\n     * or time-sensitive payments.\n     *\n     * The address string will be parsed and the appropriate address\n     * type is added to the field metadata. The address will be\n     * converted into a buffer containing the string values of the\n     * address.\n     */\n    public addFallbackAddress(addrStr: string) {\n        let version: ADDRESS_VERSION;\n        let address: number[] | Buffer;\n\n        // TODO - externalize magic strings!!!\n        if (addrStr.startsWith(\"1\") || addrStr.startsWith(\"m\") || addrStr.startsWith(\"n\")) {\n            version = ADDRESS_VERSION.P2PKH;\n            address = bs58check.decode(addrStr).slice(1); // remove prefix\n        } else if (addrStr.startsWith(\"3\") || addrStr.startsWith(\"2\")) {\n            version = ADDRESS_VERSION.P2SH;\n            address = bs58check.decode(addrStr).slice(1); // remove prefix\n        } else if (addrStr.startsWith(\"bc1\") || addrStr.startsWith(\"tb1\")) {\n            const words = bech32.decode(addrStr).words;\n            version = words[0];\n            address = bech32.fromWords(words.slice(1));\n        }\n        if (Array.isArray(address)) address = Buffer.from(address);\n        this.fields.push({ type: FIELD_TYPE.FALLBACK_ADDRESS, value: { version, address } });\n    }\n\n    /**\n     * Gets the list of routes that are specified in the invoice.\n     * Route information is necessary to route payments to private\n     * nodes.\n     */\n    public get routes(): Route[] {\n        return this.fields.filter(p => p.type === FIELD_TYPE.ROUTE).map(p => p.value);\n    }\n\n    /**\n     * Adds a collection of routes to the invoice. A route entry must\n     * be provided by private nodes so that a public addressible node\n     * can be found by the recipient.\n     *\n     * Multiple route fields can be added to an invoice in according\n     * with BOLT 11 to give the routing options.\n     */\n    public addRoute(routes: Route[]) {\n        for (const route of routes) {\n            if (typeof route.pubkey === \"string\") route.pubkey = Buffer.from(route.pubkey, \"hex\");\n            if (typeof route.short_channel_id === \"string\") {\n                route.short_channel_id = Buffer.from(route.short_channel_id, \"hex\");\n            }\n        }\n        this.fields.push({ type: FIELD_TYPE.ROUTE, value: routes });\n    }\n\n    ///////////////////////////////////////////////////////////////////\n\n    /**\n     * Gets the value of thee first matching field that matches the field\n     * type. If no result is found, the default value will be used.\n     */\n    private _getFieldValue<T>(type: FIELD_TYPE, def?: T): T {\n        const field = this.fields.find(p => p.type === type);\n        return (field ? field.value : def) as T;\n    }\n\n    /**\n     * Sets the field value for the first matching field. If no\n     * field exists it will insert a new field with the type and value\n     * supplied.\n     */\n    private _setFieldValue<T>(type: FIELD_TYPE, value: T) {\n        const field = this.fields.find(p => p.type === type);\n        if (field) field.value = value;\n        else this.fields.push({ type, value });\n    }\n\n    /**\n     * Removes the fields that match the supplied type.\n     */\n    private _removeFieldByType(type: FIELD_TYPE) {\n        this.fields = this.fields.filter(p => p.type !== type);\n    }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a77a507f6aab2ca9a7ded2e450006ed14fda2b11"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/constants.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/constants.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":72}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":30}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/constants.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAW,IAAI,CAAC;AAC9B,QAAA,6BAA6B,GAAW,CAAC,CAAC","sourcesContent":["export const EXPIRY_DEFAULT: number = 3600;\nexport const MIN_FINAL_CLTV_EXPIRY_DEFAULT: number = 9;\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"150122512e88a687baeb28e69bb0592dd2762c62"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/word-cursor.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/word-cursor.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":25},"end":{"line":13,"column":2}},"9":{"start":{"line":10,"column":4},"end":{"line":10,"column":72}},"10":{"start":{"line":12,"column":4},"end":{"line":12,"column":21}},"11":{"start":{"line":14,"column":19},"end":{"line":20,"column":1}},"12":{"start":{"line":15,"column":4},"end":{"line":15,"column":42}},"13":{"start":{"line":15,"column":31},"end":{"line":15,"column":42}},"14":{"start":{"line":16,"column":17},"end":{"line":16,"column":19}},"15":{"start":{"line":17,"column":4},"end":{"line":17,"column":131}},"16":{"start":{"line":17,"column":21},"end":{"line":17,"column":131}},"17":{"start":{"line":17,"column":40},"end":{"line":17,"column":131}},"18":{"start":{"line":17,"column":99},"end":{"line":17,"column":131}},"19":{"start":{"line":18,"column":4},"end":{"line":18,"column":36}},"20":{"start":{"line":19,"column":4},"end":{"line":19,"column":18}},"21":{"start":{"line":21,"column":0},"end":{"line":21,"column":62}},"22":{"start":{"line":22,"column":0},"end":{"line":22,"column":28}},"23":{"start":{"line":23,"column":19},"end":{"line":23,"column":57}},"24":{"start":{"line":26,"column":8},"end":{"line":26,"column":27}},"25":{"start":{"line":27,"column":8},"end":{"line":27,"column":26}},"26":{"start":{"line":30,"column":8},"end":{"line":30,"column":49}},"27":{"start":{"line":33,"column":8},"end":{"line":34,"column":56}},"28":{"start":{"line":34,"column":12},"end":{"line":34,"column":56}},"29":{"start":{"line":35,"column":22},"end":{"line":35,"column":40}},"30":{"start":{"line":36,"column":21},"end":{"line":36,"column":33}},"31":{"start":{"line":37,"column":8},"end":{"line":40,"column":9}},"32":{"start":{"line":37,"column":21},"end":{"line":37,"column":32}},"33":{"start":{"line":38,"column":12},"end":{"line":38,"column":34}},"34":{"start":{"line":39,"column":12},"end":{"line":39,"column":22}},"35":{"start":{"line":41,"column":8},"end":{"line":41,"column":27}},"36":{"start":{"line":44,"column":22},"end":{"line":44,"column":61}},"37":{"start":{"line":45,"column":8},"end":{"line":45,"column":27}},"38":{"start":{"line":48,"column":22},"end":{"line":48,"column":79}},"39":{"start":{"line":49,"column":18},"end":{"line":49,"column":19}},"40":{"start":{"line":50,"column":8},"end":{"line":53,"column":9}},"41":{"start":{"line":51,"column":12},"end":{"line":51,"column":22}},"42":{"start":{"line":52,"column":12},"end":{"line":52,"column":24}},"43":{"start":{"line":54,"column":8},"end":{"line":54,"column":34}},"44":{"start":{"line":55,"column":8},"end":{"line":55,"column":19}},"45":{"start":{"line":58,"column":22},"end":{"line":58,"column":79}},"46":{"start":{"line":59,"column":8},"end":{"line":59,"column":34}},"47":{"start":{"line":60,"column":8},"end":{"line":60,"column":70}},"48":{"start":{"line":63,"column":8},"end":{"line":63,"column":46}},"49":{"start":{"line":66,"column":0},"end":{"line":66,"column":32}}},"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":80},"end":{"line":9,"column":81}},"loc":{"start":{"line":9,"column":95},"end":{"line":11,"column":1}},"line":9},"4":{"name":"(anonymous_4)","decl":{"start":{"line":11,"column":5},"end":{"line":11,"column":6}},"loc":{"start":{"line":11,"column":20},"end":{"line":13,"column":1}},"line":11},"5":{"name":"(anonymous_5)","decl":{"start":{"line":14,"column":50},"end":{"line":14,"column":51}},"loc":{"start":{"line":14,"column":65},"end":{"line":20,"column":1}},"line":14},"6":{"name":"(anonymous_6)","decl":{"start":{"line":25,"column":4},"end":{"line":25,"column":5}},"loc":{"start":{"line":25,"column":28},"end":{"line":28,"column":5}},"line":25},"7":{"name":"(anonymous_7)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":5}},"loc":{"start":{"line":29,"column":25},"end":{"line":31,"column":5}},"line":29},"8":{"name":"(anonymous_8)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":30},"end":{"line":42,"column":5}},"line":32},"9":{"name":"(anonymous_9)","decl":{"start":{"line":43,"column":4},"end":{"line":43,"column":5}},"loc":{"start":{"line":43,"column":32},"end":{"line":46,"column":5}},"line":43},"10":{"name":"(anonymous_10)","decl":{"start":{"line":47,"column":4},"end":{"line":47,"column":5}},"loc":{"start":{"line":47,"column":25},"end":{"line":56,"column":5}},"line":47},"11":{"name":"(anonymous_11)","decl":{"start":{"line":57,"column":4},"end":{"line":57,"column":5}},"loc":{"start":{"line":57,"column":37},"end":{"line":61,"column":5}},"line":57},"12":{"name":"(anonymous_12)","decl":{"start":{"line":62,"column":4},"end":{"line":62,"column":5}},"loc":{"start":{"line":62,"column":18},"end":{"line":64,"column":5}},"line":62}},"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":25},"end":{"line":13,"column":2}},"type":"binary-expr","locations":[{"start":{"line":9,"column":26},"end":{"line":9,"column":30}},{"start":{"line":9,"column":34},"end":{"line":9,"column":57}},{"start":{"line":9,"column":63},"end":{"line":13,"column":1}}],"line":9},"5":{"loc":{"start":{"line":9,"column":63},"end":{"line":13,"column":1}},"type":"cond-expr","locations":[{"start":{"line":9,"column":80},"end":{"line":11,"column":1}},{"start":{"line":11,"column":5},"end":{"line":13,"column":1}}],"line":9},"6":{"loc":{"start":{"line":14,"column":19},"end":{"line":20,"column":1}},"type":"binary-expr","locations":[{"start":{"line":14,"column":20},"end":{"line":14,"column":24}},{"start":{"line":14,"column":28},"end":{"line":14,"column":45}},{"start":{"line":14,"column":50},"end":{"line":20,"column":1}}],"line":14},"7":{"loc":{"start":{"line":15,"column":4},"end":{"line":15,"column":42}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":15,"column":42}},{"start":{"line":15,"column":4},"end":{"line":15,"column":42}}],"line":15},"8":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":29}},"type":"binary-expr","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":11}},{"start":{"line":15,"column":15},"end":{"line":15,"column":29}}],"line":15},"9":{"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":131}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":17,"column":131}},{"start":{"line":17,"column":4},"end":{"line":17,"column":131}}],"line":17},"10":{"loc":{"start":{"line":17,"column":40},"end":{"line":17,"column":131}},"type":"if","locations":[{"start":{"line":17,"column":40},"end":{"line":17,"column":131}},{"start":{"line":17,"column":40},"end":{"line":17,"column":131}}],"line":17},"11":{"loc":{"start":{"line":17,"column":44},"end":{"line":17,"column":97}},"type":"binary-expr","locations":[{"start":{"line":17,"column":44},"end":{"line":17,"column":59}},{"start":{"line":17,"column":63},"end":{"line":17,"column":97}}],"line":17},"12":{"loc":{"start":{"line":25,"column":16},"end":{"line":25,"column":26}},"type":"default-arg","locations":[{"start":{"line":25,"column":24},"end":{"line":25,"column":26}}],"line":25},"13":{"loc":{"start":{"line":33,"column":8},"end":{"line":34,"column":56}},"type":"if","locations":[{"start":{"line":33,"column":8},"end":{"line":34,"column":56}},{"start":{"line":33,"column":8},"end":{"line":34,"column":56}}],"line":33},"14":{"loc":{"start":{"line":43,"column":20},"end":{"line":43,"column":30}},"type":"default-arg","locations":[{"start":{"line":43,"column":26},"end":{"line":43,"column":30}}],"line":43},"15":{"loc":{"start":{"line":57,"column":24},"end":{"line":57,"column":35}},"type":"default-arg","locations":[{"start":{"line":57,"column":30},"end":{"line":57,"column":35}}],"line":57}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":1,"9":0,"10":0,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":1,"22":1,"23":1,"24":38,"25":38,"26":94,"27":102,"28":0,"29":102,"30":102,"31":102,"32":102,"33":211,"34":211,"35":102,"36":44,"37":44,"38":199,"39":199,"40":199,"41":427,"42":427,"43":199,"44":199,"45":115,"46":115,"47":115,"48":146,"49":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":1,"6":38,"7":94,"8":102,"9":44,"10":199,"11":115,"12":146},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[1,1,1],"5":[1,0],"6":[1,1,1],"7":[1,0],"8":[1,1],"9":[0,0],"10":[0,0],"11":[0,0],"12":[12],"13":[0,102],"14":[44],"15":[89]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/word-cursor.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/word-cursor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4C;AAE5C,MAAa,UAAU;IAInB,YAAY,QAAkB,EAAE;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAEM,WAAW,CAAC,GAAW,EAAE,OAAe;QAC3C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;YACtB,GAAG,KAAK,CAAC,CAAC;SACb;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEM,UAAU,CAAC,GAAW,EAAE,MAAe,IAAI;QAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEM,UAAU,CAAC,QAAgB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;QACxE,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,GAAG,KAAK,CAAC,CAAC;YACV,GAAG,IAAI,IAAI,CAAC;SACf;QACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAC1B,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,SAAS,CAAC,QAAgB,EAAE,MAAe,KAAK;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,MAAM,CAAC,KAAe;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;CACJ;AAjDD,gCAiDC","sourcesContent":["import * as bech32Util from \"./bech32-util\";\n\nexport class WordCursor {\n    public words: number[];\n    public position: number;\n\n    constructor(words: number[] = []) {\n        this.words = words;\n        this.position = 0;\n    }\n\n    public get wordsRemaining(): number {\n        return this.words.length - this.position;\n    }\n\n    public writeUIntBE(val: number, wordLen: number) {\n        if (!wordLen) throw new Error(\"wordLen must be provided\");\n        const words = new Array(wordLen);\n        const maxV = (1 << 5) - 1;\n        for (let i = wordLen - 1; i >= 0; i--) {\n            words[i] = val & maxV;\n            val >>= 5;\n        }\n        this._merge(words);\n    }\n\n    public writeBytes(buf: Buffer, pad: boolean = true) {\n        const words = bech32Util.convertWords(buf, 8, 5, pad);\n        this._merge(words);\n    }\n\n    public readUIntBE(numWords: number) {\n        const words = this.words.slice(this.position, this.position + numWords);\n        let val = 0;\n        for (const word of words) {\n            val <<= 5;\n            val |= word;\n        }\n        this.position += numWords;\n        return val;\n    }\n\n    public readBytes(numWords: number, pad: boolean = false) {\n        const words = this.words.slice(this.position, this.position + numWords);\n        this.position += numWords;\n        return Buffer.from(bech32Util.convertWords(words, 5, 8, pad));\n    }\n\n    private _merge(words: number[]) {\n        this.words = this.words.concat(words);\n    }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ce345b2e9969d155eaa37041e2b594885bd5dcc9"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/bech32-util.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/bech32-util.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":93}},"2":{"start":{"line":18,"column":16},"end":{"line":18,"column":17}},"3":{"start":{"line":19,"column":15},"end":{"line":19,"column":16}},"4":{"start":{"line":20,"column":17},"end":{"line":20,"column":35}},"5":{"start":{"line":21,"column":19},"end":{"line":21,"column":21}},"6":{"start":{"line":22,"column":4},"end":{"line":29,"column":5}},"7":{"start":{"line":22,"column":17},"end":{"line":22,"column":18}},"8":{"start":{"line":23,"column":8},"end":{"line":23,"column":44}},"9":{"start":{"line":24,"column":8},"end":{"line":24,"column":23}},"10":{"start":{"line":25,"column":8},"end":{"line":28,"column":9}},"11":{"start":{"line":26,"column":12},"end":{"line":26,"column":28}},"12":{"start":{"line":27,"column":12},"end":{"line":27,"column":48}},"13":{"start":{"line":30,"column":4},"end":{"line":32,"column":5}},"14":{"start":{"line":31,"column":8},"end":{"line":31,"column":56}},"15":{"start":{"line":33,"column":4},"end":{"line":33,"column":18}},"16":{"start":{"line":35,"column":0},"end":{"line":35,"column":36}},"17":{"start":{"line":46,"column":4},"end":{"line":46,"column":41}},"18":{"start":{"line":48,"column":0},"end":{"line":48,"column":30}},"19":{"start":{"line":58,"column":4},"end":{"line":58,"column":31}},"20":{"start":{"line":60,"column":0},"end":{"line":60,"column":32}},"21":{"start":{"line":71,"column":4},"end":{"line":71,"column":33}},"22":{"start":{"line":73,"column":0},"end":{"line":73,"column":34}}},"fnMap":{"0":{"name":"convertWords","decl":{"start":{"line":17,"column":9},"end":{"line":17,"column":21}},"loc":{"start":{"line":17,"column":50},"end":{"line":34,"column":1}},"line":17},"1":{"name":"sizeofNum","decl":{"start":{"line":45,"column":9},"end":{"line":45,"column":18}},"loc":{"start":{"line":45,"column":24},"end":{"line":47,"column":1}},"line":45},"2":{"name":"sizeofBits","decl":{"start":{"line":57,"column":9},"end":{"line":57,"column":19}},"loc":{"start":{"line":57,"column":26},"end":{"line":59,"column":1}},"line":57},"3":{"name":"sizeofBytes","decl":{"start":{"line":70,"column":9},"end":{"line":70,"column":20}},"loc":{"start":{"line":70,"column":28},"end":{"line":72,"column":1}},"line":70}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":4},"end":{"line":32,"column":5}},"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":32,"column":5}},{"start":{"line":30,"column":4},"end":{"line":32,"column":5}}],"line":30},"1":{"loc":{"start":{"line":30,"column":8},"end":{"line":30,"column":23}},"type":"binary-expr","locations":[{"start":{"line":30,"column":8},"end":{"line":30,"column":11}},{"start":{"line":30,"column":15},"end":{"line":30,"column":23}}],"line":30}},"s":{"0":1,"1":1,"2":171,"3":171,"4":171,"5":171,"6":171,"7":171,"8":11995,"9":11995,"10":11995,"11":9097,"12":9097,"13":171,"14":68,"15":171,"16":1,"17":3,"18":1,"19":32,"20":1,"21":31,"22":1},"f":{"0":171,"1":3,"2":32,"3":31},"b":{"0":[68,103],"1":[171,82]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/bech32-util.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/bech32-util.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,SAAgB,YAAY,CACxB,IAAuB,EACvB,MAAc,EACd,OAAe,EACf,GAAY;IAEZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QAClC,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,IAAI,MAAM,CAAC;QAEf,OAAO,IAAI,IAAI,OAAO,EAAE;YACpB,IAAI,IAAI,OAAO,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;SACvC;KACJ;IAED,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE;QACjB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;KACnD;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AA1BD,oCA0BC;AAED;;;;;;;;GAQG;AACH,SAAgB,SAAS,CAAC,GAAW;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,8BAEC;AAED;;;;;;;GAOG;AACH,SAAgB,UAAU,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AAFD,gCAEC;AAED;;;;;;;;GAQG;AACH,SAAgB,WAAW,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAFD,kCAEC","sourcesContent":["/**\n * Converts a Buffer into a a word array and optionally pads bits.\n * This function is needed because the default bech32 fromWords/toWords\n * functions do not allow us to optionally include/exclude padding.\n * The encoder needs to pad bits.  The decoder does not care about the\n * padding bits.\n *\n * @param data input data\n * @param inBits number of bits in, usually 5 or 8\n * @param outBits number of bits out, usualy 8 or 5\n * @param pad indicates if output should be padded\n * @return converted words\n */\nexport function convertWords(\n    data: number[] | Buffer,\n    inBits: number,\n    outBits: number,\n    pad: boolean,\n): number[] {\n    let value = 0;\n    let bits = 0;\n    const maxV = (1 << outBits) - 1;\n\n    const result: number[] = [];\n    for (let i = 0; i < data.length; ++i) {\n        value = (value << inBits) | data[i];\n        bits += inBits;\n\n        while (bits >= outBits) {\n            bits -= outBits;\n            result.push((value >> bits) & maxV);\n        }\n    }\n\n    if (pad && bits > 0) {\n        result.push((value << (outBits - bits)) & maxV);\n    }\n\n    return result;\n}\n\n/**\n * Calculates the number of words needed to store the number.\n * In bech32, each word is 5 bits (2^5 = 32). To properly\n * encode a number, we need to determine how many words\n * are necessary to encode the value.\n *\n * @param num integer value\n * @returns number of words\n */\nexport function sizeofNum(num: number): number {\n    return Math.ceil(Math.log2(num) / 5);\n}\n\n/**\n * Calculates the number of words needed to store\n * the supplied number of bits. In bech32, each words is 5 bits\n * (2^5 = 32).\n *\n * @param bits number of bits\n * @returns number of words\n */\nexport function sizeofBits(bits: number): number {\n    return Math.ceil(bits / 5);\n}\n\n/**\n * Calculates the number of words needeed to store\n * the supplied number of bytes. In bech32, each words is 5 bits\n * (2^5 = 32). We first convert the bytes to bits and then\n * convert to words.\n *\n * @param bytes\n * @returns number of words\n */\nexport function sizeofBytes(bytes: number): number {\n    return sizeofBits(bytes * 8);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"146829ffa82c42d2674a69fbc9d4a404d6cdb8d7"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/encode-pico.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/encode-pico.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"2":{"start":{"line":4,"column":19},"end":{"line":4,"column":40}},"3":{"start":{"line":19,"column":4},"end":{"line":20,"column":15}},"4":{"start":{"line":20,"column":8},"end":{"line":20,"column":15}},"5":{"start":{"line":21,"column":21},"end":{"line":21,"column":36}},"6":{"start":{"line":22,"column":26},"end":{"line":22,"column":57}},"7":{"start":{"line":23,"column":4},"end":{"line":23,"column":91}},"8":{"start":{"line":25,"column":0},"end":{"line":25,"column":32}},"9":{"start":{"line":38,"column":4},"end":{"line":41,"column":5}},"10":{"start":{"line":38,"column":17},"end":{"line":38,"column":35}},"11":{"start":{"line":39,"column":8},"end":{"line":40,"column":42}},"12":{"start":{"line":40,"column":12},"end":{"line":40,"column":42}},"13":{"start":{"line":42,"column":4},"end":{"line":42,"column":39}},"14":{"start":{"line":56,"column":4},"end":{"line":65,"column":18}},"15":{"start":{"line":57,"column":8},"end":{"line":57,"column":19}},"16":{"start":{"line":58,"column":9},"end":{"line":65,"column":18}},"17":{"start":{"line":59,"column":8},"end":{"line":59,"column":19}},"18":{"start":{"line":60,"column":9},"end":{"line":65,"column":18}},"19":{"start":{"line":61,"column":8},"end":{"line":61,"column":19}},"20":{"start":{"line":62,"column":9},"end":{"line":65,"column":18}},"21":{"start":{"line":63,"column":8},"end":{"line":63,"column":19}},"22":{"start":{"line":65,"column":8},"end":{"line":65,"column":18}}},"fnMap":{"0":{"name":"encodePico","decl":{"start":{"line":18,"column":9},"end":{"line":18,"column":19}},"loc":{"start":{"line":18,"column":26},"end":{"line":24,"column":1}},"line":18},"1":{"name":"_lsdIndex","decl":{"start":{"line":37,"column":9},"end":{"line":37,"column":18}},"loc":{"start":{"line":37,"column":28},"end":{"line":43,"column":1}},"line":37},"2":{"name":"_minimumHrpMultiplier","decl":{"start":{"line":55,"column":9},"end":{"line":55,"column":30}},"loc":{"start":{"line":55,"column":41},"end":{"line":66,"column":1}},"line":55}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":4},"end":{"line":20,"column":15}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":20,"column":15}},{"start":{"line":19,"column":4},"end":{"line":20,"column":15}}],"line":19},"1":{"loc":{"start":{"line":39,"column":8},"end":{"line":40,"column":42}},"type":"if","locations":[{"start":{"line":39,"column":8},"end":{"line":40,"column":42}},{"start":{"line":39,"column":8},"end":{"line":40,"column":42}}],"line":39},"2":{"loc":{"start":{"line":56,"column":4},"end":{"line":65,"column":18}},"type":"if","locations":[{"start":{"line":56,"column":4},"end":{"line":65,"column":18}},{"start":{"line":56,"column":4},"end":{"line":65,"column":18}}],"line":56},"3":{"loc":{"start":{"line":58,"column":9},"end":{"line":65,"column":18}},"type":"if","locations":[{"start":{"line":58,"column":9},"end":{"line":65,"column":18}},{"start":{"line":58,"column":9},"end":{"line":65,"column":18}}],"line":58},"4":{"loc":{"start":{"line":60,"column":9},"end":{"line":65,"column":18}},"type":"if","locations":[{"start":{"line":60,"column":9},"end":{"line":65,"column":18}},{"start":{"line":60,"column":9},"end":{"line":65,"column":18}}],"line":60},"5":{"loc":{"start":{"line":62,"column":9},"end":{"line":65,"column":18}},"type":"if","locations":[{"start":{"line":62,"column":9},"end":{"line":65,"column":18}},{"start":{"line":62,"column":9},"end":{"line":65,"column":18}}],"line":62}},"s":{"0":1,"1":1,"2":1,"3":31,"4":4,"5":27,"6":26,"7":26,"8":1,"9":27,"10":27,"11":228,"12":26,"13":1,"14":26,"15":3,"16":23,"17":4,"18":19,"19":7,"20":12,"21":9,"22":3},"f":{"0":31,"1":27,"2":26},"b":{"0":[4,27],"1":[26,202],"2":[3,23],"3":[4,19],"4":[7,12],"5":[9,3]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/encode-pico.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/encode-pico.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AAEvC;;;;;;;;;;;;GAYG;AACH,SAAgB,UAAU,CAAC,IAAY;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC;AAChF,CAAC;AALD,gCAKC;AAED,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,SAAS,SAAS,CAAC,OAAe;IAC9B,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;KAC/D;IACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAAC,QAAgB;IAC3C,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;SACxB,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;SAC7B,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;SAC7B,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,GAAG,CAAC;;QAC9B,OAAO,EAAE,CAAC;AACnB,CAAC","sourcesContent":["import { hrpToPico } from \"./hrp-pico\";\n\n/**\n * Encodes pico btc to human readable part amount. The hrp amount is defined\n * as the amount of bitcoin as a positive decimal integer with no leading 0s.\n * It is an optional number followed by an optional multiplier letter.\n *\n * The multipliers are:\n * m (milli)   0.001 bitcoin\n * u (micro)   0.000001 bitcoin\n * n (nano)    0.000000001 bitcoin\n * p (pico)    0.000000000001 bitcoin\n *\n * This means that 1msat is 10p and 1sat is 10n.\n */\nexport function encodePico(pico: string): string {\n    if (!pico) return;\n    const lsdIndex = _lsdIndex(pico);\n    const hrpMultiplier = _minimumHrpMultiplier(lsdIndex);\n    return (BigInt(pico) / hrpToPico(hrpMultiplier)).toString() + hrpMultiplier;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Finds the index of the least significant digit\n *\n * For example:\n *   if the value is 1002 pico, the first digit with a value is 0\n *   if the value is 1040 pico, the first digit with a value is 1\n *   if the value is 1000 pico, the first digit with a value is 3\n *\n * @return the index the least significant digit\n */\nfunction _lsdIndex(msatStr: string): number {\n    for (let i = msatStr.length - 1; i >= 0; i--) {\n        if (Number(msatStr[i]) !== 0) return msatStr.length - i - 1;\n    }\n    throw new Error(\"Cannot encode 0\");\n}\n\n/**\n * With the least significant digit we can determine the multiplier\n * that is required to miniimze the HRP.\n *\n * For instance\n *   if the value is 1002, we have a value of p\n *   if the value is 1000, we have a value of n\n *\n * @param lsdIndex\n * @return returns the string multiplier\n */\nfunction _minimumHrpMultiplier(lsdIndex: number): string {\n    if (lsdIndex < 3) return \"p\";\n    else if (lsdIndex < 6) return \"n\";\n    else if (lsdIndex < 9) return \"u\";\n    else if (lsdIndex < 12) return \"m\";\n    else return \"\";\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f6b132e9e1d776b793898da02dc6e053b6432249"},"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/encoder.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/encoder.ts","statementMap":{"0":{"start":{"line":4,"column":22},"end":{"line":10,"column":3}},"1":{"start":{"line":5,"column":4},"end":{"line":5,"column":33}},"2":{"start":{"line":5,"column":26},"end":{"line":5,"column":33}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":89}},"4":{"start":{"line":6,"column":71},"end":{"line":6,"column":83}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":33}},"6":{"start":{"line":8,"column":26},"end":{"line":8,"column":33}},"7":{"start":{"line":9,"column":4},"end":{"line":9,"column":17}},"8":{"start":{"line":11,"column":25},"end":{"line":15,"column":2}},"9":{"start":{"line":12,"column":4},"end":{"line":12,"column":72}},"10":{"start":{"line":14,"column":4},"end":{"line":14,"column":21}},"11":{"start":{"line":16,"column":19},"end":{"line":22,"column":1}},"12":{"start":{"line":17,"column":4},"end":{"line":17,"column":42}},"13":{"start":{"line":17,"column":31},"end":{"line":17,"column":42}},"14":{"start":{"line":18,"column":17},"end":{"line":18,"column":19}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":131}},"16":{"start":{"line":19,"column":21},"end":{"line":19,"column":131}},"17":{"start":{"line":19,"column":40},"end":{"line":19,"column":131}},"18":{"start":{"line":19,"column":99},"end":{"line":19,"column":131}},"19":{"start":{"line":20,"column":4},"end":{"line":20,"column":36}},"20":{"start":{"line":21,"column":4},"end":{"line":21,"column":18}},"21":{"start":{"line":23,"column":22},"end":{"line":25,"column":1}},"22":{"start":{"line":24,"column":4},"end":{"line":24,"column":62}},"23":{"start":{"line":26,"column":0},"end":{"line":26,"column":62}},"24":{"start":{"line":27,"column":0},"end":{"line":27,"column":24}},"25":{"start":{"line":28,"column":17},"end":{"line":28,"column":51}},"26":{"start":{"line":29,"column":19},"end":{"line":29,"column":57}},"27":{"start":{"line":30,"column":15},"end":{"line":30,"column":48}},"28":{"start":{"line":31,"column":22},"end":{"line":31,"column":46}},"29":{"start":{"line":32,"column":21},"end":{"line":32,"column":44}},"30":{"start":{"line":33,"column":22},"end":{"line":33,"column":46}},"31":{"start":{"line":42,"column":19},"end":{"line":42,"column":49}},"32":{"start":{"line":43,"column":26},"end":{"line":43,"column":107}},"33":{"start":{"line":44,"column":19},"end":{"line":44,"column":57}},"34":{"start":{"line":45,"column":4},"end":{"line":45,"column":45}},"35":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"36":{"start":{"line":48,"column":18},"end":{"line":48,"column":67}},"37":{"start":{"line":49,"column":20},"end":{"line":49,"column":84}},"38":{"start":{"line":51,"column":20},"end":{"line":51,"column":42}},"39":{"start":{"line":53,"column":36},"end":{"line":53,"column":70}},"40":{"start":{"line":54,"column":4},"end":{"line":54,"column":33}},"41":{"start":{"line":55,"column":4},"end":{"line":55,"column":36}},"42":{"start":{"line":58,"column":4},"end":{"line":58,"column":82}},"43":{"start":{"line":60,"column":0},"end":{"line":60,"column":24}},"44":{"start":{"line":62,"column":4},"end":{"line":159,"column":5}},"45":{"start":{"line":63,"column":8},"end":{"line":158,"column":9}},"46":{"start":{"line":68,"column":36},"end":{"line":68,"column":82}},"47":{"start":{"line":69,"column":20},"end":{"line":69,"column":54}},"48":{"start":{"line":70,"column":20},"end":{"line":70,"column":51}},"49":{"start":{"line":71,"column":20},"end":{"line":71,"column":51}},"50":{"start":{"line":73,"column":16},"end":{"line":73,"column":22}},"51":{"start":{"line":76,"column":33},"end":{"line":76,"column":79}},"52":{"start":{"line":77,"column":20},"end":{"line":77,"column":54}},"53":{"start":{"line":78,"column":36},"end":{"line":78,"column":63}},"54":{"start":{"line":79,"column":20},"end":{"line":79,"column":51}},"55":{"start":{"line":80,"column":35},"end":{"line":80,"column":57}},"56":{"start":{"line":81,"column":35},"end":{"line":81,"column":36}},"57":{"start":{"line":82,"column":20},"end":{"line":93,"column":21}},"58":{"start":{"line":83,"column":24},"end":{"line":83,"column":60}},"59":{"start":{"line":84,"column":24},"end":{"line":84,"column":44}},"60":{"start":{"line":85,"column":24},"end":{"line":85,"column":70}},"61":{"start":{"line":86,"column":24},"end":{"line":86,"column":43}},"62":{"start":{"line":87,"column":24},"end":{"line":87,"column":76}},"63":{"start":{"line":88,"column":24},"end":{"line":88,"column":43}},"64":{"start":{"line":89,"column":24},"end":{"line":89,"column":90}},"65":{"start":{"line":90,"column":24},"end":{"line":90,"column":43}},"66":{"start":{"line":91,"column":24},"end":{"line":91,"column":80}},"67":{"start":{"line":92,"column":24},"end":{"line":92,"column":43}},"68":{"start":{"line":94,"column":20},"end":{"line":94,"column":46}},"69":{"start":{"line":96,"column":16},"end":{"line":96,"column":22}},"70":{"start":{"line":99,"column":36},"end":{"line":99,"column":69}},"71":{"start":{"line":100,"column":20},"end":{"line":100,"column":54}},"72":{"start":{"line":101,"column":20},"end":{"line":101,"column":51}},"73":{"start":{"line":102,"column":20},"end":{"line":102,"column":61}},"74":{"start":{"line":104,"column":16},"end":{"line":104,"column":22}},"75":{"start":{"line":107,"column":36},"end":{"line":107,"column":94}},"76":{"start":{"line":108,"column":20},"end":{"line":108,"column":54}},"77":{"start":{"line":109,"column":20},"end":{"line":109,"column":51}},"78":{"start":{"line":110,"column":20},"end":{"line":110,"column":63}},"79":{"start":{"line":111,"column":20},"end":{"line":111,"column":59}},"80":{"start":{"line":113,"column":16},"end":{"line":113,"column":22}},"81":{"start":{"line":116,"column":32},"end":{"line":116,"column":64}},"82":{"start":{"line":117,"column":36},"end":{"line":117,"column":74}},"83":{"start":{"line":118,"column":20},"end":{"line":118,"column":54}},"84":{"start":{"line":119,"column":20},"end":{"line":119,"column":51}},"85":{"start":{"line":120,"column":20},"end":{"line":120,"column":43}},"86":{"start":{"line":122,"column":16},"end":{"line":122,"column":22}},"87":{"start":{"line":127,"column":36},"end":{"line":127,"column":82}},"88":{"start":{"line":128,"column":20},"end":{"line":128,"column":54}},"89":{"start":{"line":129,"column":20},"end":{"line":129,"column":51}},"90":{"start":{"line":130,"column":20},"end":{"line":130,"column":51}},"91":{"start":{"line":132,"column":16},"end":{"line":132,"column":22}},"92":{"start":{"line":135,"column":36},"end":{"line":135,"column":82}},"93":{"start":{"line":136,"column":20},"end":{"line":136,"column":54}},"94":{"start":{"line":137,"column":20},"end":{"line":137,"column":51}},"95":{"start":{"line":138,"column":20},"end":{"line":138,"column":51}},"96":{"start":{"line":140,"column":16},"end":{"line":140,"column":22}},"97":{"start":{"line":143,"column":36},"end":{"line":143,"column":69}},"98":{"start":{"line":144,"column":20},"end":{"line":144,"column":54}},"99":{"start":{"line":145,"column":20},"end":{"line":145,"column":51}},"100":{"start":{"line":146,"column":20},"end":{"line":146,"column":61}},"101":{"start":{"line":148,"column":16},"end":{"line":148,"column":22}},"102":{"start":{"line":150,"column":16},"end":{"line":152,"column":17}},"103":{"start":{"line":151,"column":20},"end":{"line":151,"column":68}},"104":{"start":{"line":153,"column":32},"end":{"line":153,"column":78}},"105":{"start":{"line":154,"column":16},"end":{"line":154,"column":50}},"106":{"start":{"line":155,"column":16},"end":{"line":155,"column":47}},"107":{"start":{"line":156,"column":16},"end":{"line":156,"column":47}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":74},"end":{"line":4,"column":75}},"loc":{"start":{"line":4,"column":96},"end":{"line":7,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":58},"end":{"line":6,"column":59}},"loc":{"start":{"line":6,"column":69},"end":{"line":6,"column":85}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":7,"column":6},"end":{"line":7,"column":7}},"loc":{"start":{"line":7,"column":28},"end":{"line":10,"column":1}},"line":7},"3":{"name":"(anonymous_3)","decl":{"start":{"line":11,"column":80},"end":{"line":11,"column":81}},"loc":{"start":{"line":11,"column":95},"end":{"line":13,"column":1}},"line":11},"4":{"name":"(anonymous_4)","decl":{"start":{"line":13,"column":5},"end":{"line":13,"column":6}},"loc":{"start":{"line":13,"column":20},"end":{"line":15,"column":1}},"line":13},"5":{"name":"(anonymous_5)","decl":{"start":{"line":16,"column":50},"end":{"line":16,"column":51}},"loc":{"start":{"line":16,"column":65},"end":{"line":22,"column":1}},"line":16},"6":{"name":"(anonymous_6)","decl":{"start":{"line":23,"column":56},"end":{"line":23,"column":57}},"loc":{"start":{"line":23,"column":71},"end":{"line":25,"column":1}},"line":23},"7":{"name":"encode","decl":{"start":{"line":41,"column":9},"end":{"line":41,"column":15}},"loc":{"start":{"line":41,"column":34},"end":{"line":59,"column":1}},"line":41},"8":{"name":"_encodeData","decl":{"start":{"line":61,"column":9},"end":{"line":61,"column":20}},"loc":{"start":{"line":61,"column":38},"end":{"line":160,"column":1}},"line":61}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":22},"end":{"line":10,"column":3}},"type":"binary-expr","locations":[{"start":{"line":4,"column":23},"end":{"line":4,"column":27}},{"start":{"line":4,"column":31},"end":{"line":4,"column":51}},{"start":{"line":4,"column":57},"end":{"line":10,"column":2}}],"line":4},"1":{"loc":{"start":{"line":4,"column":57},"end":{"line":10,"column":2}},"type":"cond-expr","locations":[{"start":{"line":4,"column":74},"end":{"line":7,"column":1}},{"start":{"line":7,"column":6},"end":{"line":10,"column":1}}],"line":4},"2":{"loc":{"start":{"line":5,"column":4},"end":{"line":5,"column":33}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":5,"column":33}},{"start":{"line":5,"column":4},"end":{"line":5,"column":33}}],"line":5},"3":{"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":33}},"type":"if","locations":[{"start":{"line":8,"column":4},"end":{"line":8,"column":33}},{"start":{"line":8,"column":4},"end":{"line":8,"column":33}}],"line":8},"4":{"loc":{"start":{"line":11,"column":25},"end":{"line":15,"column":2}},"type":"binary-expr","locations":[{"start":{"line":11,"column":26},"end":{"line":11,"column":30}},{"start":{"line":11,"column":34},"end":{"line":11,"column":57}},{"start":{"line":11,"column":63},"end":{"line":15,"column":1}}],"line":11},"5":{"loc":{"start":{"line":11,"column":63},"end":{"line":15,"column":1}},"type":"cond-expr","locations":[{"start":{"line":11,"column":80},"end":{"line":13,"column":1}},{"start":{"line":13,"column":5},"end":{"line":15,"column":1}}],"line":11},"6":{"loc":{"start":{"line":16,"column":19},"end":{"line":22,"column":1}},"type":"binary-expr","locations":[{"start":{"line":16,"column":20},"end":{"line":16,"column":24}},{"start":{"line":16,"column":28},"end":{"line":16,"column":45}},{"start":{"line":16,"column":50},"end":{"line":22,"column":1}}],"line":16},"7":{"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":42}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":17,"column":42}},{"start":{"line":17,"column":4},"end":{"line":17,"column":42}}],"line":17},"8":{"loc":{"start":{"line":17,"column":8},"end":{"line":17,"column":29}},"type":"binary-expr","locations":[{"start":{"line":17,"column":8},"end":{"line":17,"column":11}},{"start":{"line":17,"column":15},"end":{"line":17,"column":29}}],"line":17},"9":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":131}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":131}},{"start":{"line":19,"column":4},"end":{"line":19,"column":131}}],"line":19},"10":{"loc":{"start":{"line":19,"column":40},"end":{"line":19,"column":131}},"type":"if","locations":[{"start":{"line":19,"column":40},"end":{"line":19,"column":131}},{"start":{"line":19,"column":40},"end":{"line":19,"column":131}}],"line":19},"11":{"loc":{"start":{"line":19,"column":44},"end":{"line":19,"column":97}},"type":"binary-expr","locations":[{"start":{"line":19,"column":44},"end":{"line":19,"column":59}},{"start":{"line":19,"column":63},"end":{"line":19,"column":97}}],"line":19},"12":{"loc":{"start":{"line":23,"column":22},"end":{"line":25,"column":1}},"type":"binary-expr","locations":[{"start":{"line":23,"column":23},"end":{"line":23,"column":27}},{"start":{"line":23,"column":31},"end":{"line":23,"column":51}},{"start":{"line":23,"column":56},"end":{"line":25,"column":1}}],"line":23},"13":{"loc":{"start":{"line":24,"column":11},"end":{"line":24,"column":61}},"type":"cond-expr","locations":[{"start":{"line":24,"column":37},"end":{"line":24,"column":40}},{"start":{"line":24,"column":43},"end":{"line":24,"column":61}}],"line":24},"14":{"loc":{"start":{"line":24,"column":12},"end":{"line":24,"column":33}},"type":"binary-expr","locations":[{"start":{"line":24,"column":12},"end":{"line":24,"column":15}},{"start":{"line":24,"column":19},"end":{"line":24,"column":33}}],"line":24},"15":{"loc":{"start":{"line":43,"column":26},"end":{"line":43,"column":107}},"type":"binary-expr","locations":[{"start":{"line":43,"column":26},"end":{"line":43,"column":101}},{"start":{"line":43,"column":105},"end":{"line":43,"column":107}}],"line":43},"16":{"loc":{"start":{"line":43,"column":51},"end":{"line":43,"column":100}},"type":"cond-expr","locations":[{"start":{"line":43,"column":68},"end":{"line":43,"column":93}},{"start":{"line":43,"column":96},"end":{"line":43,"column":100}}],"line":43},"17":{"loc":{"start":{"line":63,"column":8},"end":{"line":158,"column":9}},"type":"switch","locations":[{"start":{"line":64,"column":12},"end":{"line":73,"column":22}},{"start":{"line":74,"column":12},"end":{"line":96,"column":22}},{"start":{"line":97,"column":12},"end":{"line":104,"column":22}},{"start":{"line":105,"column":12},"end":{"line":113,"column":22}},{"start":{"line":114,"column":12},"end":{"line":122,"column":22}},{"start":{"line":123,"column":12},"end":{"line":132,"column":22}},{"start":{"line":133,"column":12},"end":{"line":140,"column":22}},{"start":{"line":141,"column":12},"end":{"line":148,"column":22}},{"start":{"line":149,"column":12},"end":{"line":157,"column":13}}],"line":63},"18":{"loc":{"start":{"line":150,"column":16},"end":{"line":152,"column":17}},"type":"if","locations":[{"start":{"line":150,"column":16},"end":{"line":152,"column":17}},{"start":{"line":150,"column":16},"end":{"line":152,"column":17}}],"line":150}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":1,"9":0,"10":0,"11":1,"12":2,"13":2,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":12,"32":12,"33":12,"34":12,"35":12,"36":12,"37":12,"38":12,"39":12,"40":12,"41":12,"42":12,"43":1,"44":12,"45":35,"46":12,"47":12,"48":12,"49":12,"50":12,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"64":2,"65":2,"66":2,"67":2,"68":1,"69":1,"70":2,"71":2,"72":2,"73":2,"74":2,"75":5,"76":5,"77":5,"78":5,"79":5,"80":5,"81":6,"82":6,"83":6,"84":6,"85":6,"86":6,"87":1,"88":1,"89":1,"90":1,"91":1,"92":6,"93":6,"94":6,"95":6,"96":6,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":0,"104":1,"105":1,"106":1,"107":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":2,"6":1,"7":12,"8":12},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[1,1,1],"5":[1,0],"6":[1,1,1],"7":[2,0],"8":[2,2],"9":[0,0],"10":[0,0],"11":[0,0],"12":[1,1,1],"13":[0,1],"14":[1,1],"15":[12,4],"16":[8,4],"17":[12,1,2,5,6,1,6,1,1],"18":[0,1]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/encoder.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/invoice/lib/encoder.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\nimport bech32 from \"bech32\";\nimport * as bech32Util from \"./bech32-util\";\nimport * as crypto from \"./crypto\";\nimport { encodePico } from \"./encode-pico\";\nimport { FIELD_TYPE } from \"./field-type\";\nimport { Invoice } from \"./invoice\";\nimport { WordCursor } from \"./word-cursor\";\n\n/**\n * Encodes an invoice object into the bech32 invoice and digitally\n * signs the invoice using ECDSA.\n * @param invoice\n * @param privKey 33-byte secp256k1 private key\n * @returns {string} bech32 encoded invoice\n */\nexport function encode(invoice: Invoice, privKey: Buffer) {\n    const writer = new WordCursor();\n\n    const encodedAmount = encodePico(invoice._value ? invoice._value.toString() : null) || \"\";\n    const prefix = `ln${invoice.network}${encodedAmount}`;\n\n    writer.writeUIntBE(invoice.timestamp, 7);\n\n    _encodeData(invoice, writer);\n\n    // generate sig data\n    const bytes = bech32Util.convertWords(writer.words, 5, 8, true);\n    const sigData = Buffer.concat([Buffer.from(prefix, \"utf8\"), Buffer.from(bytes)]);\n\n    // generate sig hash\n    const sigHash = crypto.sha256(sigData);\n\n    // sign\n    const { signature, recovery } = crypto.ecdsaSign(sigHash, privKey);\n\n    writer.writeBytes(signature);\n    writer.writeUIntBE(recovery, 1);\n\n    // finally encode the invoice in bech32 and allow\n    // an invoice to be any length\n    return bech32.encode(prefix, writer.words, Number.MAX_SAFE_INTEGER);\n}\n\nfunction _encodeData(invoice: Invoice, writer: WordCursor) {\n    for (const datum of invoice.fields) {\n        switch (datum.type) {\n            case FIELD_TYPE.PAYMENT_HASH:\n                {\n                    // should be 52, but allow for creation of variable length\n                    // values so we can construct non-valid invoices for testing\n                    const dataLen = bech32Util.sizeofBytes(datum.value.byteLength);\n                    writer.writeUIntBE(datum.type, 1);\n                    writer.writeUIntBE(dataLen, 2);\n                    writer.writeBytes(datum.value);\n                }\n                break;\n            case FIELD_TYPE.ROUTE:\n                {\n                    const bits = datum.value.length * (264 + 64 + 32 + 32 + 16);\n                    writer.writeUIntBE(datum.type, 1);\n                    const dataLen = bech32Util.sizeofBits(bits);\n                    writer.writeUIntBE(dataLen, 2);\n                    const buffer = Buffer.alloc(bits / 8);\n                    let position = 0;\n                    for (const route of datum.value) {\n                        route.pubkey.copy(buffer, position);\n                        position += 264 / 8;\n                        route.short_channel_id.copy(buffer, position);\n                        position += 64 / 8;\n                        buffer.writeUInt32BE(route.fee_base_msat, position);\n                        position += 32 / 8;\n                        buffer.writeUInt32BE(route.fee_proportional_millionths, position);\n                        position += 32 / 8;\n                        buffer.writeUInt16BE(route.cltv_expiry_delta, position);\n                        position += 16 / 8;\n                    }\n                    writer.writeBytes(buffer);\n                }\n                break;\n            case FIELD_TYPE.EXPIRY:\n                {\n                    const dataLen = bech32Util.sizeofNum(datum.value);\n                    writer.writeUIntBE(datum.type, 1);\n                    writer.writeUIntBE(dataLen, 2);\n                    writer.writeUIntBE(datum.value, dataLen);\n                }\n                break;\n            case FIELD_TYPE.FALLBACK_ADDRESS:\n                {\n                    const dataLen = bech32Util.sizeofBytes(datum.value.address.byteLength) + 1;\n                    writer.writeUIntBE(datum.type, 1);\n                    writer.writeUIntBE(dataLen, 2);\n                    writer.writeUIntBE(datum.value.version, 1);\n                    writer.writeBytes(datum.value.address);\n                }\n                break;\n            case FIELD_TYPE.SHORT_DESC:\n                {\n                    const buf = Buffer.from(datum.value, \"utf8\");\n                    const dataLen = bech32Util.sizeofBytes(buf.byteLength);\n                    writer.writeUIntBE(datum.type, 1);\n                    writer.writeUIntBE(dataLen, 2);\n                    writer.writeBytes(buf);\n                }\n                break;\n            case FIELD_TYPE.PAYEE_NODE:\n                {\n                    // should be 53, but allow for creation of variable length\n                    // values so we can construct non-valid invoices for testing\n                    const dataLen = bech32Util.sizeofBytes(datum.value.byteLength);\n                    writer.writeUIntBE(datum.type, 1);\n                    writer.writeUIntBE(dataLen, 2);\n                    writer.writeBytes(datum.value);\n                }\n                break;\n            case FIELD_TYPE.HASH_DESC:\n                {\n                    const dataLen = bech32Util.sizeofBytes(datum.value.byteLength);\n                    writer.writeUIntBE(datum.type, 1);\n                    writer.writeUIntBE(dataLen, 2);\n                    writer.writeBytes(datum.value);\n                }\n                break;\n            case FIELD_TYPE.MIN_FINAL_CLTV_EXPIRY:\n                {\n                    const dataLen = bech32Util.sizeofNum(datum.value);\n                    writer.writeUIntBE(datum.type, 1);\n                    writer.writeUIntBE(dataLen, 2);\n                    writer.writeUIntBE(datum.value, dataLen);\n                }\n                break;\n            default: {\n                if (!(datum.value instanceof Buffer)) {\n                    throw new Error(\"Cannot process unknown field\");\n                }\n                const dataLen = bech32Util.sizeofBytes(datum.value.byteLength);\n                writer.writeUIntBE(datum.type, 1);\n                writer.writeUIntBE(dataLen, 2);\n                writer.writeBytes(datum.value);\n            }\n        }\n    }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"66a3c8a45baa7b4012de70eb9426ccb548eda97c"}}