@opcat-labs/opcat 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/.cjs2esm.json +18 -0
  2. package/.mocharc.yaml +1 -1
  3. package/CHANGELOG.md +13 -0
  4. package/README.md +6 -0
  5. package/{lib/address.js → cjs/address.cjs} +77 -72
  6. package/cjs/block/block.cjs +332 -0
  7. package/{lib/block/blockheader.js → cjs/block/blockheader.cjs} +8 -7
  8. package/cjs/block/index.cjs +2 -0
  9. package/{lib/block/merkleblock.js → cjs/block/merkleblock.cjs} +23 -15
  10. package/cjs/bn.cjs +3411 -0
  11. package/{lib/crypto/bn.js → cjs/crypto/bn.cjs} +3 -3
  12. package/{lib/crypto/ecdsa.js → cjs/crypto/ecdsa.cjs} +150 -14
  13. package/{lib/crypto/hash.node.js → cjs/crypto/hash.cjs} +13 -2
  14. package/cjs/crypto/index.cjs +16 -0
  15. package/{lib/crypto/point.js → cjs/crypto/point.cjs} +11 -4
  16. package/cjs/crypto/random.cjs +18 -0
  17. package/{lib/crypto/signature.js → cjs/crypto/signature.cjs} +158 -8
  18. package/{lib/encoding/base58.js → cjs/encoding/base58.cjs} +58 -2
  19. package/cjs/encoding/base58check.cjs +192 -0
  20. package/cjs/encoding/bufferreader.cjs +333 -0
  21. package/cjs/encoding/bufferwriter.cjs +244 -0
  22. package/{lib/encoding/decode-asm.js → cjs/encoding/decode-asm.cjs} +4 -4
  23. package/{lib/encoding/decode-hex.js → cjs/encoding/decode-hex.cjs} +1 -1
  24. package/cjs/encoding/index.cjs +14 -0
  25. package/cjs/encoding/varint.cjs +116 -0
  26. package/{lib/errors/index.js → cjs/errors/index.cjs} +9 -9
  27. package/{lib/errors/spec.js → cjs/errors/spec.cjs} +2 -2
  28. package/cjs/hash-cache.cjs +98 -0
  29. package/{lib/hdprivatekey.js → cjs/hdprivatekey.cjs} +232 -140
  30. package/{lib/hdpublickey.js → cjs/hdpublickey.cjs} +120 -93
  31. package/cjs/index.cjs +94 -0
  32. package/cjs/interpreter/index.cjs +2 -0
  33. package/cjs/interpreter/interpreter.cjs +1988 -0
  34. package/{lib/script/stack.js → cjs/interpreter/stack.cjs} +9 -2
  35. package/{lib/message/message.js → cjs/message/message.cjs} +62 -25
  36. package/cjs/mnemonic/index.cjs +3 -0
  37. package/{lib/mnemonic/mnemonic.js → cjs/mnemonic/mnemonic.cjs} +44 -13
  38. package/{lib/mnemonic/pbkdf2.node.js → cjs/mnemonic/pbkdf2.cjs} +9 -2
  39. package/cjs/mnemonic/words/index.cjs +66 -0
  40. package/cjs/network.cjs +13 -0
  41. package/cjs/networks.cjs +321 -0
  42. package/{lib/opcode.js → cjs/opcode.cjs} +69 -5
  43. package/cjs/privatekey.cjs +422 -0
  44. package/{lib/publickey.js → cjs/publickey.cjs} +14 -16
  45. package/cjs/script/index.cjs +2 -0
  46. package/{lib/script/script.js → cjs/script/script.cjs} +322 -67
  47. package/cjs/transaction/index.cjs +5 -0
  48. package/cjs/transaction/input/index.cjs +34 -0
  49. package/cjs/transaction/input/input.cjs +396 -0
  50. package/{lib/transaction/input/multisig.js → cjs/transaction/input/multisig.cjs} +112 -18
  51. package/{lib/transaction/input/publickey.js → cjs/transaction/input/publickey.cjs} +29 -19
  52. package/{lib/transaction/input/publickeyhash.js → cjs/transaction/input/publickeyhash.cjs} +25 -17
  53. package/{lib/transaction/output.js → cjs/transaction/output.cjs} +100 -15
  54. package/cjs/transaction/sighash.cjs +187 -0
  55. package/{lib/transaction/signature.js → cjs/transaction/signature.cjs} +30 -6
  56. package/cjs/transaction/transaction.cjs +2000 -0
  57. package/{lib/transaction/unspentoutput.js → cjs/transaction/unspentoutput.cjs} +5 -5
  58. package/cjs/util/derivation.cjs +53 -0
  59. package/cjs/util/index.cjs +11 -0
  60. package/cjs/util/js.cjs +95 -0
  61. package/{lib/util/preconditions.js → cjs/util/preconditions.cjs} +2 -2
  62. package/esm/address.js +483 -0
  63. package/{lib → esm}/block/block.js +82 -27
  64. package/esm/block/blockheader.js +296 -0
  65. package/esm/block/index.js +2 -0
  66. package/esm/block/merkleblock.js +331 -0
  67. package/esm/bn.js +3411 -0
  68. package/esm/crypto/bn.js +278 -0
  69. package/esm/crypto/ecdsa.js +475 -0
  70. package/{lib/crypto/hash.browser.js → esm/crypto/hash.js} +18 -7
  71. package/esm/crypto/index.js +16 -0
  72. package/esm/crypto/point.js +228 -0
  73. package/esm/crypto/random.js +18 -0
  74. package/esm/crypto/signature.js +475 -0
  75. package/esm/encoding/base58.js +167 -0
  76. package/esm/encoding/base58check.js +192 -0
  77. package/esm/encoding/bufferreader.js +333 -0
  78. package/esm/encoding/bufferwriter.js +243 -0
  79. package/esm/encoding/decode-asm.js +24 -0
  80. package/esm/encoding/decode-hex.js +32 -0
  81. package/esm/encoding/decode-script-chunks.js +43 -0
  82. package/esm/encoding/encode-hex.js +284 -0
  83. package/esm/encoding/index.js +14 -0
  84. package/esm/encoding/is-hex.js +7 -0
  85. package/esm/encoding/varint.js +116 -0
  86. package/esm/errors/index.js +54 -0
  87. package/esm/errors/spec.js +314 -0
  88. package/esm/hash-cache.js +98 -0
  89. package/esm/hdprivatekey.js +768 -0
  90. package/esm/hdpublickey.js +549 -0
  91. package/esm/index.js +66 -0
  92. package/esm/interpreter/index.js +2 -0
  93. package/{lib/script → esm/interpreter}/interpreter.js +219 -66
  94. package/esm/interpreter/stack.js +116 -0
  95. package/esm/message/message.js +228 -0
  96. package/esm/mnemonic/index.js +3 -0
  97. package/esm/mnemonic/mnemonic.js +332 -0
  98. package/{lib/mnemonic/pbkdf2.browser.js → esm/mnemonic/pbkdf2.js} +13 -6
  99. package/esm/mnemonic/words/chinese.js +2054 -0
  100. package/esm/mnemonic/words/english.js +2054 -0
  101. package/esm/mnemonic/words/french.js +2054 -0
  102. package/esm/mnemonic/words/index.js +66 -0
  103. package/esm/mnemonic/words/italian.js +2054 -0
  104. package/esm/mnemonic/words/japanese.js +2054 -0
  105. package/esm/mnemonic/words/spanish.js +2054 -0
  106. package/esm/network.js +13 -0
  107. package/{lib → esm}/networks.js +61 -120
  108. package/esm/opcode.js +319 -0
  109. package/{lib → esm}/privatekey.js +76 -28
  110. package/esm/publickey.js +384 -0
  111. package/esm/script/index.js +2 -0
  112. package/esm/script/script.js +1329 -0
  113. package/esm/script/write-i32-le.js +17 -0
  114. package/esm/script/write-push-data.js +35 -0
  115. package/esm/script/write-u16-le.js +12 -0
  116. package/esm/script/write-u32-le.js +16 -0
  117. package/esm/script/write-u64-le.js +24 -0
  118. package/esm/script/write-u8-le.js +8 -0
  119. package/esm/script/write-varint.js +46 -0
  120. package/esm/transaction/index.js +5 -0
  121. package/esm/transaction/input/index.js +33 -0
  122. package/{lib → esm}/transaction/input/input.js +132 -90
  123. package/esm/transaction/input/multisig.js +335 -0
  124. package/esm/transaction/input/publickey.js +108 -0
  125. package/esm/transaction/input/publickeyhash.js +124 -0
  126. package/esm/transaction/output.js +316 -0
  127. package/{lib → esm}/transaction/sighash.js +42 -22
  128. package/esm/transaction/signature.js +120 -0
  129. package/{lib → esm}/transaction/transaction.js +522 -163
  130. package/esm/transaction/unspentoutput.js +112 -0
  131. package/esm/util/_.js +47 -0
  132. package/esm/util/derivation.js +53 -0
  133. package/esm/util/index.js +12 -0
  134. package/esm/util/js.js +95 -0
  135. package/esm/util/preconditions.js +33 -0
  136. package/fixup.cjs +17 -0
  137. package/package.json +40 -26
  138. package/test/{address.js → address.cjs} +14 -43
  139. package/test/block/{block.js → block.cjs} +3 -5
  140. package/test/block/{blockheader.js → blockheader.cjs} +2 -2
  141. package/test/block/{merklebloack.js → merklebloack.cjs} +2 -2
  142. package/test/crypto/{ecdsa.js → ecdsa.cjs} +9 -9
  143. package/test/crypto/{hash.browser.js → hash.browser.cjs} +2 -1
  144. package/test/crypto/{signature.js → signature.cjs} +2 -2
  145. package/test/data/bitcoind/script_tests.json +5 -5
  146. package/test/{hashCache.js → hashCache.cjs} +2 -1
  147. package/test/{hdkeys.js → hdkeys.cjs} +4 -2
  148. package/test/{hdprivatekey.js → hdprivatekey.cjs} +7 -6
  149. package/test/{hdpublickey.js → hdpublickey.cjs} +2 -7
  150. package/test/mnemonic/{pbkdf2.test.js → pbkdf2.test.cjs} +2 -2
  151. package/test/{networks.js → networks.cjs} +12 -31
  152. package/test/{publickey.js → publickey.cjs} +2 -2
  153. package/test/script/{interpreter.js → interpreter.cjs} +5 -5
  154. package/test/script/{script.js → script.cjs} +8 -2
  155. package/test/transaction/{deserialize.js → deserialize.cjs} +2 -2
  156. package/test/transaction/input/{input.js → input.cjs} +1 -1
  157. package/test/transaction/input/{multisig.js → multisig.cjs} +2 -1
  158. package/test/transaction/input/{publickeyhash.js → publickeyhash.cjs} +1 -1
  159. package/test/transaction/{sighash.js → sighash.cjs} +1 -1
  160. package/test/transaction/{transaction.js → transaction.cjs} +2 -2
  161. package/tsconfig.json +13 -0
  162. package/types/address.d.cts +252 -0
  163. package/types/block/block.d.cts +139 -0
  164. package/types/block/blockheader.d.cts +125 -0
  165. package/types/block/index.d.cts +2 -0
  166. package/types/block/merkleblock.d.cts +95 -0
  167. package/types/bn.d.cts +202 -0
  168. package/types/crypto/bn.d.cts +2 -0
  169. package/types/crypto/ecdsa.d.cts +187 -0
  170. package/types/crypto/hash.d.cts +118 -0
  171. package/types/crypto/index.d.cts +7 -0
  172. package/types/crypto/point.d.cts +134 -0
  173. package/types/crypto/random.d.cts +13 -0
  174. package/types/crypto/signature.d.cts +160 -0
  175. package/types/encoding/base58.d.cts +106 -0
  176. package/types/encoding/base58check.d.cts +107 -0
  177. package/types/encoding/bufferreader.d.cts +164 -0
  178. package/types/encoding/bufferwriter.d.cts +126 -0
  179. package/types/encoding/decode-asm.d.cts +2 -0
  180. package/types/encoding/decode-hex.d.cts +2 -0
  181. package/types/encoding/decode-script-chunks.d.cts +14 -0
  182. package/types/encoding/encode-hex.d.cts +2 -0
  183. package/types/encoding/index.d.cts +6 -0
  184. package/types/encoding/is-hex.d.cts +2 -0
  185. package/types/encoding/varint.d.cts +66 -0
  186. package/types/errors/index.d.cts +4 -0
  187. package/types/errors/spec.d.cts +22 -0
  188. package/types/hash-cache.d.cts +65 -0
  189. package/types/hdprivatekey.d.cts +281 -0
  190. package/types/hdpublickey.d.cts +240 -0
  191. package/types/index.d.cts +26 -0
  192. package/types/interpreter/index.d.cts +2 -0
  193. package/types/interpreter/interpreter.d.cts +228 -0
  194. package/types/interpreter/stack.d.cts +35 -0
  195. package/types/message/message.d.cts +110 -0
  196. package/types/mnemonic/index.d.cts +2 -0
  197. package/types/mnemonic/mnemonic.d.cts +171 -0
  198. package/types/mnemonic/pbkdf2.d.cts +14 -0
  199. package/types/mnemonic/words/chinese.d.cts +2 -0
  200. package/types/mnemonic/words/english.d.cts +2 -0
  201. package/types/mnemonic/words/french.d.cts +2 -0
  202. package/types/mnemonic/words/index.d.cts +22 -0
  203. package/types/mnemonic/words/italian.d.cts +2 -0
  204. package/types/mnemonic/words/japanese.d.cts +2 -0
  205. package/types/mnemonic/words/spanish.d.cts +2 -0
  206. package/types/network.d.cts +11 -0
  207. package/types/networks.d.cts +76 -0
  208. package/types/opcode.d.cts +93 -0
  209. package/types/privatekey.d.cts +169 -0
  210. package/types/publickey.d.cts +202 -0
  211. package/types/script/index.d.cts +2 -0
  212. package/types/script/script.d.cts +449 -0
  213. package/types/script/write-i32-le.d.cts +2 -0
  214. package/types/script/write-push-data.d.cts +2 -0
  215. package/types/script/write-u16-le.d.cts +2 -0
  216. package/types/script/write-u32-le.d.cts +2 -0
  217. package/types/script/write-u64-le.d.cts +2 -0
  218. package/types/script/write-u8-le.d.cts +2 -0
  219. package/types/script/write-varint.d.cts +2 -0
  220. package/types/transaction/index.d.cts +2 -0
  221. package/types/transaction/input/index.d.cts +2 -0
  222. package/types/transaction/input/input.d.cts +178 -0
  223. package/types/transaction/input/multisig.d.cts +127 -0
  224. package/types/transaction/input/publickey.d.cts +44 -0
  225. package/types/transaction/input/publickeyhash.d.cts +45 -0
  226. package/types/transaction/output.d.cts +118 -0
  227. package/types/transaction/sighash.d.cts +61 -0
  228. package/types/transaction/signature.d.cts +43 -0
  229. package/types/transaction/transaction.d.cts +716 -0
  230. package/types/transaction/unspentoutput.d.cts +83 -0
  231. package/types/util/_.d.cts +26 -0
  232. package/types/util/derivation.d.cts +21 -0
  233. package/types/util/index.d.cts +5 -0
  234. package/types/util/js.d.cts +50 -0
  235. package/types/util/preconditions.d.cts +3 -0
  236. package/index.d.ts +0 -1541
  237. package/index.js +0 -74
  238. package/lib/block/index.js +0 -4
  239. package/lib/bn.js +0 -3423
  240. package/lib/crypto/hash.js +0 -2
  241. package/lib/crypto/random.browser.js +0 -28
  242. package/lib/crypto/random.js +0 -2
  243. package/lib/crypto/random.node.js +0 -11
  244. package/lib/encoding/base58check.js +0 -121
  245. package/lib/encoding/bufferreader.js +0 -212
  246. package/lib/encoding/bufferwriter.js +0 -140
  247. package/lib/encoding/varint.js +0 -75
  248. package/lib/hash-cache.js +0 -50
  249. package/lib/mnemonic/pbkdf2.js +0 -2
  250. package/lib/mnemonic/words/index.js +0 -8
  251. package/lib/script/index.js +0 -5
  252. package/lib/transaction/index.js +0 -7
  253. package/lib/transaction/input/index.js +0 -5
  254. package/lib/util/js.js +0 -90
  255. /package/{lib/encoding/decode-script-chunks.js → cjs/encoding/decode-script-chunks.cjs} +0 -0
  256. /package/{lib/encoding/encode-hex.js → cjs/encoding/encode-hex.cjs} +0 -0
  257. /package/{lib/encoding/is-hex.js → cjs/encoding/is-hex.cjs} +0 -0
  258. /package/{lib/mnemonic/words/chinese.js → cjs/mnemonic/words/chinese.cjs} +0 -0
  259. /package/{lib/mnemonic/words/english.js → cjs/mnemonic/words/english.cjs} +0 -0
  260. /package/{lib/mnemonic/words/french.js → cjs/mnemonic/words/french.cjs} +0 -0
  261. /package/{lib/mnemonic/words/italian.js → cjs/mnemonic/words/italian.cjs} +0 -0
  262. /package/{lib/mnemonic/words/japanese.js → cjs/mnemonic/words/japanese.cjs} +0 -0
  263. /package/{lib/mnemonic/words/spanish.js → cjs/mnemonic/words/spanish.cjs} +0 -0
  264. /package/{lib/script/write-i32-le.js → cjs/script/write-i32-le.cjs} +0 -0
  265. /package/{lib/script/write-push-data.js → cjs/script/write-push-data.cjs} +0 -0
  266. /package/{lib/script/write-u16-le.js → cjs/script/write-u16-le.cjs} +0 -0
  267. /package/{lib/script/write-u32-le.js → cjs/script/write-u32-le.cjs} +0 -0
  268. /package/{lib/script/write-u64-le.js → cjs/script/write-u64-le.cjs} +0 -0
  269. /package/{lib/script/write-u8-le.js → cjs/script/write-u8-le.cjs} +0 -0
  270. /package/{lib/script/write-varint.js → cjs/script/write-varint.cjs} +0 -0
  271. /package/{lib/util/_.js → cjs/util/_.cjs} +0 -0
  272. /package/test/crypto/{bn.js → bn.cjs} +0 -0
  273. /package/test/crypto/{hash.js → hash.cjs} +0 -0
  274. /package/test/crypto/{point.js → point.cjs} +0 -0
  275. /package/test/crypto/{random.js → random.cjs} +0 -0
  276. /package/test/data/{blk86756-testnet.js → blk86756-testnet.cjs} +0 -0
  277. /package/test/data/{merkleblocks.js → merkleblocks.cjs} +0 -0
  278. /package/test/encoding/{base58.js → base58.cjs} +0 -0
  279. /package/test/encoding/{base58check.js → base58check.cjs} +0 -0
  280. /package/test/encoding/{bufferreader.js → bufferreader.cjs} +0 -0
  281. /package/test/encoding/{bufferwriter.js → bufferwriter.cjs} +0 -0
  282. /package/test/encoding/{varint.js → varint.cjs} +0 -0
  283. /package/test/{index.js → index.cjs} +0 -0
  284. /package/test/message/{message.js → message.cjs} +0 -0
  285. /package/test/mnemonic/{mnemonic.js → mnemonic.cjs} +0 -0
  286. /package/test/{opcode.js → opcode.cjs} +0 -0
  287. /package/test/{privatekey.js → privatekey.cjs} +0 -0
  288. /package/test/transaction/input/{publickey.js → publickey.cjs} +0 -0
  289. /package/test/transaction/{output.js → output.cjs} +0 -0
  290. /package/test/transaction/{signature.js → signature.cjs} +0 -0
  291. /package/test/transaction/{unspentoutput.js → unspentoutput.cjs} +0 -0
  292. /package/test/util/{js.js → js.cjs} +0 -0
  293. /package/test/util/{preconditions.js → preconditions.cjs} +0 -0
@@ -0,0 +1,76 @@
1
+ export = Networks;
2
+ /**
3
+ * A tool class for managing all supported networks
4
+ * @constructor
5
+ */
6
+ declare function Networks(): void;
7
+ declare namespace Networks {
8
+ /**
9
+ * @function
10
+ * @member Networks#get
11
+ * Retrieves the network associated with a magic number or string.
12
+ * @param {string|number|Network} arg
13
+ * @param {string|Array} keys - if set, only check if the magic number associated with this name matches
14
+ * @return Network
15
+ */
16
+ export function get(arg: string | number | Network, keys: string | any[]): any;
17
+ /**
18
+ * @function
19
+ * @member Networks#add
20
+ * Will add a custom Network
21
+ * @param {Object} data
22
+ * @param {string} data.name - The name of the network
23
+ * @param {string} data.alias - The aliased name of the network
24
+ * @param {Number} data.pubkeyhash - The publickey hash cashAddrPrefix
25
+ * @param {Number} data.privatekey - The privatekey cashAddrPrefix
26
+ * @param {Number} data.scripthash - The scripthash cashAddrPrefix
27
+ * @param {Number} data.xpubkey - The extended public key magic
28
+ * @param {Number} data.xprivkey - The extended private key magic
29
+ * @param {Number} data.networkMagic - The network magic number
30
+ * @param {Number} data.port - The network port
31
+ * @param {Array} data.dnsSeeds - An array of dns seeds
32
+ * @return Network
33
+ */
34
+ export function add(data: {
35
+ name: string;
36
+ alias: string;
37
+ pubkeyhash: number;
38
+ privatekey: number;
39
+ scripthash: number;
40
+ xpubkey: number;
41
+ xprivkey: number;
42
+ networkMagic: number;
43
+ port: number;
44
+ dnsSeeds: any[];
45
+ }): Network;
46
+ /**
47
+ * @function
48
+ * @member Networks#remove
49
+ * Will remove a custom network
50
+ * @param {Network} network
51
+ */
52
+ export function remove(network: Network): void;
53
+ export { livenet };
54
+ export { regtest };
55
+ export { testnet };
56
+ export { livenet as defaultNetwork };
57
+ /**
58
+ * Enables regtest network mode for testing purposes.
59
+ * @member Networks#enableRegtest
60
+ * @function
61
+ */
62
+ export function enableRegtest(): void;
63
+ /**
64
+ * @function
65
+ * @member Networks#disableRegtest
66
+ * Disables the regtest network configuration.
67
+ * This sets the `regtestEnabled` flag to false in the testnet configuration.
68
+ */
69
+ export function disableRegtest(): void;
70
+ }
71
+ declare class Networks {
72
+ }
73
+ import Network = require("./network.cjs");
74
+ declare var livenet: any;
75
+ declare var regtest: any;
76
+ declare var testnet: any;
@@ -0,0 +1,93 @@
1
+ export = Opcode;
2
+ /**
3
+ * Creates an Opcode instance from a number or string representation.
4
+ * @constructor
5
+ * @param {number|string} num - The numeric value or string name of the opcode
6
+ * @throws {TypeError} If the input type is not recognized
7
+ * @returns {Opcode} A new Opcode instance
8
+ */
9
+ declare function Opcode(num: number | string): Opcode;
10
+ declare class Opcode {
11
+ /**
12
+ * Creates an Opcode instance from a number or string representation.
13
+ * @constructor
14
+ * @param {number|string} num - The numeric value or string name of the opcode
15
+ * @throws {TypeError} If the input type is not recognized
16
+ * @returns {Opcode} A new Opcode instance
17
+ */
18
+ constructor(num: number | string);
19
+ /**
20
+ * Converts the opcode number to its hexadecimal string representation.
21
+ * @returns {string} Hexadecimal string of the opcode number.
22
+ */
23
+ toHex(): string;
24
+ /**
25
+ * Converts the opcode to a Buffer by first converting it to a hex string.
26
+ * @returns {Buffer} The opcode represented as a Buffer.
27
+ */
28
+ toBuffer(): Buffer;
29
+ /**
30
+ * Gets the numeric value of the opcode.
31
+ * @returns {number} The numeric representation of the opcode.
32
+ */
33
+ toNumber(): number;
34
+ /**
35
+ * Converts the opcode number to its string representation.
36
+ * @throws {Error} If the opcode number has no corresponding string mapping.
37
+ * @returns {string} The string representation of the opcode.
38
+ */
39
+ toString(): string;
40
+ /**
41
+ * Converts the opcode to a human-readable string representation.
42
+ * If the opcode has a known mnemonic, returns that string.
43
+ * Otherwise, returns the hexadecimal representation of the opcode.
44
+ * @returns {string} The safe string representation of the opcode.
45
+ */
46
+ toSafeString(): string;
47
+ /**
48
+ * Will return a string formatted for the console
49
+ *
50
+ * @returns {string} Script opcode
51
+ */
52
+ inspect(): string;
53
+ }
54
+ declare namespace Opcode {
55
+ /**
56
+ * Creates an Opcode instance from a Buffer.
57
+ * @param {Buffer} buf - The buffer containing the opcode data.
58
+ * @returns {Opcode} The constructed Opcode instance.
59
+ * @throws {Error} If the input is not a Buffer.
60
+ */
61
+ function fromBuffer(buf: Buffer): Opcode;
62
+ /**
63
+ * Creates an Opcode instance from a number.
64
+ * @param {number} num - The numeric value to convert to an Opcode.
65
+ * @returns {Opcode} A new Opcode instance.
66
+ * @throws {Error} If the input is not a number.
67
+ */
68
+ function fromNumber(num: number): Opcode;
69
+ /**
70
+ * Creates an Opcode instance from a string representation.
71
+ * @param {string} str - The string representation of the opcode.
72
+ * @returns {Opcode} A new Opcode instance corresponding to the input string.
73
+ * @throws {TypeError} If the input string is not a valid opcode representation.
74
+ */
75
+ function fromString(str: string): Opcode;
76
+ /**
77
+ * Converts a small integer (0-16) to its corresponding opcode.
78
+ * @param {number} n - The integer to convert (must be between 0 and 16)
79
+ * @returns {Opcode} The corresponding opcode (OP_0 for 0, OP_1+n-1 for 1-16)
80
+ * @throws {Error} If n is not a number or outside valid range
81
+ */
82
+ function smallInt(n: number): Opcode;
83
+ let map: {
84
+ [x: string]: number;
85
+ };
86
+ let reverseMap: any[];
87
+ /**
88
+ * Checks if the given opcode is a small integer opcode (OP_0 to OP_16).
89
+ * @param {number|Opcode} opcode - The opcode to check, either as a number or Opcode instance.
90
+ * @returns {boolean} True if the opcode is a small integer opcode, false otherwise.
91
+ */
92
+ function isSmallIntOp(opcode: number | Opcode): boolean;
93
+ }
@@ -0,0 +1,169 @@
1
+ export = PrivateKey;
2
+ /**
3
+ * Instantiate a PrivateKey from a BN, Buffer or WIF string.
4
+ *
5
+ * @param {string|BN|Buffer|Object} data - The encoded data in various formats
6
+ * @param {Network|string} [network] - a {@link Network} object, or a string with the network name
7
+ * @returns {PrivateKey} A new valid instance of an PrivateKey
8
+ * @constructor
9
+ */
10
+ declare function PrivateKey(data: string | BN | Buffer | any, network?: Network | string): PrivateKey;
11
+ declare class PrivateKey {
12
+ /**
13
+ * Instantiate a PrivateKey from a BN, Buffer or WIF string.
14
+ *
15
+ * @param {string|BN|Buffer|Object} data - The encoded data in various formats
16
+ * @param {Network|string} [network] - a {@link Network} object, or a string with the network name
17
+ * @returns {PrivateKey} A new valid instance of an PrivateKey
18
+ * @constructor
19
+ */
20
+ constructor(data: string | BN | Buffer | any, network?: Network | string);
21
+ get publicKey(): PublicKey;
22
+ get network(): any;
23
+ get compressed(): any;
24
+ private _classifyArguments;
25
+ /**
26
+ * Will output the PrivateKey in WIF
27
+ *
28
+ * @returns {string}
29
+ */
30
+ toString(): string;
31
+ /**
32
+ * Will output the PrivateKey to a WIF string
33
+ *
34
+ * @returns {string} A WIP representation of the private key
35
+ */
36
+ toWIF(): string;
37
+ /**
38
+ * Will return the private key as a BN instance
39
+ *
40
+ * @returns {BN} A BN instance of the private key
41
+ */
42
+ toBigNumber(): BN;
43
+ /**
44
+ * Will return the private key as a BN buffer
45
+ *
46
+ * @returns {Buffer} A buffer of the private key
47
+ */
48
+ toBuffer(): Buffer;
49
+ /**
50
+ * Converts the private key to a hexadecimal string representation.
51
+ * @returns {string} Hexadecimal string of the private key.
52
+ */
53
+ toHex(): string;
54
+ /**
55
+ * Will return the corresponding public key
56
+ *
57
+ * @returns {PublicKey} A public key generated from the private key
58
+ */
59
+ toPublicKey(): PublicKey;
60
+ _pubkey: PublicKey;
61
+ /**
62
+ * Will return an address for the private key
63
+ * @param {Network|string} [network] - optional parameter specifying
64
+ * the desired network for the address
65
+ *
66
+ * @returns {Address} An address generated from the private key
67
+ */
68
+ toAddress(network?: Network | string): Address;
69
+ /**
70
+ * @returns {Object} A plain object representation
71
+ */
72
+ toObject: () => any;
73
+ toJSON(): any;
74
+ /**
75
+ * Will return a string formatted for the console
76
+ *
77
+ * @returns {string} Private key
78
+ */
79
+ inspect(): string;
80
+ }
81
+ declare namespace PrivateKey {
82
+ /**
83
+ * Internal function to get a random Big Number (BN)
84
+ *
85
+ * @returns {BN} A new randomly generated BN
86
+ * @private
87
+ */
88
+ function _getRandomBN(): BN;
89
+ /**
90
+ * Internal function to transform a WIF Buffer into a private key
91
+ *
92
+ * @param {Buffer} buf - An WIF string
93
+ * @param {Network|string} [network] - a {@link Network} object, or a string with the network name
94
+ * @returns {Object} An object with keys: bn, network and compressed
95
+ * @private
96
+ */
97
+ function _transformBuffer(buf: Buffer, network?: any): any;
98
+ /**
99
+ * Internal function to transform a BN buffer into a private key
100
+ *
101
+ * @param {Buffer} buf
102
+ * @param {Network|string=} network - a {@link Network} object, or a string with the network name
103
+ * @returns {object} an Object with keys: bn, network, and compressed
104
+ * @private
105
+ */
106
+ function _transformBNBuffer(buf: Buffer, network?: any): any;
107
+ /**
108
+ * Internal function to transform a WIF string into a private key
109
+ *
110
+ * @param {string} buf - An WIF string
111
+ * @returns {Object} An object with keys: bn, network and compressed
112
+ * @private
113
+ */
114
+ function _transformWIF(str: any, network: any): any;
115
+ /**
116
+ * Instantiate a PrivateKey from a Buffer with the DER or WIF representation
117
+ *
118
+ * @param {Buffer} buf
119
+ * @param {Network} network
120
+ * @return {PrivateKey}
121
+ */
122
+ function fromBuffer(buf: Buffer, network: Network): PrivateKey;
123
+ /**
124
+ * Creates a PrivateKey instance from a hexadecimal string.
125
+ * @param {string} hex - The hexadecimal string representation of the private key.
126
+ * @param {Network} network - The network associated with the private key.
127
+ * @returns {PrivateKey} A PrivateKey instance.
128
+ */
129
+ function fromHex(hex: string, network: Network): PrivateKey;
130
+ /**
131
+ * Internal function to transform a JSON string on plain object into a private key
132
+ * return this.
133
+ *
134
+ * @param {string} json - A JSON string or plain object
135
+ * @returns {Object} An object with keys: bn, network and compressed
136
+ * @private
137
+ */
138
+ function _transformObject(json: string): any;
139
+ function fromString(str: string): PrivateKey;
140
+ function fromWIF(str: string): PrivateKey;
141
+ function fromObject(obj: any): PrivateKey;
142
+ function fromJSON(obj: any): PrivateKey;
143
+ /**
144
+ * Instantiate a PrivateKey from random bytes
145
+ *
146
+ * @param {string|Network} [network] - Either "livenet" or "testnet"
147
+ * @returns {PrivateKey} A new valid instance of PrivateKey
148
+ */
149
+ function fromRandom(network?: any): PrivateKey;
150
+ /**
151
+ * Check if there would be any errors when initializing a PrivateKey
152
+ *
153
+ * @param {string} data - The encoded data in various formats
154
+ * @param {string|Network} [network] - Either "livenet" or "testnet"
155
+ * @returns {null|Error} An error if exists
156
+ */
157
+ function getValidationError(data: string, network?: any): Error;
158
+ /**
159
+ * Check if the parameters are valid
160
+ *
161
+ * @param {string} data - The encoded data in various formats
162
+ * @param {string|Network} [network] - Either "livenet" or "testnet"
163
+ * @returns {Boolean} If the private key is would be valid
164
+ */
165
+ function isValid(data: string, network?: any): boolean;
166
+ }
167
+ import BN = require("./bn.cjs");
168
+ import PublicKey = require("./publickey.cjs");
169
+ import Address = require("./address.cjs");
@@ -0,0 +1,202 @@
1
+ export = PublicKey;
2
+ /**
3
+ * Instantiate a PublicKey from a {@link PrivateKey}, {@link Point}, `string`, or `Buffer`.
4
+ *
5
+ * There are two internal properties, `network` and `compressed`, that deal with importing
6
+ * a PublicKey from a PrivateKey in WIF format. More details described on {@link PrivateKey}
7
+ *
8
+ * @example
9
+ * ```javascript
10
+ * // instantiate from a private key
11
+ * var key = PublicKey(privateKey, true);
12
+ *
13
+ * // export to as a DER hex encoded string
14
+ * var exported = key.toString();
15
+ *
16
+ * // import the public key
17
+ * var imported = PublicKey.fromString(exported);
18
+ * ```
19
+ *
20
+ * @param {string} data - The encoded data in various formats
21
+ * @param {Object} extra - additional options
22
+ * @param {Network} extra.network - Which network should the address for this public key be for
23
+ * @param {String=} extra.compressed - If the public key is compressed
24
+ * @returns {PublicKey} A new valid instance of an PublicKey
25
+ * @constructor
26
+ */
27
+ declare function PublicKey(data: string, extra: {
28
+ network: Network;
29
+ compressed?: string | undefined;
30
+ }): PublicKey;
31
+ declare class PublicKey {
32
+ /**
33
+ * Instantiate a PublicKey from a {@link PrivateKey}, {@link Point}, `string`, or `Buffer`.
34
+ *
35
+ * There are two internal properties, `network` and `compressed`, that deal with importing
36
+ * a PublicKey from a PrivateKey in WIF format. More details described on {@link PrivateKey}
37
+ *
38
+ * @example
39
+ * ```javascript
40
+ * // instantiate from a private key
41
+ * var key = PublicKey(privateKey, true);
42
+ *
43
+ * // export to as a DER hex encoded string
44
+ * var exported = key.toString();
45
+ *
46
+ * // import the public key
47
+ * var imported = PublicKey.fromString(exported);
48
+ * ```
49
+ *
50
+ * @param {string} data - The encoded data in various formats
51
+ * @param {Object} extra - additional options
52
+ * @param {Network} extra.network - Which network should the address for this public key be for
53
+ * @param {String=} extra.compressed - If the public key is compressed
54
+ * @returns {PublicKey} A new valid instance of an PublicKey
55
+ * @constructor
56
+ */
57
+ constructor(data: string, extra: {
58
+ network: Network;
59
+ compressed?: string | undefined;
60
+ });
61
+ /**
62
+ * Internal function to differentiate between arguments passed to the constructor
63
+ * @param {*} data
64
+ * @param {Object} extra
65
+ */
66
+ _classifyArgs(data: any, extra: any): {
67
+ compressed: any;
68
+ };
69
+ /**
70
+ * @returns {Object} A plain object of the PublicKey
71
+ */
72
+ toObject: () => any;
73
+ toJSON(): any;
74
+ /**
75
+ * Will output the PublicKey to a DER Buffer
76
+ *
77
+ * @returns {Buffer} A DER hex encoded buffer
78
+ */
79
+ toBuffer: () => Buffer;
80
+ toDER(): Buffer;
81
+ /**
82
+ * Will return a sha256 + ripemd160 hash of the serialized public key
83
+ * @see https://github.com/bitcoin/bitcoin/blob/master/src/pubkey.h#L141
84
+ * @returns {Buffer}
85
+ */
86
+ _getID(): Buffer;
87
+ /**
88
+ * Will return an address for the public key
89
+ *
90
+ * @param {string|Network} [network] - Which network should the address be for
91
+ * @returns {Address} An address generated from the public key
92
+ */
93
+ toAddress(network?: string | Network): Address;
94
+ /**
95
+ * Will output the PublicKey to a DER encoded hex string
96
+ *
97
+ * @returns {string} A DER hex encoded string
98
+ */
99
+ toString: () => string;
100
+ toHex(): string;
101
+ /**
102
+ * Will return a string formatted for the console
103
+ *
104
+ * @returns {string} Public key
105
+ */
106
+ inspect(): string;
107
+ }
108
+ declare namespace PublicKey {
109
+ /**
110
+ * Internal function to detect if an object is a {@link PrivateKey}
111
+ *
112
+ * @param {*} param - object to test
113
+ * @returns {boolean}
114
+ * @private
115
+ */
116
+ function _isPrivateKey(param: any): boolean;
117
+ /**
118
+ * Internal function to detect if an object is a Buffer
119
+ *
120
+ * @param {*} param - object to test
121
+ * @returns {boolean}
122
+ * @private
123
+ */
124
+ function _isBuffer(param: any): boolean;
125
+ /**
126
+ * Internal function to transform a private key into a public key point
127
+ *
128
+ * @param {PrivateKey} privkey - An instance of PrivateKey
129
+ * @returns {Object} An object with keys: point and compressed
130
+ * @private
131
+ */
132
+ function _transformPrivateKey(privkey: PrivateKey): any;
133
+ /**
134
+ * Internal function to transform DER into a public key point
135
+ *
136
+ * @param {Buffer} buf - An DER buffer
137
+ * @param {bool=} strict - if set to false, will loosen some conditions
138
+ * @returns {Object} An object with keys: point and compressed
139
+ * @private
140
+ */
141
+ function _transformDER(buf: Buffer, strict?: bool): any;
142
+ /**
143
+ * Internal function to transform X into a public key point
144
+ *
145
+ * @param {Boolean} odd - If the point is above or below the x axis
146
+ * @param {Point} x - The x point
147
+ * @returns {Object} An object with keys: point and compressed
148
+ * @private
149
+ */
150
+ function _transformX(odd: boolean, x: Point): any;
151
+ /**
152
+ * Internal function to transform a JSON into a public key point
153
+ *
154
+ * @param {String|Object} json - a JSON string or plain object
155
+ * @returns {Object} An object with keys: point and compressed
156
+ * @private
157
+ */
158
+ function _transformObject(json: any): any;
159
+ /**
160
+ * Instantiate a PublicKey from a PrivateKey
161
+ *
162
+ * @param {PrivateKey} privkey - An instance of PrivateKey
163
+ * @returns {PublicKey} A new valid instance of PublicKey
164
+ */
165
+ function fromPrivateKey(privkey: PrivateKey): PublicKey;
166
+ function fromDER(buf: Buffer, strict?: bool): PublicKey;
167
+ function fromBuffer(buf: Buffer, strict?: bool): PublicKey;
168
+ /**
169
+ * Instantiate a PublicKey from a Point
170
+ *
171
+ * @param {Point} point - A Point instance
172
+ * @param {boolean=} compressed - whether to store this public key as compressed format
173
+ * @returns {PublicKey} A new valid instance of PublicKey
174
+ */
175
+ function fromPoint(point: Point, compressed?: boolean): PublicKey;
176
+ function fromHex(str: string, encoding?: string): PublicKey;
177
+ function fromString(str: string, encoding?: string): PublicKey;
178
+ /**
179
+ * Instantiate a PublicKey from an X Point
180
+ *
181
+ * @param {Boolean} odd - If the point is above or below the x axis
182
+ * @param {Point} x - The x point
183
+ * @returns {PublicKey} A new valid instance of PublicKey
184
+ */
185
+ function fromX(odd: boolean, x: Point): PublicKey;
186
+ /**
187
+ * Check if there would be any errors when initializing a PublicKey
188
+ *
189
+ * @param {string} data - The encoded data in various formats
190
+ * @returns {null|Error} An error if exists
191
+ */
192
+ function getValidationError(data: string): Error;
193
+ /**
194
+ * Check if the parameters are valid
195
+ *
196
+ * @param {string} data - The encoded data in various formats
197
+ * @returns {Boolean} If the public key would be valid
198
+ */
199
+ function isValid(data: string): boolean;
200
+ }
201
+ import Address = require("./address.cjs");
202
+ import Point = require("./crypto/point.cjs");
@@ -0,0 +1,2 @@
1
+ export = Script;
2
+ import Script = require("./script.cjs");