functionalscript 0.8.0 → 0.8.1

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 (113) hide show
  1. package/bnf/data/module.f.d.ts +6 -0
  2. package/bnf/data/module.f.js +57 -4
  3. package/bnf/data/test.f.d.ts +1 -0
  4. package/bnf/data/test.f.js +67 -1
  5. package/ci/module.f.d.ts +3 -0
  6. package/ci/module.f.js +169 -0
  7. package/ci/module.js +3 -0
  8. package/crypto/hmac/module.f.d.ts +5 -4
  9. package/crypto/hmac/module.f.js +9 -18
  10. package/crypto/hmac/test.f.d.ts +1 -0
  11. package/crypto/hmac/test.f.js +16 -8
  12. package/crypto/prime_field/module.f.d.ts +1 -1
  13. package/crypto/prime_field/module.f.js +4 -3
  14. package/crypto/prime_field/test.f.js +13 -13
  15. package/crypto/rfc6979/module.f.d.ts +15 -0
  16. package/crypto/rfc6979/module.f.js +98 -0
  17. package/crypto/rfc6979/test.f.d.ts +10 -0
  18. package/crypto/rfc6979/test.f.js +490 -0
  19. package/crypto/secp/module.f.d.ts +4 -4
  20. package/crypto/secp/module.f.js +1 -1
  21. package/crypto/secp/test.f.js +8 -8
  22. package/crypto/sha2/module.f.d.ts +11 -5
  23. package/crypto/sha2/module.f.js +4 -3
  24. package/crypto/sha2/test.f.d.ts +4 -1
  25. package/crypto/sha2/test.f.js +41 -31
  26. package/crypto/sign/module.f.d.ts +1 -1
  27. package/crypto/sign/module.f.js +3 -2
  28. package/dev/tf/all.test.js +9 -1
  29. package/djs/ast/module.f.d.ts +3 -3
  30. package/djs/ast/test.f.js +7 -8
  31. package/djs/parser/module.f.d.ts +3 -3
  32. package/djs/parser/module.f.js +4 -4
  33. package/djs/parser/test.f.js +76 -77
  34. package/djs/serializer/module.f.d.ts +8 -8
  35. package/djs/serializer/module.f.js +4 -7
  36. package/djs/serializer/test.f.js +8 -9
  37. package/djs/tokenizer/module.f.d.ts +2 -2
  38. package/djs/tokenizer/module.f.js +3 -5
  39. package/djs/tokenizer/test.f.js +8 -10
  40. package/djs/transpiler/module.f.d.ts +3 -3
  41. package/djs/transpiler/module.f.js +2 -0
  42. package/fsc/bnf.f.d.ts +1 -1
  43. package/fsc/bnf.f.js +39 -51
  44. package/fsc/json.f.d.ts +1 -1
  45. package/fsc/json.f.js +56 -81
  46. package/fsc/test.f.js +4 -6
  47. package/fsm/module.f.js +3 -3
  48. package/fsm/test.f.js +21 -25
  49. package/html/module.f.js +17 -4
  50. package/html/test.f.d.ts +7 -0
  51. package/html/test.f.js +37 -0
  52. package/issues/031-json.f.d.ts +1 -0
  53. package/js/tokenizer/module.f.d.ts +4 -4
  54. package/js/tokenizer/module.f.js +12 -17
  55. package/js/tokenizer/test.f.js +9 -11
  56. package/json/module.f.d.ts +6 -6
  57. package/json/module.f.js +5 -10
  58. package/json/parser/module.f.d.ts +4 -4
  59. package/json/parser/module.f.js +7 -4
  60. package/json/parser/test.f.js +47 -49
  61. package/json/serializer/module.f.d.ts +6 -6
  62. package/json/serializer/module.f.js +3 -2
  63. package/json/serializer/test.f.js +13 -13
  64. package/json/test.f.js +13 -15
  65. package/json/tokenizer/module.f.d.ts +4 -4
  66. package/json/tokenizer/module.f.js +6 -7
  67. package/json/tokenizer/test.f.js +7 -9
  68. package/package.json +5 -5
  69. package/text/ascii/test.f.js +2 -2
  70. package/text/module.f.d.ts +3 -2
  71. package/text/module.f.js +2 -2
  72. package/text/test.f.js +3 -3
  73. package/text/utf16/test.f.js +2 -2
  74. package/text/utf8/test.f.js +2 -2
  75. package/types/array/test.f.js +2 -2
  76. package/types/bigint/module.f.d.ts +6 -3
  77. package/types/bigint/module.f.js +12 -11
  78. package/types/bigint/test.f.d.ts +2 -0
  79. package/types/bigint/test.f.js +21 -2
  80. package/types/bit_vec/module.f.d.ts +66 -34
  81. package/types/bit_vec/module.f.js +97 -32
  82. package/types/bit_vec/test.f.d.ts +7 -0
  83. package/types/bit_vec/test.f.js +283 -62
  84. package/types/btree/find/test.f.js +9 -8
  85. package/types/btree/remove/test.f.js +4 -4
  86. package/types/btree/set/test.f.js +4 -4
  87. package/types/btree/test.f.js +7 -7
  88. package/types/byte_set/test.f.js +2 -2
  89. package/types/function/compare/module.f.d.ts +15 -1
  90. package/types/function/compare/module.f.js +1 -1
  91. package/types/function/compare/test.f.js +37 -4
  92. package/types/list/test.f.js +93 -93
  93. package/types/monoid/module.f.d.ts +4 -4
  94. package/types/monoid/module.f.js +3 -3
  95. package/types/monoid/test.f.js +3 -3
  96. package/types/nominal/module.f.d.ts +5 -0
  97. package/types/nominal/module.f.js +4 -0
  98. package/types/nominal/test.f.d.ts +5 -0
  99. package/types/nominal/test.f.js +53 -0
  100. package/types/number/module.f.js +2 -2
  101. package/types/range_map/test.f.js +21 -21
  102. package/types/sorted_list/test.f.js +10 -10
  103. package/types/sorted_set/test.f.js +14 -14
  104. package/types/string/module.f.js +2 -2
  105. package/types/string_set/module.f.js +3 -3
  106. package/bnf/func/module.f.d.ts +0 -148
  107. package/bnf/func/module.f.js +0 -132
  108. package/bnf/func/test.f.d.ts +0 -12
  109. package/bnf/func/test.f.js +0 -171
  110. package/bnf/func/testlib.f.d.ts +0 -25
  111. package/bnf/func/testlib.f.js +0 -150
  112. /package/{issues/31-json.f.d.ts → ci/module.d.ts} +0 -0
  113. /package/issues/{31-json.f.js → 031-json.f.js} +0 -0
@@ -1,8 +1,10 @@
1
- import { type List, type Thunk } from '../list/module.f.ts';
1
+ import type { Fold, Reduce as OpReduce } from "../function/operator/module.f.ts";
2
+ import { type List, type Thunk } from "../list/module.f.ts";
3
+ import { type Nominal } from "../nominal/module.f.ts";
2
4
  /**
3
- * A vector of bits represented as a `bigint`.
5
+ * A vector of bits represented as a signed `bigint`.
4
6
  */
5
- export type Vec = bigint;
7
+ export type Vec = Nominal<'bit_vec', '1a23a4336197e6158b6936cad34e90d146cd84b9b40ff7ab75a17c6d79e31d89', bigint>;
6
8
  /**
7
9
  * An empty vector of bits.
8
10
  */
@@ -10,34 +12,50 @@ export declare const empty: Vec;
10
12
  /**
11
13
  * Calculates the length of the given vector of bits.
12
14
  */
13
- export declare const length: (v: bigint) => bigint;
15
+ export declare const length: (v: Vec) => bigint;
14
16
  /**
15
- * Creates a vector of bits of the given `len` and the given unsigned integer.
17
+ * Creates a vector of bits of the given `len` and the provided unsigned integer.
16
18
  *
17
19
  * @example
18
20
  *
19
21
  * ```js
20
22
  * const vec4 = vec(4n)
21
- * const v0 = vec4(5n) // 0x15n = 0b1_0101
22
- * const v1 = vec4(0x5FEn) // 0x1En = 0b1_1110
23
+ * const v0 = vec4(5n) // -0xDn = -0b1101
24
+ * const v1 = vec4(0x5FEn) // 0xEn = 0b1110
23
25
  * ```
24
26
  */
25
27
  export declare const vec: (len: bigint) => (ui: bigint) => Vec;
26
28
  /**
27
- * Creates an 8 bit vector from an unsigned integer.
29
+ * Creates an 8-bit vector from an unsigned integer.
28
30
  */
29
- export declare const vec8: (u: bigint) => Vec;
31
+ export declare const vec8: (ui: bigint) => Vec;
30
32
  /**
31
- * Returns the unsigned integer of the given vector by removing a stop bit.
33
+ * Returns the unsigned integer representation of the vector by clearing the stop bit.
32
34
  *
33
35
  * @example
34
36
  *
35
37
  * ```js
36
- * const vector = vec(8n)(0x5n) // 0x105n
38
+ * const vector = vec(8n)(0x5n) // -0x85n
37
39
  * const result = uint(vector); // result is 0x5n
38
40
  * ```
39
41
  */
40
42
  export declare const uint: (v: Vec) => bigint;
43
+ /**
44
+ * Structure describing the unpacked view of a vector.
45
+ */
46
+ export type Unpacked = {
47
+ readonly length: bigint;
48
+ readonly uint: bigint;
49
+ };
50
+ /**
51
+ * Extracts the logical length and unsigned integer from the vector.
52
+ */
53
+ export declare const unpack: (v: Vec) => Unpacked;
54
+ /**
55
+ * Packs an unpacked representation back into a vector.
56
+ */
57
+ export declare const pack: ({ length, uint }: Unpacked) => Vec;
58
+ export type Reduce = OpReduce<Vec>;
41
59
  /**
42
60
  * Represents operations for handling bit vectors with a specific bit order.
43
61
  *
@@ -53,13 +71,13 @@ export type BitOrder = {
53
71
  * @example
54
72
  *
55
73
  * ```js
56
- * const vector = vec(8n)(0xF5n) // 0x1F5n
74
+ * const vector = vec(8n)(0xF5n)
57
75
  *
58
- * const resultL0 = lsb.front(4n)(vector) // resultL0 is 5n
59
- * const resultL1 = lsb.front(16n)(vector) // resultL1 is 0xF5n
76
+ * const resultL0 = lsb.front(4n)(vector) // 5n
77
+ * const resultL1 = lsb.front(16n)(vector) // 0xF5n
60
78
  *
61
- * const resultM0 = msb.front(4n)(vector) // resultM0 is 0xFn
62
- * const resultM1 = msb.front(16n)(vector) // resultM1 is 0xF500n
79
+ * const resultM0 = msb.front(4n)(vector) // 0xFn
80
+ * const resultM1 = msb.front(16n)(vector) // 0xF500n
63
81
  * ```
64
82
  */
65
83
  readonly front: (len: bigint) => (v: Vec) => bigint;
@@ -72,13 +90,13 @@ export type BitOrder = {
72
90
  * @example
73
91
  *
74
92
  * ```js
75
- * const v = vec(16n)(0x3456n) // 0x13456n
93
+ * const v = vec(16n)(0x3456n)
76
94
  *
77
- * const rL0 = lsb.removeFront(4n)(v) // 0x1345n
78
- * const rL1 = lsb.removeFront(24n)(v) // 0x1n
95
+ * const rL0 = lsb.removeFront(4n)(v) // uint(rL0) is 0x345n
96
+ * const rL1 = lsb.removeFront(24n)(v) // rL1 === empty
79
97
  *
80
- * const rM0 = msb.removeFront(4n)(v) // 0x1456n
81
- * const rM1 = msb.removeFront(24n)(v) // 0x1n
98
+ * const rM0 = msb.removeFront(4n)(v) // uint(rM0) is 0x456n
99
+ * const rM1 = msb.removeFront(24n)(v) // rM1 === empty
82
100
  * ```
83
101
  */
84
102
  readonly removeFront: (len: bigint) => (v: Vec) => Vec;
@@ -90,35 +108,42 @@ export type BitOrder = {
90
108
  * @returns A function that takes a vector and returns
91
109
  * a tuple containing the removed bits as an unsigned integer and the remaining vector.
92
110
  *
111
+ * @example
112
+ *
93
113
  * ```js
94
- * const vector = vec(8n)(0xF5n) // 0x1F5n
114
+ * const vector = vec(8n)(0xF5n)
95
115
  *
96
- * const [uL0, rL0] = lsb.popFront(4n)(vector) // [5n, 0x1Fn]
97
- * const [uL1, rL1] = lsb.popFront(16n)(vector) // [0xF5n, 1n]
116
+ * const [uL0, rL0] = lsb.popFront(4n)(vector) // [5n, uint(rL0) is 0xFn]
117
+ * const [uL1, rL1] = lsb.popFront(16n)(vector) // [0xF5n, rL1 === empty]
98
118
  *
99
- * const [uM0, rM0] = msb.popFront(4n)(vector) // [0xFn, 0x15n]
100
- * const [uM1, rM1] = msb.popFront(16n)(vector) // [0xF500n, 1n]
119
+ * const [uM0, rM0] = msb.popFront(4n)(vector) // [0xFn, uint(rM0) is 0x5n]
120
+ * const [uM1, rM1] = msb.popFront(16n)(vector) // [0xF500n, rM1 === empty]
101
121
  * ```
102
122
  */
103
123
  readonly popFront: (len: bigint) => (v: Vec) => readonly [bigint, Vec];
104
124
  /**
105
125
  * Concatenates two vectors.
106
126
  *
107
- * @param a - The first vector.
108
127
  * @returns A function that takes a second vector and returns the concatenated vector.
109
128
  *
110
129
  * @example
111
130
  *
112
131
  * ```js
113
132
  * const u8 = vec(8n)
114
- * const a = u8(0x45n) // 0x145n
115
- * const b = u8(0x89n) // 0x189n
133
+ * const a = u8(0x45n)
134
+ * const b = u8(0x89n)
116
135
  *
117
- * const abL = lsb.concat(a)(b) // 0x18945n
118
- * const abM = msb.concat(a)(b) // 0x14589n
136
+ * const abL = lsb.concat(a)(b) // uint(abL) is 0x8945n
137
+ * const abM = msb.concat(a)(b) // uint(abM) is 0x4589n
119
138
  * ```
120
139
  */
121
- readonly concat: (a: Vec) => (b: Vec) => Vec;
140
+ readonly concat: Reduce;
141
+ /**
142
+ * Computes the bitwise exclusive OR of two vectors after normalizing their lengths.
143
+ *
144
+ * @returns A function that takes a second vector and returns the XOR result.
145
+ */
146
+ readonly xor: Reduce;
122
147
  };
123
148
  /**
124
149
  * Implements operations for handling vectors in a least-significant-bit (LSb) first order.
@@ -137,7 +162,7 @@ export declare const lsb: BitOrder;
137
162
  */
138
163
  export declare const msb: BitOrder;
139
164
  /**
140
- * Converts a list of unsigned 8-bit integers to a bit vector.
165
+ * Converts a list of unsigned 8-bit integers to a bit vector using the provided bit order.
141
166
  *
142
167
  * @param bo The bit order for the conversion
143
168
  * @param list The list of unsigned 8-bit integers to be converted.
@@ -152,4 +177,11 @@ export declare const u8ListToVec: (bo: BitOrder) => (list: List<number>) => Vec;
152
177
  * @returns A thunk that produces a list of unsigned 8-bit integers.
153
178
  */
154
179
  export declare const u8List: ({ popFront }: BitOrder) => (v: Vec) => Thunk<number>;
155
- export declare const listToVec: (bo: BitOrder) => (list: List<Vec>) => Vec;
180
+ /**
181
+ * Concatenates a list of vectors using the provided bit order.
182
+ */
183
+ export declare const listToVec: ({ concat }: BitOrder) => (list: List<Vec>) => Vec;
184
+ /**
185
+ * Repeats a vector to create a padded block of the desired length.
186
+ */
187
+ export declare const repeat: Fold<bigint, Vec>;
@@ -1,61 +1,113 @@
1
1
  /**
2
+ * Bit vectors that normalize the most-significant bit using signed `bigint` values.
3
+ *
4
+ * A value whose top bit is already set remains positive, while other values are
5
+ * negated after toggling the leading bit so the stop bit is always `1`. The sign bit
6
+ * therefore acts as the stop bit that encodes the logical length of the vector.
7
+ *
2
8
  * MSb is most-significant bit first.
9
+ *
3
10
  * ```
4
11
  * - byte: 0x53 = 0b0101_0011
5
12
  * - 0123_4567
6
13
  * ```
14
+ *
7
15
  * LSb is least-significant bit first.
16
+ *
8
17
  * ```
9
18
  * - byte: 0x53 = 0b0101_0011
10
19
  * - 7654_3210
11
20
  * ```
21
+ *
12
22
  * @module
13
23
  */
14
- import { log2, mask } from "../bigint/module.f.js";
24
+ import { abs, bitLength, mask, max, xor } from "../bigint/module.f.js";
15
25
  import { flip } from "../function/module.f.js";
16
26
  import { fold } from "../list/module.f.js";
27
+ import { asBase, asNominal } from "../nominal/module.f.js";
28
+ import { repeat as mRepeat } from "../monoid/module.f.js";
17
29
  /**
18
30
  * An empty vector of bits.
19
31
  */
20
- export const empty = 1n;
32
+ export const empty = asNominal(0n);
21
33
  /**
22
34
  * Calculates the length of the given vector of bits.
23
35
  */
24
- export const length = log2;
36
+ export const length = (v) => bitLength(asBase(v));
37
+ const lazyEmpty = () => empty;
25
38
  /**
26
- * Creates a vector of bits of the given `len` and the given unsigned integer.
39
+ * Creates a vector of bits of the given `len` and the provided unsigned integer.
27
40
  *
28
41
  * @example
29
42
  *
30
43
  * ```js
31
44
  * const vec4 = vec(4n)
32
- * const v0 = vec4(5n) // 0x15n = 0b1_0101
33
- * const v1 = vec4(0x5FEn) // 0x1En = 0b1_1110
45
+ * const v0 = vec4(5n) // -0xDn = -0b1101
46
+ * const v1 = vec4(0x5FEn) // 0xEn = 0b1110
34
47
  * ```
35
48
  */
36
49
  export const vec = (len) => {
37
50
  if (len <= 0n) {
38
- return () => empty;
51
+ return lazyEmpty;
39
52
  }
40
- const stop = 1n << len;
41
- const mask = stop - 1n;
42
- return data => stop | (data & mask);
53
+ const m = mask(len);
54
+ const last = len - 1n;
55
+ const lastBit = 1n << last;
56
+ return ui => {
57
+ // normalize `u`
58
+ const u = m & abs(ui);
59
+ //
60
+ const sign = u >> last;
61
+ const x = sign !== 0n ? u : -(u ^ lastBit);
62
+ return asNominal(x);
63
+ };
43
64
  };
44
65
  /**
45
- * Creates an 8 bit vector from an unsigned integer.
66
+ * Creates an 8-bit vector from an unsigned integer.
46
67
  */
47
68
  export const vec8 = vec(8n);
48
69
  /**
49
- * Returns the unsigned integer of the given vector by removing a stop bit.
70
+ * Returns the unsigned integer representation of the vector by clearing the stop bit.
50
71
  *
51
72
  * @example
52
73
  *
53
74
  * ```js
54
- * const vector = vec(8n)(0x5n) // 0x105n
75
+ * const vector = vec(8n)(0x5n) // -0x85n
55
76
  * const result = uint(vector); // result is 0x5n
56
77
  * ```
57
78
  */
58
- export const uint = (v) => v ^ (1n << length(v));
79
+ export const uint = (v) => {
80
+ const b = asBase(v);
81
+ if (b >= 0n) {
82
+ return b;
83
+ }
84
+ const u = -b;
85
+ const len = bitLength(u);
86
+ return u ^ (1n << (len - 1n));
87
+ };
88
+ /**
89
+ * Extracts the logical length and unsigned integer from the vector.
90
+ */
91
+ export const unpack = (v) => ({
92
+ length: length(v),
93
+ uint: uint(v),
94
+ });
95
+ /**
96
+ * Packs an unpacked representation back into a vector.
97
+ */
98
+ export const pack = ({ length, uint }) => vec(length)(uint);
99
+ const lsbNorm = ({ length: al, uint: a }) => ({ length: bl, uint: b }) => (len) => ({ a, b });
100
+ const msbNorm = ({ length: al, uint: a }) => ({ length: bl, uint: b }) => (len) => ({ a: a << (len - al), b: b << (len - bl) });
101
+ /**
102
+ * Normalizes two vectors to the same length before applying a bigint reducer.
103
+ */
104
+ const op = (norm) => (op) => ap => bp => {
105
+ const au = unpack(ap);
106
+ const bu = unpack(bp);
107
+ const len = max(au.length)(bu.length);
108
+ const { a, b } = norm(au)(bu)(len);
109
+ return vec(len)(op(a)(b));
110
+ };
59
111
  /**
60
112
  * Implements operations for handling vectors in a least-significant-bit (LSb) first order.
61
113
  *
@@ -66,27 +118,25 @@ export const uint = (v) => v ^ (1n << length(v));
66
118
  export const lsb = {
67
119
  front: len => {
68
120
  const m = mask(len);
69
- return v => {
70
- const result = v & m;
71
- return result === v ? uint(v) : result;
72
- };
121
+ return v => uint(v) & m;
73
122
  },
74
123
  removeFront: len => v => {
75
- const r = v >> len;
76
- return r === 0n ? empty : r;
124
+ const { length, uint } = unpack(v);
125
+ return vec(length - len)(uint >> len);
77
126
  },
78
127
  popFront: len => {
79
128
  const m = mask(len);
80
129
  return v => {
81
- const result = v & m;
82
- return result === v ? [uint(v), empty] : [result, v >> len];
130
+ const { length, uint } = unpack(v);
131
+ return [uint & m, vec(length - len)(uint >> len)];
83
132
  };
84
133
  },
85
- concat: a => {
86
- const aLen = length(a);
87
- const m = mask(aLen);
88
- return b => (b << aLen) | (a & m);
134
+ concat: (a) => (b) => {
135
+ const { length: al, uint: au } = unpack(a);
136
+ const { length: bl, uint: bu } = unpack(b);
137
+ return vec(al + bl)((bu << al) | au);
89
138
  },
139
+ xor: op(lsbNorm)(xor)
90
140
  };
91
141
  /**
92
142
  * Implements operations for handling vectors in a most-significant-bit (MSb) first order.
@@ -98,21 +148,29 @@ export const lsb = {
98
148
  export const msb = {
99
149
  front: len => {
100
150
  const m = mask(len);
101
- return v => (v >> (length(v) - len)) & m;
151
+ return v => {
152
+ const { length, uint } = unpack(v);
153
+ return (uint >> (length - len)) & m;
154
+ };
155
+ },
156
+ removeFront: len => v => {
157
+ const { length, uint } = unpack(v);
158
+ return vec(length - len)(uint);
102
159
  },
103
- removeFront: len => v => vec(length(v) - len)(v),
104
160
  popFront: len => {
105
161
  const m = mask(len);
106
162
  return v => {
107
- const d = length(v) - len;
108
- return [(v >> d) & m, vec(d)(v)];
163
+ const { length, uint } = unpack(v);
164
+ const d = length - len;
165
+ return [(uint >> d) & m, vec(d)(uint)];
109
166
  };
110
167
  },
111
168
  concat: flip(lsb.concat),
169
+ xor: op(msbNorm)(xor)
112
170
  };
113
171
  const appendU8 = ({ concat }) => (u8) => (a) => concat(a)(vec8(BigInt(u8)));
114
172
  /**
115
- * Converts a list of unsigned 8-bit integers to a bit vector.
173
+ * Converts a list of unsigned 8-bit integers to a bit vector using the provided bit order.
116
174
  *
117
175
  * @param bo The bit order for the conversion
118
176
  * @param list The list of unsigned 8-bit integers to be converted.
@@ -136,4 +194,11 @@ export const u8List = ({ popFront }) => {
136
194
  };
137
195
  return f;
138
196
  };
139
- export const listToVec = (bo) => fold(bo.concat)(empty);
197
+ /**
198
+ * Concatenates a list of vectors using the provided bit order.
199
+ */
200
+ export const listToVec = ({ concat }) => fold(flip(concat))(empty);
201
+ /**
202
+ * Repeats a vector to create a padded block of the desired length.
203
+ */
204
+ export const repeat = mRepeat({ identity: empty, operation: lsb.concat });
@@ -30,5 +30,12 @@ declare const _default: {
30
30
  bitset: () => void;
31
31
  appendBack: () => void;
32
32
  removeBack: () => void;
33
+ uint: (() => void)[];
34
+ vec: (() => void)[];
35
+ both: () => (() => void)[];
36
+ concat2: () => void;
37
+ lsbXor: () => void;
38
+ msbXor: () => void;
39
+ repeat: () => void;
33
40
  };
34
41
  export default _default;