@vbyte/btc-dev 1.1.8 → 2.0.0

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 (174) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +260 -3
  3. package/dist/const.d.ts +3 -0
  4. package/dist/const.js +23 -22
  5. package/dist/index.d.ts +11 -11
  6. package/dist/index.js +10 -10
  7. package/dist/lib/address/api.d.ts +2 -2
  8. package/dist/lib/address/api.js +12 -12
  9. package/dist/lib/address/encode.d.ts +1 -1
  10. package/dist/lib/address/encode.js +24 -24
  11. package/dist/lib/address/index.d.ts +6 -6
  12. package/dist/lib/address/index.js +6 -6
  13. package/dist/lib/address/p2pkh.d.ts +2 -2
  14. package/dist/lib/address/p2pkh.js +14 -14
  15. package/dist/lib/address/p2sh.d.ts +2 -2
  16. package/dist/lib/address/p2sh.js +13 -13
  17. package/dist/lib/address/p2tr.d.ts +2 -2
  18. package/dist/lib/address/p2tr.js +13 -13
  19. package/dist/lib/address/p2wpkh.d.ts +2 -2
  20. package/dist/lib/address/p2wpkh.js +14 -14
  21. package/dist/lib/address/p2wsh.d.ts +2 -2
  22. package/dist/lib/address/p2wsh.js +13 -13
  23. package/dist/lib/address/script.d.ts +1 -1
  24. package/dist/lib/address/script.js +16 -16
  25. package/dist/lib/address/util.d.ts +1 -1
  26. package/dist/lib/address/util.js +22 -22
  27. package/dist/lib/meta/index.d.ts +4 -4
  28. package/dist/lib/meta/index.js +4 -4
  29. package/dist/lib/meta/locktime.d.ts +1 -1
  30. package/dist/lib/meta/locktime.js +12 -12
  31. package/dist/lib/meta/ref.js +9 -6
  32. package/dist/lib/meta/scribe.d.ts +2 -2
  33. package/dist/lib/meta/scribe.js +48 -53
  34. package/dist/lib/meta/sequence.d.ts +1 -1
  35. package/dist/lib/meta/sequence.js +16 -15
  36. package/dist/lib/script/decode.d.ts +2 -2
  37. package/dist/lib/script/decode.js +50 -15
  38. package/dist/lib/script/encode.d.ts +1 -1
  39. package/dist/lib/script/encode.js +20 -16
  40. package/dist/lib/script/index.d.ts +5 -13
  41. package/dist/lib/script/index.js +5 -14
  42. package/dist/lib/script/lock.d.ts +2 -2
  43. package/dist/lib/script/lock.js +15 -12
  44. package/dist/lib/script/util.js +4 -4
  45. package/dist/lib/script/words.js +129 -129
  46. package/dist/lib/sighash/index.d.ts +3 -3
  47. package/dist/lib/sighash/index.js +3 -3
  48. package/dist/lib/sighash/segwit.d.ts +2 -2
  49. package/dist/lib/sighash/segwit.js +15 -14
  50. package/dist/lib/sighash/taproot.d.ts +2 -2
  51. package/dist/lib/sighash/taproot.js +24 -23
  52. package/dist/lib/sighash/util.d.ts +2 -2
  53. package/dist/lib/sighash/util.js +7 -7
  54. package/dist/lib/signer/index.d.ts +2 -2
  55. package/dist/lib/signer/index.js +2 -2
  56. package/dist/lib/signer/sign.d.ts +1 -1
  57. package/dist/lib/signer/sign.js +42 -7
  58. package/dist/lib/signer/verify.d.ts +17 -3
  59. package/dist/lib/signer/verify.js +233 -3
  60. package/dist/lib/taproot/cblock.d.ts +1 -1
  61. package/dist/lib/taproot/cblock.js +14 -16
  62. package/dist/lib/taproot/encode.d.ts +1 -1
  63. package/dist/lib/taproot/encode.js +7 -7
  64. package/dist/lib/taproot/index.d.ts +4 -4
  65. package/dist/lib/taproot/index.js +4 -4
  66. package/dist/lib/taproot/parse.d.ts +1 -1
  67. package/dist/lib/taproot/parse.js +12 -14
  68. package/dist/lib/taproot/tree.d.ts +2 -2
  69. package/dist/lib/taproot/tree.js +11 -7
  70. package/dist/lib/tx/create.d.ts +1 -1
  71. package/dist/lib/tx/create.js +28 -12
  72. package/dist/lib/tx/decode.d.ts +2 -2
  73. package/dist/lib/tx/decode.js +50 -17
  74. package/dist/lib/tx/encode.d.ts +2 -2
  75. package/dist/lib/tx/encode.js +13 -16
  76. package/dist/lib/tx/index.d.ts +7 -7
  77. package/dist/lib/tx/index.js +7 -7
  78. package/dist/lib/tx/parse.d.ts +1 -1
  79. package/dist/lib/tx/parse.js +9 -9
  80. package/dist/lib/tx/size.d.ts +2 -2
  81. package/dist/lib/tx/size.js +9 -9
  82. package/dist/lib/tx/util.d.ts +2 -2
  83. package/dist/lib/tx/util.js +23 -20
  84. package/dist/lib/tx/validate.d.ts +1 -1
  85. package/dist/lib/tx/validate.js +3 -3
  86. package/dist/lib/witness/index.d.ts +2 -2
  87. package/dist/lib/witness/index.js +2 -2
  88. package/dist/lib/witness/parse.d.ts +2 -2
  89. package/dist/lib/witness/parse.js +24 -23
  90. package/dist/lib/witness/util.d.ts +2 -2
  91. package/dist/lib/witness/util.js +5 -5
  92. package/dist/main.cjs +2308 -1005
  93. package/dist/main.cjs.map +1 -1
  94. package/dist/module.mjs +2308 -1005
  95. package/dist/module.mjs.map +1 -1
  96. package/dist/package.json +20 -17
  97. package/dist/schema/base.d.ts +1 -1
  98. package/dist/schema/base.js +17 -13
  99. package/dist/schema/index.d.ts +2 -2
  100. package/dist/schema/index.js +2 -2
  101. package/dist/schema/taproot.d.ts +1 -1
  102. package/dist/schema/taproot.js +2 -2
  103. package/dist/schema/tx.d.ts +1 -1
  104. package/dist/schema/tx.js +4 -4
  105. package/dist/script.js +8 -8
  106. package/dist/script.js.map +1 -1
  107. package/dist/types/address.d.ts +4 -4
  108. package/dist/types/index.d.ts +8 -8
  109. package/dist/types/index.js +8 -8
  110. package/dist/types/meta.d.ts +4 -4
  111. package/dist/types/psbt.d.ts +2 -2
  112. package/dist/types/script.d.ts +2 -2
  113. package/dist/types/sighash.d.ts +2 -2
  114. package/dist/types/witness.d.ts +5 -5
  115. package/package.json +20 -17
  116. package/src/const.ts +0 -61
  117. package/src/index.ts +0 -13
  118. package/src/lib/address/api.ts +0 -50
  119. package/src/lib/address/encode.ts +0 -183
  120. package/src/lib/address/index.ts +0 -7
  121. package/src/lib/address/p2pkh.ts +0 -94
  122. package/src/lib/address/p2sh.ts +0 -96
  123. package/src/lib/address/p2tr.ts +0 -91
  124. package/src/lib/address/p2wpkh.ts +0 -94
  125. package/src/lib/address/p2wsh.ts +0 -92
  126. package/src/lib/address/script.ts +0 -63
  127. package/src/lib/address/util.ts +0 -87
  128. package/src/lib/meta/index.ts +0 -4
  129. package/src/lib/meta/locktime.ts +0 -57
  130. package/src/lib/meta/ref.ts +0 -107
  131. package/src/lib/meta/scribe.ts +0 -256
  132. package/src/lib/meta/sequence.ts +0 -146
  133. package/src/lib/script/decode.ts +0 -85
  134. package/src/lib/script/encode.ts +0 -129
  135. package/src/lib/script/index.ts +0 -20
  136. package/src/lib/script/lock.ts +0 -73
  137. package/src/lib/script/util.ts +0 -78
  138. package/src/lib/script/words.ts +0 -182
  139. package/src/lib/sighash/index.ts +0 -3
  140. package/src/lib/sighash/segwit.ts +0 -152
  141. package/src/lib/sighash/taproot.ts +0 -206
  142. package/src/lib/sighash/util.ts +0 -51
  143. package/src/lib/signer/index.ts +0 -2
  144. package/src/lib/signer/sign.ts +0 -39
  145. package/src/lib/signer/verify.ts +0 -88
  146. package/src/lib/taproot/cblock.ts +0 -96
  147. package/src/lib/taproot/encode.ts +0 -49
  148. package/src/lib/taproot/index.ts +0 -4
  149. package/src/lib/taproot/parse.ts +0 -65
  150. package/src/lib/taproot/tree.ts +0 -94
  151. package/src/lib/tx/create.ts +0 -90
  152. package/src/lib/tx/decode.ts +0 -123
  153. package/src/lib/tx/encode.ts +0 -155
  154. package/src/lib/tx/index.ts +0 -7
  155. package/src/lib/tx/parse.ts +0 -69
  156. package/src/lib/tx/size.ts +0 -68
  157. package/src/lib/tx/util.ts +0 -111
  158. package/src/lib/tx/validate.ts +0 -49
  159. package/src/lib/witness/index.ts +0 -2
  160. package/src/lib/witness/parse.ts +0 -127
  161. package/src/lib/witness/util.ts +0 -18
  162. package/src/schema/base.ts +0 -57
  163. package/src/schema/index.ts +0 -2
  164. package/src/schema/taproot.ts +0 -12
  165. package/src/schema/tx.ts +0 -48
  166. package/src/types/address.ts +0 -35
  167. package/src/types/index.ts +0 -8
  168. package/src/types/meta.ts +0 -48
  169. package/src/types/psbt.ts +0 -15
  170. package/src/types/script.ts +0 -18
  171. package/src/types/sighash.ts +0 -16
  172. package/src/types/taproot.ts +0 -41
  173. package/src/types/txdata.ts +0 -85
  174. package/src/types/witness.ts +0 -42
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vbyte/btc-dev",
3
- "version": "1.1.8",
3
+ "version": "2.0.0",
4
4
  "description": "Batteries-included toolset for plebian bitcoin development",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -24,8 +24,8 @@
24
24
  "files": [
25
25
  "README.md",
26
26
  "LICENSE",
27
- "dist",
28
- "src"
27
+ "CHANGELOG.md",
28
+ "dist"
29
29
  ],
30
30
  "main": "./main.cjs",
31
31
  "module": "./index.js",
@@ -33,9 +33,9 @@
33
33
  "types": "./types/index.d.ts",
34
34
  "exports": {
35
35
  ".": {
36
+ "types": "./types/index.d.ts",
36
37
  "import": "./index.js",
37
- "default": "./index.js",
38
- "types": "./index.d.ts"
38
+ "default": "./index.js"
39
39
  },
40
40
  "./address": {
41
41
  "types": "./lib/address/index.d.ts",
@@ -72,6 +72,8 @@
72
72
  },
73
73
  "scripts": {
74
74
  "build": "./scripts/build.sh",
75
+ "check": "npx tsc --project tsconfig.json --noEmit",
76
+ "lint": "biome check src/",
75
77
  "package": "npm test | faucet && npm run build",
76
78
  "release": "./scripts/release.sh",
77
79
  "scratch": "npm run script test/scratch.ts",
@@ -79,27 +81,28 @@
79
81
  "test": "npm run script test/src/tape.ts"
80
82
  },
81
83
  "dependencies": {
82
- "@noble/curves": "1.9.7",
83
- "@noble/hashes": "1.8.0",
84
- "@scure/btc-signer": "1.8.1",
85
- "@vbyte/buff": "^1.0.2",
84
+ "@noble/curves": "2.0.1",
85
+ "@noble/hashes": "2.0.1",
86
+ "@scure/btc-signer": "2.0.1",
87
+ "@vbyte/buff": "^1.0.4",
86
88
  "@vbyte/micro-lib": "^1.1.2",
87
- "zod": "^4.1.5"
89
+ "zod": "^4.3.5"
88
90
  },
89
91
  "devDependencies": {
92
+ "@biomejs/biome": "2.3.12",
90
93
  "@cmdcode/core-cmd": "^1.6.5",
91
- "@rollup/plugin-commonjs": "^28.0.6",
94
+ "@rollup/plugin-commonjs": "^29.0.0",
92
95
  "@rollup/plugin-json": "^6.1.0",
93
- "@rollup/plugin-node-resolve": "^16.0.1",
96
+ "@rollup/plugin-node-resolve": "^16.0.3",
94
97
  "@rollup/plugin-terser": "^0.4.4",
95
- "@rollup/plugin-typescript": "^12.1.4",
96
- "@types/node": "^24.3.1",
98
+ "@rollup/plugin-typescript": "^12.3.0",
99
+ "@types/node": "^25.0.10",
97
100
  "@types/tape": "^5.8.1",
98
101
  "faucet": "^0.0.4",
99
- "rollup": "^4.50.1",
102
+ "rollup": "^4.55.3",
100
103
  "tape": "^5.9.0",
101
104
  "tslib": "^2.8.1",
102
- "tsx": "^4.20.5",
103
- "typescript": "^5.9.2"
105
+ "tsx": "^4.21.0",
106
+ "typescript": "^5.9.3"
104
107
  }
105
108
  }
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  type Literal = z.infer<typeof literal>;
3
3
  type Json = Literal | {
4
4
  [key: string]: Json;
@@ -1,28 +1,30 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  export const big = z.bigint();
3
3
  export const bool = z.boolean();
4
4
  export const date = z.date();
5
- export const num = z.number().min(Number.MIN_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER);
5
+ export const num = z
6
+ .number()
7
+ .min(Number.MIN_SAFE_INTEGER)
8
+ .max(Number.MAX_SAFE_INTEGER);
6
9
  export const int = num.int();
7
10
  export const u8a = z.instanceof(Uint8Array);
8
11
  export const str = z.string();
9
12
  export const stamp = int.min(500_000_000);
10
13
  export const any = z.any();
11
14
  export const zod = z;
12
- export const char = int.min(0).max(0xFF);
13
- export const short = int.min(0).max(0xFFFF);
14
- export const uint = int.min(0).max(0xFFFFFFFF);
15
- export const float = z.number().refine((e) => String(e).includes('.'));
15
+ export const char = int.min(0).max(0xff);
16
+ export const short = int.min(0).max(0xffff);
17
+ export const uint = int.min(0).max(0xffffffff);
18
+ export const float = z.number().refine((e) => String(e).includes("."));
16
19
  export const float2 = float.refine((e) => {
17
- const parts = String(e).split('.').at(1);
20
+ const parts = String(e).split(".").at(1);
18
21
  return parts !== undefined && parts.length <= 2;
19
22
  });
20
- export const hex = z.string()
23
+ export const hex = z
24
+ .string()
21
25
  .regex(/^[0-9a-fA-F]*$/)
22
- .refine(e => e.length % 2 === 0);
23
- export const literal = z.union([
24
- z.string(), z.number(), z.boolean(), z.null()
25
- ]);
26
+ .refine((e) => e.length % 2 === 0);
27
+ export const literal = z.union([z.string(), z.number(), z.boolean(), z.null()]);
26
28
  export const json = z.lazy(() => z.union([literal, z.array(json), z.record(str, json)]));
27
29
  export const u8a20 = u8a.refine((e) => e.length === 20);
28
30
  export const u8a32 = u8a.refine((e) => e.length === 32);
@@ -39,4 +41,6 @@ export const byte64 = z.union([hex64, u8a64]);
39
41
  export const base58 = z.string().regex(/^[1-9A-HJ-NP-Za-km-z]+$/);
40
42
  export const base64 = z.string().regex(/^[a-zA-Z0-9+/]+={0,2}$/);
41
43
  export const base64url = z.string().regex(/^[a-zA-Z0-9\-_]+={0,2}$/);
42
- export const bech32 = z.string().regex(/^[a-z]+1[023456789acdefghjklmnpqrstuvwxyz]+$/);
44
+ export const bech32 = z
45
+ .string()
46
+ .regex(/^[a-z]+1[023456789acdefghjklmnpqrstuvwxyz]+$/);
@@ -1,2 +1,2 @@
1
- export * as taproot from './taproot.js';
2
- export * as tx from './tx.js';
1
+ export * as taproot from "./taproot.js";
2
+ export * as tx from "./tx.js";
@@ -1,2 +1,2 @@
1
- export * as taproot from './taproot.js';
2
- export * as tx from './tx.js';
1
+ export * as taproot from "./taproot.js";
2
+ export * as tx from "./tx.js";
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  export declare const taptree: z.ZodUnion<readonly [z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>]>>, z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>]>]>;
3
3
  export declare const config: z.ZodObject<{
4
4
  pubkey: z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>]>;
@@ -1,5 +1,5 @@
1
- import { z } from 'zod';
2
- import { byte32, uint } from './base.js';
1
+ import { z } from "zod";
2
+ import { byte32, uint } from "./base.js";
3
3
  export const taptree = z.union([z.array(byte32), byte32]);
4
4
  export const config = z.object({
5
5
  pubkey: byte32,
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  export declare const tx_output: z.ZodObject<{
3
3
  value: z.ZodBigInt;
4
4
  script_pk: z.ZodString;
package/dist/schema/tx.js CHANGED
@@ -1,5 +1,5 @@
1
- import { z } from 'zod';
2
- import { hex, hex32, uint } from './base.js';
1
+ import { z } from "zod";
2
+ import { hex, hex32, uint } from "./base.js";
3
3
  const sats = z.bigint().min(0n).max(2100000000000000n);
4
4
  export const tx_output = z.object({
5
5
  value: sats,
@@ -12,7 +12,7 @@ export const tx_input = z.object({
12
12
  prevout: tx_output.nullable(),
13
13
  script_sig: hex.nullable(),
14
14
  sequence: uint,
15
- witness: z.array(hex)
15
+ witness: z.array(hex),
16
16
  });
17
17
  export const tx_data = z.object({
18
18
  version: uint,
@@ -21,7 +21,7 @@ export const tx_data = z.object({
21
21
  locktime: uint,
22
22
  });
23
23
  export const vout_template = tx_output.extend({
24
- value: z.union([uint, sats])
24
+ value: z.union([uint, sats]),
25
25
  });
26
26
  export const vin_template = tx_input.extend({
27
27
  coinbase: hex.nullable().optional(),