@feelyourprotocol/blockchain 8141.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 (132) hide show
  1. package/README.md +269 -0
  2. package/dist/cjs/blockchain.d.ts +372 -0
  3. package/dist/cjs/blockchain.d.ts.map +1 -0
  4. package/dist/cjs/blockchain.js +1105 -0
  5. package/dist/cjs/blockchain.js.map +1 -0
  6. package/dist/cjs/consensus/casper.d.ts +16 -0
  7. package/dist/cjs/consensus/casper.d.ts.map +1 -0
  8. package/dist/cjs/consensus/casper.js +28 -0
  9. package/dist/cjs/consensus/casper.js.map +1 -0
  10. package/dist/cjs/consensus/clique.d.ts +164 -0
  11. package/dist/cjs/consensus/clique.d.ts.map +1 -0
  12. package/dist/cjs/consensus/clique.js +520 -0
  13. package/dist/cjs/consensus/clique.js.map +1 -0
  14. package/dist/cjs/consensus/ethash.d.ts +29 -0
  15. package/dist/cjs/consensus/ethash.d.ts.map +1 -0
  16. package/dist/cjs/consensus/ethash.js +48 -0
  17. package/dist/cjs/consensus/ethash.js.map +1 -0
  18. package/dist/cjs/consensus/index.d.ts +5 -0
  19. package/dist/cjs/consensus/index.d.ts.map +1 -0
  20. package/dist/cjs/consensus/index.js +10 -0
  21. package/dist/cjs/consensus/index.js.map +1 -0
  22. package/dist/cjs/constructors.d.ts +13 -0
  23. package/dist/cjs/constructors.d.ts.map +1 -0
  24. package/dist/cjs/constructors.js +80 -0
  25. package/dist/cjs/constructors.js.map +1 -0
  26. package/dist/cjs/db/cache.d.ts +17 -0
  27. package/dist/cjs/db/cache.d.ts.map +1 -0
  28. package/dist/cjs/db/cache.js +38 -0
  29. package/dist/cjs/db/cache.js.map +1 -0
  30. package/dist/cjs/db/constants.d.ts +23 -0
  31. package/dist/cjs/db/constants.d.ts.map +1 -0
  32. package/dist/cjs/db/constants.js +54 -0
  33. package/dist/cjs/db/constants.js.map +1 -0
  34. package/dist/cjs/db/helpers.d.ts +9 -0
  35. package/dist/cjs/db/helpers.d.ts.map +1 -0
  36. package/dist/cjs/db/helpers.js +68 -0
  37. package/dist/cjs/db/helpers.js.map +1 -0
  38. package/dist/cjs/db/manager.d.ts +78 -0
  39. package/dist/cjs/db/manager.d.ts.map +1 -0
  40. package/dist/cjs/db/manager.js +203 -0
  41. package/dist/cjs/db/manager.js.map +1 -0
  42. package/dist/cjs/db/operation.d.ts +45 -0
  43. package/dist/cjs/db/operation.d.ts.map +1 -0
  44. package/dist/cjs/db/operation.js +110 -0
  45. package/dist/cjs/db/operation.js.map +1 -0
  46. package/dist/cjs/helpers.d.ts +19 -0
  47. package/dist/cjs/helpers.d.ts.map +1 -0
  48. package/dist/cjs/helpers.js +34 -0
  49. package/dist/cjs/helpers.js.map +1 -0
  50. package/dist/cjs/index.d.ts +7 -0
  51. package/dist/cjs/index.d.ts.map +1 -0
  52. package/dist/cjs/index.js +33 -0
  53. package/dist/cjs/index.js.map +1 -0
  54. package/dist/cjs/package.json +3 -0
  55. package/dist/cjs/types.d.ts +219 -0
  56. package/dist/cjs/types.d.ts.map +1 -0
  57. package/dist/cjs/types.js +3 -0
  58. package/dist/cjs/types.js.map +1 -0
  59. package/dist/esm/blockchain.d.ts +372 -0
  60. package/dist/esm/blockchain.d.ts.map +1 -0
  61. package/dist/esm/blockchain.js +1101 -0
  62. package/dist/esm/blockchain.js.map +1 -0
  63. package/dist/esm/consensus/casper.d.ts +16 -0
  64. package/dist/esm/consensus/casper.d.ts.map +1 -0
  65. package/dist/esm/consensus/casper.js +24 -0
  66. package/dist/esm/consensus/casper.js.map +1 -0
  67. package/dist/esm/consensus/clique.d.ts +164 -0
  68. package/dist/esm/consensus/clique.d.ts.map +1 -0
  69. package/dist/esm/consensus/clique.js +516 -0
  70. package/dist/esm/consensus/clique.js.map +1 -0
  71. package/dist/esm/consensus/ethash.d.ts +29 -0
  72. package/dist/esm/consensus/ethash.d.ts.map +1 -0
  73. package/dist/esm/consensus/ethash.js +44 -0
  74. package/dist/esm/consensus/ethash.js.map +1 -0
  75. package/dist/esm/consensus/index.d.ts +5 -0
  76. package/dist/esm/consensus/index.d.ts.map +1 -0
  77. package/dist/esm/consensus/index.js +5 -0
  78. package/dist/esm/consensus/index.js.map +1 -0
  79. package/dist/esm/constructors.d.ts +13 -0
  80. package/dist/esm/constructors.d.ts.map +1 -0
  81. package/dist/esm/constructors.js +76 -0
  82. package/dist/esm/constructors.js.map +1 -0
  83. package/dist/esm/db/cache.d.ts +17 -0
  84. package/dist/esm/db/cache.d.ts.map +1 -0
  85. package/dist/esm/db/cache.js +34 -0
  86. package/dist/esm/db/cache.js.map +1 -0
  87. package/dist/esm/db/constants.d.ts +23 -0
  88. package/dist/esm/db/constants.d.ts.map +1 -0
  89. package/dist/esm/db/constants.js +46 -0
  90. package/dist/esm/db/constants.js.map +1 -0
  91. package/dist/esm/db/helpers.d.ts +9 -0
  92. package/dist/esm/db/helpers.d.ts.map +1 -0
  93. package/dist/esm/db/helpers.js +61 -0
  94. package/dist/esm/db/helpers.js.map +1 -0
  95. package/dist/esm/db/manager.d.ts +78 -0
  96. package/dist/esm/db/manager.d.ts.map +1 -0
  97. package/dist/esm/db/manager.js +199 -0
  98. package/dist/esm/db/manager.js.map +1 -0
  99. package/dist/esm/db/operation.d.ts +45 -0
  100. package/dist/esm/db/operation.d.ts.map +1 -0
  101. package/dist/esm/db/operation.js +106 -0
  102. package/dist/esm/db/operation.js.map +1 -0
  103. package/dist/esm/helpers.d.ts +19 -0
  104. package/dist/esm/helpers.d.ts.map +1 -0
  105. package/dist/esm/helpers.js +30 -0
  106. package/dist/esm/helpers.js.map +1 -0
  107. package/dist/esm/index.d.ts +7 -0
  108. package/dist/esm/index.d.ts.map +1 -0
  109. package/dist/esm/index.js +7 -0
  110. package/dist/esm/index.js.map +1 -0
  111. package/dist/esm/package.json +3 -0
  112. package/dist/esm/types.d.ts +219 -0
  113. package/dist/esm/types.d.ts.map +1 -0
  114. package/dist/esm/types.js +2 -0
  115. package/dist/esm/types.js.map +1 -0
  116. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  117. package/dist/tsconfig.prod.esm.tsbuildinfo +1 -0
  118. package/package.json +75 -0
  119. package/src/blockchain.ts +1353 -0
  120. package/src/consensus/casper.ts +33 -0
  121. package/src/consensus/clique.ts +633 -0
  122. package/src/consensus/ethash.ts +69 -0
  123. package/src/consensus/index.ts +5 -0
  124. package/src/constructors.ts +119 -0
  125. package/src/db/cache.ts +39 -0
  126. package/src/db/constants.ts +73 -0
  127. package/src/db/helpers.ts +81 -0
  128. package/src/db/manager.ts +243 -0
  129. package/src/db/operation.ts +152 -0
  130. package/src/helpers.ts +37 -0
  131. package/src/index.ts +12 -0
  132. package/src/types.ts +256 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/db/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { KeyEncoding, ValueEncoding } from '@feelyourprotocol/util';
2
+ import type { CacheMap } from './manager.ts';
3
+ export type DBTarget = (typeof DBTarget)[keyof typeof DBTarget];
4
+ export declare const DBTarget: {
5
+ readonly Heads: 0;
6
+ readonly HeadHeader: 1;
7
+ readonly HeadBlock: 2;
8
+ readonly HashToNumber: 3;
9
+ readonly NumberToHash: 4;
10
+ readonly TotalDifficulty: 5;
11
+ readonly Body: 6;
12
+ readonly Header: 7;
13
+ readonly CliqueSignerStates: 8;
14
+ readonly CliqueVotes: 9;
15
+ readonly CliqueBlockSigners: 10;
16
+ };
17
+ /**
18
+ * DBOpData is a type which has the purpose of holding the actual data of the Database Operation.
19
+ * @hidden
20
+ */
21
+ export interface DBOpData {
22
+ type?: 'put' | 'del';
23
+ key: Uint8Array | string;
24
+ keyEncoding: KeyEncoding;
25
+ valueEncoding?: ValueEncoding;
26
+ value?: Uint8Array | object;
27
+ }
28
+ export type DatabaseKey = {
29
+ blockNumber?: bigint;
30
+ blockHash?: Uint8Array;
31
+ };
32
+ /**
33
+ * The DBOp class aids creating database operations which is used by `level` using a more high-level interface
34
+ */
35
+ export declare class DBOp {
36
+ operationTarget: DBTarget;
37
+ baseDBOp: DBOpData;
38
+ cacheString: string | undefined;
39
+ private constructor();
40
+ static get(operationTarget: DBTarget, key?: DatabaseKey): DBOp;
41
+ static set(operationTarget: DBTarget, value: Uint8Array | object, key?: DatabaseKey): DBOp;
42
+ static del(operationTarget: DBTarget, key?: DatabaseKey): DBOp;
43
+ updateCache(cacheMap: CacheMap): void;
44
+ }
45
+ //# sourceMappingURL=operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/db/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAazF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAA;AAE/D,eAAO,MAAM,QAAQ;;;;;;;;;;;;CAYX,CAAA;AAEV;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACpB,GAAG,EAAE,UAAU,GAAG,MAAM,CAAA;IACxB,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;CAC5B;AAGD,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,UAAU,CAAA;CACvB,CAAA;AAED;;GAEG;AACH,qBAAa,IAAI;IACR,eAAe,EAAE,QAAQ,CAAA;IACzB,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAEtC,OAAO;WAqDO,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI;WAKvD,GAAG,CACf,eAAe,EAAE,QAAQ,EACzB,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,GAAG,CAAC,EAAE,WAAW,GAChB,IAAI;WAcO,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI;IAM9D,WAAW,CAAC,QAAQ,EAAE,QAAQ;CAYtC"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DBOp = exports.DBTarget = void 0;
4
+ const util_1 = require("@feelyourprotocol/util");
5
+ const constants_ts_1 = require("./constants.js");
6
+ exports.DBTarget = {
7
+ Heads: 0,
8
+ HeadHeader: 1,
9
+ HeadBlock: 2,
10
+ HashToNumber: 3,
11
+ NumberToHash: 4,
12
+ TotalDifficulty: 5,
13
+ Body: 6,
14
+ Header: 7,
15
+ CliqueSignerStates: 8,
16
+ CliqueVotes: 9,
17
+ CliqueBlockSigners: 10,
18
+ };
19
+ /**
20
+ * The DBOp class aids creating database operations which is used by `level` using a more high-level interface
21
+ */
22
+ class DBOp {
23
+ constructor(operationTarget, key) {
24
+ this.operationTarget = operationTarget;
25
+ this.baseDBOp = {
26
+ key: '',
27
+ keyEncoding: util_1.KeyEncoding.Bytes,
28
+ valueEncoding: util_1.ValueEncoding.Bytes,
29
+ };
30
+ switch (operationTarget) {
31
+ case exports.DBTarget.Heads: {
32
+ this.baseDBOp.key = constants_ts_1.HEADS_KEY;
33
+ this.baseDBOp.valueEncoding = util_1.ValueEncoding.JSON;
34
+ break;
35
+ }
36
+ case exports.DBTarget.HeadHeader: {
37
+ this.baseDBOp.key = constants_ts_1.HEAD_HEADER_KEY;
38
+ this.baseDBOp.keyEncoding = util_1.KeyEncoding.String;
39
+ break;
40
+ }
41
+ case exports.DBTarget.HeadBlock: {
42
+ this.baseDBOp.key = constants_ts_1.HEAD_BLOCK_KEY;
43
+ this.baseDBOp.keyEncoding = util_1.KeyEncoding.String;
44
+ break;
45
+ }
46
+ case exports.DBTarget.HashToNumber: {
47
+ this.baseDBOp.key = (0, constants_ts_1.hashToNumberKey)(key.blockHash);
48
+ this.cacheString = 'hashToNumber';
49
+ break;
50
+ }
51
+ case exports.DBTarget.NumberToHash: {
52
+ this.baseDBOp.key = (0, constants_ts_1.numberToHashKey)(key.blockNumber);
53
+ this.cacheString = 'numberToHash';
54
+ break;
55
+ }
56
+ case exports.DBTarget.TotalDifficulty: {
57
+ this.baseDBOp.key = (0, constants_ts_1.tdKey)(key.blockNumber, key.blockHash);
58
+ this.cacheString = 'td';
59
+ break;
60
+ }
61
+ case exports.DBTarget.Body: {
62
+ this.baseDBOp.key = (0, constants_ts_1.bodyKey)(key.blockNumber, key.blockHash);
63
+ this.cacheString = 'body';
64
+ break;
65
+ }
66
+ case exports.DBTarget.Header: {
67
+ this.baseDBOp.key = (0, constants_ts_1.headerKey)(key.blockNumber, key.blockHash);
68
+ this.cacheString = 'header';
69
+ break;
70
+ }
71
+ }
72
+ }
73
+ static get(operationTarget, key) {
74
+ return new DBOp(operationTarget, key);
75
+ }
76
+ // set operation: note: value/key is not in default order
77
+ static set(operationTarget, value, key) {
78
+ const dbOperation = new DBOp(operationTarget, key);
79
+ dbOperation.baseDBOp.value = value;
80
+ dbOperation.baseDBOp.type = 'put';
81
+ if (operationTarget === exports.DBTarget.Heads) {
82
+ dbOperation.baseDBOp.valueEncoding = util_1.ValueEncoding.JSON;
83
+ }
84
+ else {
85
+ dbOperation.baseDBOp.valueEncoding = util_1.ValueEncoding.Bytes;
86
+ }
87
+ return dbOperation;
88
+ }
89
+ static del(operationTarget, key) {
90
+ const dbOperation = new DBOp(operationTarget, key);
91
+ dbOperation.baseDBOp.type = 'del';
92
+ return dbOperation;
93
+ }
94
+ updateCache(cacheMap) {
95
+ if (this.cacheString !== undefined && cacheMap[this.cacheString] !== undefined) {
96
+ if (this.baseDBOp.type === 'put') {
97
+ this.baseDBOp.value instanceof Uint8Array &&
98
+ cacheMap[this.cacheString].set(this.baseDBOp.key, this.baseDBOp.value);
99
+ }
100
+ else if (this.baseDBOp.type === 'del') {
101
+ cacheMap[this.cacheString].del(this.baseDBOp.key);
102
+ }
103
+ else {
104
+ throw (0, util_1.EthereumJSErrorWithoutCode)('unsupported db operation on cache');
105
+ }
106
+ }
107
+ }
108
+ }
109
+ exports.DBOp = DBOp;
110
+ //# sourceMappingURL=operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/db/operation.ts"],"names":[],"mappings":";;;AAAA,2CAAyF;AAEzF,iDASuB;AAMV,QAAA,QAAQ,GAAG;IACtB,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,eAAe,EAAE,CAAC;IAClB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,kBAAkB,EAAE,CAAC;IACrB,WAAW,EAAE,CAAC;IACd,kBAAkB,EAAE,EAAE;CACd,CAAA;AAoBV;;GAEG;AACH,MAAa,IAAI;IAKf,YAAoB,eAAyB,EAAE,GAAiB;QAC9D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QAEtC,IAAI,CAAC,QAAQ,GAAG;YACd,GAAG,EAAE,EAAE;YACP,WAAW,EAAE,kBAAW,CAAC,KAAK;YAC9B,aAAa,EAAE,oBAAa,CAAC,KAAK;SACnC,CAAA;QAED,QAAQ,eAAe,EAAE,CAAC;YACxB,KAAK,gBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,wBAAS,CAAA;gBAC7B,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,oBAAa,CAAC,IAAI,CAAA;gBAChD,MAAK;YACP,CAAC;YACD,KAAK,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,8BAAe,CAAA;gBACnC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,kBAAW,CAAC,MAAM,CAAA;gBAC9C,MAAK;YACP,CAAC;YACD,KAAK,gBAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,6BAAc,CAAA;gBAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,kBAAW,CAAC,MAAM,CAAA;gBAC9C,MAAK;YACP,CAAC;YACD,KAAK,gBAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAA,8BAAe,EAAC,GAAI,CAAC,SAAU,CAAC,CAAA;gBACpD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAA;gBACjC,MAAK;YACP,CAAC;YACD,KAAK,gBAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAA,8BAAe,EAAC,GAAI,CAAC,WAAY,CAAC,CAAA;gBACtD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAA;gBACjC,MAAK;YACP,CAAC;YACD,KAAK,gBAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAA,oBAAK,EAAC,GAAI,CAAC,WAAY,EAAE,GAAI,CAAC,SAAU,CAAC,CAAA;gBAC7D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,MAAK;YACP,CAAC;YACD,KAAK,gBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAA,sBAAO,EAAC,GAAI,CAAC,WAAY,EAAE,GAAI,CAAC,SAAU,CAAC,CAAA;gBAC/D,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;gBACzB,MAAK;YACP,CAAC;YACD,KAAK,gBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAA,wBAAS,EAAC,GAAI,CAAC,WAAY,EAAE,GAAI,CAAC,SAAU,CAAC,CAAA;gBACjE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAA;gBAC3B,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,eAAyB,EAAE,GAAiB;QAC5D,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,yDAAyD;IAClD,MAAM,CAAC,GAAG,CACf,eAAyB,EACzB,KAA0B,EAC1B,GAAiB;QAEjB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;QAClD,WAAW,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;QAClC,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAA;QAEjC,IAAI,eAAe,KAAK,gBAAQ,CAAC,KAAK,EAAE,CAAC;YACvC,WAAW,CAAC,QAAQ,CAAC,aAAa,GAAG,oBAAa,CAAC,IAAI,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,QAAQ,CAAC,aAAa,GAAG,oBAAa,CAAC,KAAK,CAAA;QAC1D,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,eAAyB,EAAE,GAAiB;QAC5D,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;QAClD,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAA;QACjC,OAAO,WAAW,CAAA;IACpB,CAAC;IAEM,WAAW,CAAC,QAAkB;QACnC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;YAC/E,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,YAAY,UAAU;oBACvC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC1E,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAA,iCAA0B,EAAC,mCAAmC,CAAC,CAAA;YACvE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAnGD,oBAmGC"}
@@ -0,0 +1,19 @@
1
+ import type { Chain, Common, GenesisState } from '@feelyourprotocol/common';
2
+ /**
3
+ * Safe creation of a new Blockchain object awaiting the initialization function,
4
+ * encouraged method to use when creating a blockchain object.
5
+ *
6
+ * @param opts Constructor options, see {@link BlockchainOptions}
7
+ */
8
+ /**
9
+ * Merkle genesis root
10
+ * @param genesisState
11
+ * @param common
12
+ * @returns
13
+ */
14
+ export declare function genGenesisStateRoot(genesisState: GenesisState, common: Common): Promise<Uint8Array>;
15
+ /**
16
+ * Returns the genesis state root if chain is well known or an empty state's root otherwise
17
+ */
18
+ export declare function getGenesisStateRoot(chainId: Chain, common: Common): Promise<Uint8Array>;
19
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAErE;;;;;GAKG;AAEH;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAG7F"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genGenesisStateRoot = genGenesisStateRoot;
4
+ exports.getGenesisStateRoot = getGenesisStateRoot;
5
+ const common_1 = require("@feelyourprotocol/common");
6
+ const mpt_1 = require("@feelyourprotocol/mpt");
7
+ /**
8
+ * Safe creation of a new Blockchain object awaiting the initialization function,
9
+ * encouraged method to use when creating a blockchain object.
10
+ *
11
+ * @param opts Constructor options, see {@link BlockchainOptions}
12
+ */
13
+ /**
14
+ * Merkle genesis root
15
+ * @param genesisState
16
+ * @param common
17
+ * @returns
18
+ */
19
+ async function genGenesisStateRoot(genesisState, common) {
20
+ const genCommon = common.copy();
21
+ genCommon.setHardforkBy({
22
+ blockNumber: 0,
23
+ timestamp: genCommon.genesis().timestamp,
24
+ });
25
+ return (0, mpt_1.genesisMPTStateRoot)(genesisState);
26
+ }
27
+ /**
28
+ * Returns the genesis state root if chain is well known or an empty state's root otherwise
29
+ */
30
+ async function getGenesisStateRoot(chainId, common) {
31
+ const chainGenesis = common_1.ChainGenesis[chainId];
32
+ return chainGenesis !== undefined ? chainGenesis.stateRoot : genGenesisStateRoot({}, common);
33
+ }
34
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;AAkBA,kDAUC;AAKD,kDAGC;AApCD,+CAAiD;AACjD,yCAAqD;AAIrD;;;;;GAKG;AAEH;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CACvC,YAA0B,EAC1B,MAAc;IAEd,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC/B,SAAS,CAAC,aAAa,CAAC;QACtB,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS;KACzC,CAAC,CAAA;IACF,OAAO,IAAA,yBAAmB,EAAC,YAAY,CAAC,CAAA;AAC1C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CAAC,OAAc,EAAE,MAAc;IACtE,MAAM,YAAY,GAAG,qBAAY,CAAC,OAAO,CAAC,CAAA;IAC1C,OAAO,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;AAC9F,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { Blockchain } from './blockchain.ts';
2
+ export { CasperConsensus, CliqueConsensus, EthashConsensus } from './consensus/index.ts';
3
+ export * from './constructors.ts';
4
+ export { DBOp, DBSaveLookups, DBSetBlockOrHeader, DBSetHashToNumber, DBSetTD, } from './db/helpers.ts';
5
+ export * from './helpers.ts';
6
+ export * from './types.ts';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxF,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,IAAI,EACJ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,GACR,MAAM,iBAAiB,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.DBSetTD = exports.DBSetHashToNumber = exports.DBSetBlockOrHeader = exports.DBSaveLookups = exports.DBOp = exports.EthashConsensus = exports.CliqueConsensus = exports.CasperConsensus = exports.Blockchain = void 0;
18
+ var blockchain_ts_1 = require("./blockchain.js");
19
+ Object.defineProperty(exports, "Blockchain", { enumerable: true, get: function () { return blockchain_ts_1.Blockchain; } });
20
+ var index_ts_1 = require("./consensus/index.js");
21
+ Object.defineProperty(exports, "CasperConsensus", { enumerable: true, get: function () { return index_ts_1.CasperConsensus; } });
22
+ Object.defineProperty(exports, "CliqueConsensus", { enumerable: true, get: function () { return index_ts_1.CliqueConsensus; } });
23
+ Object.defineProperty(exports, "EthashConsensus", { enumerable: true, get: function () { return index_ts_1.EthashConsensus; } });
24
+ __exportStar(require("./constructors.js"), exports);
25
+ var helpers_ts_1 = require("./db/helpers.js");
26
+ Object.defineProperty(exports, "DBOp", { enumerable: true, get: function () { return helpers_ts_1.DBOp; } });
27
+ Object.defineProperty(exports, "DBSaveLookups", { enumerable: true, get: function () { return helpers_ts_1.DBSaveLookups; } });
28
+ Object.defineProperty(exports, "DBSetBlockOrHeader", { enumerable: true, get: function () { return helpers_ts_1.DBSetBlockOrHeader; } });
29
+ Object.defineProperty(exports, "DBSetHashToNumber", { enumerable: true, get: function () { return helpers_ts_1.DBSetHashToNumber; } });
30
+ Object.defineProperty(exports, "DBSetTD", { enumerable: true, get: function () { return helpers_ts_1.DBSetTD; } });
31
+ __exportStar(require("./helpers.js"), exports);
32
+ __exportStar(require("./types.js"), exports);
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAAnC,2GAAA,UAAU,OAAA;AACnB,iDAAwF;AAA/E,2GAAA,eAAe,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,2GAAA,eAAe,OAAA;AAC1D,oDAAiC;AACjC,8CAMwB;AALtB,kGAAA,IAAI,OAAA;AACJ,2GAAA,aAAa,OAAA;AACb,gHAAA,kBAAkB,OAAA;AAClB,+GAAA,iBAAiB,OAAA;AACjB,qGAAA,OAAO,OAAA;AAET,+CAA4B;AAC5B,6CAA0B"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,219 @@
1
+ import type { Block, BlockHeader } from '@feelyourprotocol/block';
2
+ import type { Common, ConsensusAlgorithm, GenesisState } from '@feelyourprotocol/common';
3
+ import type { DB, DBObject } from '@feelyourprotocol/util';
4
+ import type { EventEmitter } from 'eventemitter3';
5
+ import type { Blockchain } from './index.ts';
6
+ export type OnBlock = (block: Block, reorg: boolean) => Promise<void> | void;
7
+ export type BlockchainEvent = {
8
+ deletedCanonicalBlocks: (data: Block[], resolve?: (result?: any) => void) => void;
9
+ };
10
+ export interface BlockchainInterface {
11
+ consensus: Consensus | undefined;
12
+ /**
13
+ * Adds a block to the blockchain.
14
+ *
15
+ * @param block - The block to be added to the blockchain.
16
+ */
17
+ putBlock(block: Block): Promise<void>;
18
+ /**
19
+ * Deletes a block from the blockchain. All child blocks in the chain are
20
+ * deleted and any encountered heads are set to the parent block.
21
+ *
22
+ * @param blockHash - The hash of the block to be deleted
23
+ */
24
+ delBlock(blockHash: Uint8Array): Promise<void>;
25
+ /**
26
+ * Returns a block by its hash or number.
27
+ */
28
+ getBlock(blockId: Uint8Array | number | bigint): Promise<Block>;
29
+ /**
30
+ * Iterates through blocks starting at the specified iterator head and calls
31
+ * the onBlock function on each block.
32
+ *
33
+ * @param name - Name of the state root head
34
+ * @param onBlock - Function called on each block with params (block: Block,
35
+ * @param maxBlocks - optional maximum number of blocks to iterate through
36
+ * reorg: boolean)
37
+ */
38
+ iterator(name: string, onBlock: OnBlock, maxBlocks?: number, releaseLockOnCallback?: boolean): Promise<number>;
39
+ /**
40
+ * Returns a shallow copy of the blockchain that may share state with the original
41
+ */
42
+ shallowCopy(): BlockchainInterface;
43
+ /**
44
+ * Validates a block header, throwing if invalid. It is being validated against the reported `parentHash`.
45
+ * @param header - header to be validated
46
+ * @param height - If this is an uncle header, this is the height of the block that is including it
47
+ */
48
+ validateHeader(header: BlockHeader, height?: bigint): Promise<void>;
49
+ /**
50
+ * Returns the specified iterator head.
51
+ *
52
+ * @param name - Optional name of the iterator head (default: 'vm')
53
+ */
54
+ getIteratorHead(name?: string): Promise<Block>;
55
+ /**
56
+ * Set header hash of a certain `tag`.
57
+ * When calling the iterator, the iterator will start running the first child block after the header hash currently stored.
58
+ * @param tag - The tag to save the headHash to
59
+ * @param headHash - The head hash to save
60
+ */
61
+ setIteratorHead(tag: string, headHash: Uint8Array): Promise<void>;
62
+ /**
63
+ * Gets total difficulty for a block specified by hash and number
64
+ */
65
+ getTotalDifficulty?(hash: Uint8Array, number?: bigint): Promise<bigint>;
66
+ /**
67
+ * Returns the latest full block in the canonical chain.
68
+ */
69
+ getCanonicalHeadBlock(): Promise<Block>;
70
+ /**
71
+ * Optional events emitter
72
+ */
73
+ events?: EventEmitter<BlockchainEvent>;
74
+ }
75
+ export interface GenesisOptions {
76
+ /**
77
+ * The blockchain only initializes successfully if it has a genesis block. If
78
+ * there is no block available in the DB and a `genesisBlock` is provided,
79
+ * then the provided `genesisBlock` will be used as genesis. If no block is
80
+ * present in the DB and no block is provided, then the genesis block as
81
+ * provided from the `common` will be used.
82
+ */
83
+ genesisBlock?: Block;
84
+ /**
85
+ * If you are using a custom chain {@link Common}, pass the genesis state.
86
+ *
87
+ * Pattern 1 (with genesis state see {@link GenesisState} for format):
88
+ *
89
+ * ```javascript
90
+ * {
91
+ * '0x0...01': '0x100', // For EoA
92
+ * }
93
+ * ```
94
+ *
95
+ * Pattern 2 (with complex genesis state, containing contract accounts and storage).
96
+ * Note that in {@link AccountState} there are two
97
+ * accepted types. This allows to easily insert accounts in the genesis state:
98
+ *
99
+ * A complex genesis state with Contract and EoA states would have the following format:
100
+ *
101
+ * ```javascript
102
+ * {
103
+ * '0x0...01': '0x100', // For EoA
104
+ * '0x0...02': ['0x1', '0xRUNTIME_BYTECODE', [[storageKey1, storageValue1], [storageKey2, storageValue2]]] // For contracts
105
+ * }
106
+ * ```
107
+ */
108
+ genesisState?: GenesisState;
109
+ /**
110
+ * State root of the genesis state
111
+ */
112
+ genesisStateRoot?: Uint8Array;
113
+ }
114
+ export type ConsensusDict = {
115
+ [consensusAlgorithm: ConsensusAlgorithm | string]: Consensus;
116
+ };
117
+ /**
118
+ * This are the options that the Blockchain constructor can receive.
119
+ */
120
+ export interface BlockchainOptions extends GenesisOptions {
121
+ /**
122
+ * Specify the chain and hardfork by passing a {@link Common} instance.
123
+ *
124
+ * If not provided this defaults to chain `mainnet` and hardfork `chainstart`
125
+ *
126
+ */
127
+ common?: Common;
128
+ /**
129
+ * Set the HF to the fork determined by the head block and update on head updates.
130
+ *
131
+ * Note: for HFs where the transition is also determined by a total difficulty
132
+ * threshold (merge HF) the calculated TD is additionally taken into account
133
+ * for HF determination.
134
+ *
135
+ * Default: `false` (HF is set to whatever default HF is set by the {@link Common} instance)
136
+ */
137
+ hardforkByHeadBlockNumber?: boolean;
138
+ /**
139
+ * Database to store blocks and metadata.
140
+ * Can be any database implementation that adheres to the `DB` interface
141
+ */
142
+ db?: DB<Uint8Array | string | number, Uint8Array | string | DBObject>;
143
+ /**
144
+ * This flag indicates if protocol-given consistency checks on
145
+ * block headers and included uncles and transactions should be performed,
146
+ * see Block#validate for details.
147
+ *
148
+ */
149
+ validateBlocks?: boolean;
150
+ /**
151
+ * Validate the consensus with the respective consensus implementation passed
152
+ * to `consensusDict` (see respective option) `CasperConsensus` (which effectively
153
+ * does nothing) is available by default.
154
+ *
155
+ * For the build-in validation classes the following validations take place.
156
+ * - 'pow' with 'ethash' algorithm (validates the proof-of-work)
157
+ * - 'poa' with 'clique' algorithm (verifies the block signatures)
158
+ * Default: `false`.
159
+ */
160
+ validateConsensus?: boolean;
161
+ /**
162
+ * Optional dictionary with consensus objects (adhering to the {@link Consensus} interface)
163
+ * if consensus validation is wished for certain consensus algorithms.
164
+ *
165
+ * Since consensus validation moved to the Ethereum consensus layer with Proof-of-Stake
166
+ * consensus is not validated by default. For `ConsensusAlgorithm.Ethash` and
167
+ * `ConsensusAlgorithm.Clique` consensus validation can be activated by passing in the
168
+ * respective consensus validation objects `EthashConsensus` or `CliqueConsensus`.
169
+ *
170
+ * ```ts
171
+ * import { CliqueConsensus, createBlockchain } from '@feelyourprotocol/blockchain'
172
+ * import type { ConsensusDict } from '@feelyourprotocol/blockchain'
173
+ *
174
+ * const consensusDict: ConsensusDict = {}
175
+ * consensusDict[ConsensusAlgorithm.Clique] = new CliqueConsensus()
176
+ * const blockchain = await createBlockchain({ common, consensusDict })
177
+ * ```
178
+ *
179
+ * Additionally it is possible to provide a fully custom consensus implementation.
180
+ * Note that this needs a custom `Common` object passed to the blockchain where
181
+ * the `ConsensusAlgorithm` string matches the string used here.
182
+ */
183
+ consensusDict?: ConsensusDict;
184
+ }
185
+ /**
186
+ * Interface that a consensus class needs to implement.
187
+ */
188
+ export interface Consensus {
189
+ algorithm: ConsensusAlgorithm | string;
190
+ /**
191
+ * Initialize genesis for consensus mechanism
192
+ * @param genesisBlock genesis block
193
+ */
194
+ genesisInit(genesisBlock: Block): Promise<void>;
195
+ /**
196
+ * Set up consensus mechanism
197
+ */
198
+ setup({ blockchain }: ConsensusOptions): Promise<void>;
199
+ /**
200
+ * Validate block consensus parameters
201
+ * @param block block to be validated
202
+ */
203
+ validateConsensus(block: Block): Promise<void>;
204
+ validateDifficulty(header: BlockHeader): Promise<void>;
205
+ /**
206
+ * Update consensus on new block
207
+ * @param block new block
208
+ * @param commonAncestor common ancestor block header (optional)
209
+ * @param ancientHeaders array of ancestor block headers (optional)
210
+ */
211
+ newBlock(block: Block, commonAncestor?: BlockHeader, ancientHeaders?: BlockHeader[]): Promise<void>;
212
+ }
213
+ /**
214
+ * Options when initializing a class that implements the Consensus interface.
215
+ */
216
+ export interface ConsensusOptions {
217
+ blockchain: Blockchain;
218
+ }
219
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAE5E,MAAM,MAAM,eAAe,GAAG;IAC5B,sBAAsB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAA;CAClF,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;IAChC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAErC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAE/D;;;;;;;;OAQG;IACH,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,MAAM,CAAC,CAAA;IAElB;;OAEG;IACH,WAAW,IAAI,mBAAmB,CAAA;IAElC;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEnE;;;;OAIG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAE9C;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjE;;OAEG;IACH,kBAAkB,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvE;;OAEG;IACH,qBAAqB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;IAEvC;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,KAAK,CAAA;IAEpB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,UAAU,CAAA;CAC9B;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAAA;CAC7D,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;;;;OAQG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAEnC;;;OAGG;IACH,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAA;IAErE;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAA;IACtC;;;OAGG;IACH,WAAW,CAAC,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/C;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtD;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9C,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtD;;;;;OAKG;IACH,QAAQ,CACN,KAAK,EAAE,KAAK,EACZ,cAAc,CAAC,EAAE,WAAW,EAC5B,cAAc,CAAC,EAAE,WAAW,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,UAAU,CAAA;CACvB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}