@aztec/merkle-tree 0.31.0 → 0.32.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 (69) hide show
  1. package/dest/hasher_with_stats.d.ts +1 -1
  2. package/dest/hasher_with_stats.d.ts.map +1 -1
  3. package/dest/interfaces/append_only_tree.d.ts +5 -4
  4. package/dest/interfaces/append_only_tree.d.ts.map +1 -1
  5. package/dest/interfaces/indexed_tree.d.ts +6 -4
  6. package/dest/interfaces/indexed_tree.d.ts.map +1 -1
  7. package/dest/interfaces/merkle_tree.d.ts +6 -5
  8. package/dest/interfaces/merkle_tree.d.ts.map +1 -1
  9. package/dest/interfaces/update_only_tree.d.ts +5 -4
  10. package/dest/interfaces/update_only_tree.d.ts.map +1 -1
  11. package/dest/load_tree.d.ts +5 -4
  12. package/dest/load_tree.d.ts.map +1 -1
  13. package/dest/load_tree.js +3 -3
  14. package/dest/new_tree.d.ts +5 -4
  15. package/dest/new_tree.d.ts.map +1 -1
  16. package/dest/new_tree.js +3 -3
  17. package/dest/pedersen.d.ts +1 -1
  18. package/dest/pedersen.d.ts.map +1 -1
  19. package/dest/sha_256.d.ts +1 -1
  20. package/dest/sha_256.d.ts.map +1 -1
  21. package/dest/snapshots/append_only_snapshot.d.ts +11 -9
  22. package/dest/snapshots/append_only_snapshot.d.ts.map +1 -1
  23. package/dest/snapshots/append_only_snapshot.js +13 -8
  24. package/dest/snapshots/base_full_snapshot.d.ts +12 -10
  25. package/dest/snapshots/base_full_snapshot.d.ts.map +1 -1
  26. package/dest/snapshots/base_full_snapshot.js +7 -4
  27. package/dest/snapshots/full_snapshot.d.ts +8 -4
  28. package/dest/snapshots/full_snapshot.d.ts.map +1 -1
  29. package/dest/snapshots/full_snapshot.js +6 -2
  30. package/dest/snapshots/indexed_tree_snapshot.d.ts +6 -6
  31. package/dest/snapshots/indexed_tree_snapshot.d.ts.map +1 -1
  32. package/dest/snapshots/indexed_tree_snapshot.js +2 -2
  33. package/dest/snapshots/snapshot_builder.d.ts +9 -8
  34. package/dest/snapshots/snapshot_builder.d.ts.map +1 -1
  35. package/dest/snapshots/snapshot_builder_test_suite.d.ts +4 -3
  36. package/dest/snapshots/snapshot_builder_test_suite.d.ts.map +1 -1
  37. package/dest/snapshots/snapshot_builder_test_suite.js +5 -2
  38. package/dest/sparse_tree/sparse_tree.d.ts +9 -9
  39. package/dest/sparse_tree/sparse_tree.d.ts.map +1 -1
  40. package/dest/sparse_tree/sparse_tree.js +6 -4
  41. package/dest/standard_indexed_tree/standard_indexed_tree.d.ts +8 -6
  42. package/dest/standard_indexed_tree/standard_indexed_tree.d.ts.map +1 -1
  43. package/dest/standard_indexed_tree/standard_indexed_tree.js +5 -2
  44. package/dest/standard_tree/standard_tree.d.ts +9 -8
  45. package/dest/standard_tree/standard_tree.d.ts.map +1 -1
  46. package/dest/standard_tree/standard_tree.js +5 -3
  47. package/dest/tree_base.d.ts +19 -10
  48. package/dest/tree_base.d.ts.map +1 -1
  49. package/dest/tree_base.js +20 -3
  50. package/package.json +5 -5
  51. package/src/hasher_with_stats.ts +1 -1
  52. package/src/interfaces/append_only_tree.ts +8 -4
  53. package/src/interfaces/indexed_tree.ts +13 -4
  54. package/src/interfaces/merkle_tree.ts +6 -5
  55. package/src/interfaces/update_only_tree.ts +8 -4
  56. package/src/load_tree.ts +16 -6
  57. package/src/new_tree.ts +8 -6
  58. package/src/pedersen.ts +1 -1
  59. package/src/sha_256.ts +1 -1
  60. package/src/snapshots/append_only_snapshot.ts +28 -16
  61. package/src/snapshots/base_full_snapshot.ts +14 -11
  62. package/src/snapshots/full_snapshot.ts +14 -7
  63. package/src/snapshots/indexed_tree_snapshot.ts +10 -10
  64. package/src/snapshots/snapshot_builder.ts +9 -8
  65. package/src/snapshots/snapshot_builder_test_suite.ts +14 -8
  66. package/src/sparse_tree/sparse_tree.ts +13 -10
  67. package/src/standard_indexed_tree/standard_indexed_tree.ts +19 -9
  68. package/src/standard_tree/standard_tree.ts +13 -11
  69. package/src/tree_base.ts +27 -10
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { Hasher } from '@aztec/types/interfaces';
2
+ import { type Hasher } from '@aztec/types/interfaces';
3
3
  /**
4
4
  * A helper class to track stats for a Hasher
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hasher_with_stats.d.ts","sourceRoot":"","sources":["../src/hasher_with_stats.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIjD;;GAEG;AACH,qBAAa,eAAgB,YAAW,MAAM;IAC5C,SAAS,SAAK;IACd,eAAe,SAAK;IACpB,aAAa,2CAAqB;IAClC,mBAAmB,2CAAqB;IAExC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBAErB,MAAM,EAAE,MAAM;IAiB1B,KAAK;;;;;;IAUL,KAAK;CAON"}
1
+ {"version":3,"file":"hasher_with_stats.d.ts","sourceRoot":"","sources":["../src/hasher_with_stats.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAItD;;GAEG;AACH,qBAAa,eAAgB,YAAW,MAAM;IAC5C,SAAS,SAAK;IACd,eAAe,SAAK;IACpB,aAAa,2CAAqB;IAClC,mBAAmB,2CAAqB;IAExC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBAErB,MAAM,EAAE,MAAM;IAiB1B,KAAK;;;;;;IAUL,KAAK;CAON"}
@@ -1,14 +1,15 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js';
3
- import { MerkleTree } from './merkle_tree.js';
2
+ import { type Bufferable } from '@aztec/foundation/serialize';
3
+ import { type TreeSnapshot, type TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js';
4
+ import { type MerkleTree } from './merkle_tree.js';
4
5
  /**
5
6
  * A Merkle tree that supports only appending leaves and not updating existing leaves.
6
7
  */
7
- export interface AppendOnlyTree extends MerkleTree, TreeSnapshotBuilder {
8
+ export interface AppendOnlyTree<T extends Bufferable = Buffer> extends MerkleTree<T>, TreeSnapshotBuilder<TreeSnapshot<T>> {
8
9
  /**
9
10
  * Appends a set of leaf values to the tree.
10
11
  * @param leaves - The set of leaves to be appended.
11
12
  */
12
- appendLeaves(leaves: Buffer[]): Promise<void>;
13
+ appendLeaves(leaves: T[]): Promise<void>;
13
14
  }
14
15
  //# sourceMappingURL=append_only_tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"append_only_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/append_only_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU,EAAE,mBAAmB;IACrE;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C"}
1
+ {"version":3,"file":"append_only_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/append_only_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,CAC3D,SAAQ,UAAU,CAAC,CAAC,CAAC,EACnB,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C"}
@@ -1,7 +1,9 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { SiblingPath } from '@aztec/circuit-types';
3
- import { IndexedTreeLeaf, IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
4
- import { AppendOnlyTree } from './append_only_tree.js';
2
+ import { type SiblingPath } from '@aztec/circuit-types';
3
+ import { type IndexedTreeLeaf, type IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
4
+ import { type IndexedTreeSnapshot, type TreeSnapshot, type TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js';
5
+ import { type AppendOnlyTree } from './append_only_tree.js';
6
+ import { type MerkleTree } from './merkle_tree.js';
5
7
  /**
6
8
  * Factory for creating leaf preimages.
7
9
  */
@@ -69,7 +71,7 @@ export interface BatchInsertionResult<TreeHeight extends number, SubtreeSiblingP
69
71
  /**
70
72
  * Indexed merkle tree.
71
73
  */
72
- export interface IndexedTree extends AppendOnlyTree {
74
+ export interface IndexedTree extends MerkleTree<Buffer>, TreeSnapshotBuilder<IndexedTreeSnapshot>, Omit<AppendOnlyTree<Buffer>, keyof TreeSnapshotBuilder<TreeSnapshot<Buffer>>> {
73
75
  /**
74
76
  * Finds the index of the largest leaf whose value is less than or equal to the provided value.
75
77
  * @param newValue - The new value to be inserted into the tree.
@@ -1 +1 @@
1
- {"version":3,"file":"indexed_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/indexed_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC7F;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAAC;IACpD;;OAEG;IACH,KAAK,IAAI,uBAAuB,CAAC;IACjC;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,uBAAuB,GAAG,uBAAuB,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD;;OAEG;IACH,YAAY,EAAE,uBAAuB,CAAC;IACtC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM;IACtG;;OAEG;IACH,oBAAoB,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;IACxD;;OAEG;IACH,qBAAqB,EAAE,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC7D;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;OAEG;IACH,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD;;;;;OAKG;IACH,sBAAsB,CACpB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,OAAO,GAEzB;QACE;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,cAAc,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,CAAC;IAEd;;;;;OAKG;IACH,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAE3G;;;;;OAKG;IACH,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,aAAa,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAC1G,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC;CACxE"}
1
+ {"version":3,"file":"indexed_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/indexed_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC7F;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAAC;IACpD;;OAEG;IACH,KAAK,IAAI,uBAAuB,CAAC;IACjC;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,uBAAuB,GAAG,uBAAuB,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD;;OAEG;IACH,YAAY,EAAE,uBAAuB,CAAC;IACtC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM;IACtG;;OAEG;IACH,oBAAoB,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;IACxD;;OAEG;IACH,qBAAqB,EAAE,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC7D;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;OAEG;IACH,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WACf,SAAQ,UAAU,CAAC,MAAM,CAAC,EACxB,mBAAmB,CAAC,mBAAmB,CAAC,EACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E;;;;;OAKG;IACH,sBAAsB,CACpB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,OAAO,GAEzB;QACE;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,cAAc,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,CAAC;IAEd;;;;;OAKG;IACH,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAE3G;;;;;OAKG;IACH,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,aAAa,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAC1G,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC;CACxE"}
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { SiblingPath } from '@aztec/circuit-types';
2
+ import { type SiblingPath } from '@aztec/circuit-types';
3
+ import { type Bufferable } from '@aztec/foundation/serialize';
3
4
  /**
4
5
  * Defines the interface for a source of sibling paths.
5
6
  */
@@ -14,7 +15,7 @@ export interface SiblingPathSource {
14
15
  /**
15
16
  * Defines the interface for a Merkle tree.
16
17
  */
17
- export interface MerkleTree extends SiblingPathSource {
18
+ export interface MerkleTree<T extends Bufferable = Buffer> extends SiblingPathSource {
18
19
  /**
19
20
  * Returns the current root of the tree.
20
21
  * @param includeUncommitted - Set to true to include uncommitted updates in the calculated root.
@@ -42,14 +43,14 @@ export interface MerkleTree extends SiblingPathSource {
42
43
  * @param index - The index of the leaf value to be returned.
43
44
  * @param includeUncommitted - Set to true to include uncommitted updates in the data set.
44
45
  */
45
- getLeafValue(index: bigint, includeUncommitted: boolean): Buffer | undefined;
46
+ getLeafValue(index: bigint, includeUncommitted: boolean): T | undefined;
46
47
  /**
47
48
  * Returns the index of a leaf given its value, or undefined if no leaf with that value is found.
48
49
  * @param leaf - The leaf value to look for.
49
50
  * @param includeUncommitted - Indicates whether to include uncommitted data.
50
51
  * @returns The index of the first leaf found with a given value (undefined if not found).
51
52
  */
52
- findLeafIndex(leaf: Buffer, includeUncommitted: boolean): bigint | undefined;
53
+ findLeafIndex(leaf: T, includeUncommitted: boolean): bigint | undefined;
53
54
  /**
54
55
  * Returns the first index containing a leaf value after `startIndex`.
55
56
  * @param leaf - The leaf value to look for.
@@ -57,6 +58,6 @@ export interface MerkleTree extends SiblingPathSource {
57
58
  * @param includeUncommitted - Indicates whether to include uncommitted data.
58
59
  * @returns The index of the first leaf found with a given value (undefined if not found).
59
60
  */
60
- findLeafIndexAfter(leaf: Buffer, startIndex: bigint, includeUncommitted: boolean): bigint | undefined;
61
+ findLeafIndexAfter(leaf: T, startIndex: bigint, includeUncommitted: boolean): bigint | undefined;
61
62
  }
62
63
  //# sourceMappingURL=merkle_tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/merkle_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CACvG;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD;;;OAGG;IACH,OAAO,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAAC;IAE7C;;;OAGG;IACH,YAAY,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAAC;IAElD;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAE7E;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAE7E;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACvG"}
1
+ {"version":3,"file":"merkle_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/merkle_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CACvG;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,iBAAiB;IAClF;;;OAGG;IACH,OAAO,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAAC;IAE7C;;;OAGG;IACH,YAAY,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAAC;IAElD;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC;IAExE;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAExE;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAClG"}
@@ -1,15 +1,16 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js';
3
- import { MerkleTree } from './merkle_tree.js';
2
+ import { type Bufferable } from '@aztec/foundation/serialize';
3
+ import { type TreeSnapshot, type TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js';
4
+ import { type MerkleTree } from './merkle_tree.js';
4
5
  /**
5
6
  * A Merkle tree that supports updates at arbitrary indices but not appending.
6
7
  */
7
- export interface UpdateOnlyTree extends MerkleTree, TreeSnapshotBuilder {
8
+ export interface UpdateOnlyTree<T extends Bufferable = Buffer> extends MerkleTree<T>, TreeSnapshotBuilder<TreeSnapshot<T>> {
8
9
  /**
9
10
  * Updates a leaf at a given index in the tree.
10
11
  * @param leaf - The leaf value to be updated.
11
12
  * @param index - The leaf to be updated.
12
13
  */
13
- updateLeaf(leaf: Buffer, index: bigint): Promise<void>;
14
+ updateLeaf(leaf: T, index: bigint): Promise<void>;
14
15
  }
15
16
  //# sourceMappingURL=update_only_tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update_only_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/update_only_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU,EAAE,mBAAmB;IACrE;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD"}
1
+ {"version":3,"file":"update_only_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/update_only_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,CAC3D,SAAQ,UAAU,CAAC,CAAC,CAAC,EACnB,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"}
@@ -1,7 +1,8 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { AztecKVStore } from '@aztec/kv-store';
3
- import { Hasher } from '@aztec/types/interfaces';
4
- import { TreeBase } from './tree_base.js';
2
+ import { type Bufferable, type FromBuffer } from '@aztec/foundation/serialize';
3
+ import { type AztecKVStore } from '@aztec/kv-store';
4
+ import { type Hasher } from '@aztec/types/interfaces';
5
+ import { type TreeBase } from './tree_base.js';
5
6
  /**
6
7
  * Creates a new tree and sets its root, depth and size based on the meta data which are associated with the name.
7
8
  * @param c - The class of the tree to be instantiated.
@@ -10,5 +11,5 @@ import { TreeBase } from './tree_base.js';
10
11
  * @param name - Name of the tree.
11
12
  * @returns The newly created tree.
12
13
  */
13
- export declare function loadTree<T extends TreeBase>(c: new (store: AztecKVStore, hasher: Hasher, name: string, depth: number, size: bigint, root: Buffer) => T, store: AztecKVStore, hasher: Hasher, name: string): Promise<T>;
14
+ export declare function loadTree<T extends TreeBase<Bufferable>, D extends FromBuffer<Bufferable>>(c: new (store: AztecKVStore, hasher: Hasher, name: string, depth: number, size: bigint, deserializer: D, root: Buffer) => T, store: AztecKVStore, hasher: Hasher, name: string, deserializer: D): Promise<T>;
14
15
  //# sourceMappingURL=load_tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load_tree.d.ts","sourceRoot":"","sources":["../src/load_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EACzC,CAAC,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,EAC1G,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,CAAC,CAIZ"}
1
+ {"version":3,"file":"load_tree.d.ts","sourceRoot":"","sources":["../src/load_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAE5D;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,EACvF,CAAC,EAAE,KACD,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,EACf,IAAI,EAAE,MAAM,KACT,CAAC,EACN,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,CAAC,CAIZ"}
package/dest/load_tree.js CHANGED
@@ -7,9 +7,9 @@ import { getTreeMeta } from './tree_base.js';
7
7
  * @param name - Name of the tree.
8
8
  * @returns The newly created tree.
9
9
  */
10
- export function loadTree(c, store, hasher, name) {
10
+ export function loadTree(c, store, hasher, name, deserializer) {
11
11
  const { root, depth, size } = getTreeMeta(store, name);
12
- const tree = new c(store, hasher, name, depth, size, root);
12
+ const tree = new c(store, hasher, name, depth, size, deserializer, root);
13
13
  return Promise.resolve(tree);
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF90cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQVksV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLENBQTBHLEVBQzFHLEtBQW1CLEVBQ25CLE1BQWMsRUFDZCxJQUFZO0lBRVosTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDIn0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF90cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQWlCLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUN0QixDQVFNLEVBQ04sS0FBbUIsRUFDbkIsTUFBYyxFQUNkLElBQVksRUFDWixZQUFlO0lBRWYsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6RSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQyJ9
@@ -1,6 +1,7 @@
1
- import { AztecKVStore } from '@aztec/kv-store';
2
- import { Hasher } from '@aztec/types/interfaces';
3
- import { TreeBase } from './tree_base.js';
1
+ import { type Bufferable, type FromBuffer } from '@aztec/foundation/serialize';
2
+ import { type AztecKVStore } from '@aztec/kv-store';
3
+ import { type Hasher } from '@aztec/types/interfaces';
4
+ import { type TreeBase } from './tree_base.js';
4
5
  /**
5
6
  * Creates a new tree.
6
7
  * @param c - The class of the tree to be instantiated.
@@ -11,5 +12,5 @@ import { TreeBase } from './tree_base.js';
11
12
  * @param prefilledSize - A number of leaves that are prefilled with values.
12
13
  * @returns The newly created tree.
13
14
  */
14
- export declare function newTree<T extends TreeBase>(c: new (store: AztecKVStore, hasher: Hasher, name: string, depth: number, size: bigint) => T, store: AztecKVStore, hasher: Hasher, name: string, depth: number, prefilledSize?: number): Promise<T>;
15
+ export declare function newTree<T extends TreeBase<Bufferable>, D extends FromBuffer<Bufferable>>(c: new (store: AztecKVStore, hasher: Hasher, name: string, depth: number, size: bigint, deserializer: D) => T, store: AztecKVStore, hasher: Hasher, name: string, deserializer: D, depth: number, prefilledSize?: number): Promise<T>;
15
16
  //# sourceMappingURL=new_tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"new_tree.d.ts","sourceRoot":"","sources":["../src/new_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAC9C,CAAC,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,EAC5F,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,aAAa,SAAI,GAChB,OAAO,CAAC,CAAC,CAAC,CAIZ"}
1
+ {"version":3,"file":"new_tree.d.ts","sourceRoot":"","sources":["../src/new_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,EAC5F,CAAC,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,EAC7G,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,EACf,KAAK,EAAE,MAAM,EACb,aAAa,SAAI,GAChB,OAAO,CAAC,CAAC,CAAC,CAIZ"}
package/dest/new_tree.js CHANGED
@@ -8,9 +8,9 @@
8
8
  * @param prefilledSize - A number of leaves that are prefilled with values.
9
9
  * @returns The newly created tree.
10
10
  */
11
- export async function newTree(c, store, hasher, name, depth, prefilledSize = 1) {
12
- const tree = new c(store, hasher, name, depth, 0n);
11
+ export async function newTree(c, store, hasher, name, deserializer, depth, prefilledSize = 1) {
12
+ const tree = new c(store, hasher, name, depth, 0n, deserializer);
13
13
  await tree.init(prefilledSize);
14
14
  return tree;
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3X3RyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV3X3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQzNCLENBQTRGLEVBQzVGLEtBQW1CLEVBQ25CLE1BQWMsRUFDZCxJQUFZLEVBQ1osS0FBYSxFQUNiLGFBQWEsR0FBRyxDQUFDO0lBRWpCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3X3RyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV3X3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQzNCLENBQTZHLEVBQzdHLEtBQW1CLEVBQ25CLE1BQWMsRUFDZCxJQUFZLEVBQ1osWUFBZSxFQUNmLEtBQWEsRUFDYixhQUFhLEdBQUcsQ0FBQztJQUVqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ==
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { Hasher } from '@aztec/types/interfaces';
2
+ import { type Hasher } from '@aztec/types/interfaces';
3
3
  /**
4
4
  * A helper class encapsulating Pedersen hash functionality.
5
5
  * @deprecated Don't call pedersen directly in production code. Instead, create suitably-named functions for specific
@@ -1 +1 @@
1
- {"version":3,"file":"pedersen.d.ts","sourceRoot":"","sources":["../src/pedersen.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,QAAS,YAAW,MAAM;IAK9B,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAQ9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CAG5C"}
1
+ {"version":3,"file":"pedersen.d.ts","sourceRoot":"","sources":["../src/pedersen.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;GAIG;AACH,qBAAa,QAAS,YAAW,MAAM;IAK9B,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAQ9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CAG5C"}
package/dest/sha_256.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { Hasher } from '@aztec/types/interfaces';
2
+ import { type Hasher } from '@aztec/types/interfaces';
3
3
  /**
4
4
  * A helper class encapsulating SHA256 hash functionality.
5
5
  * @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
@@ -1 +1 @@
1
- {"version":3,"file":"sha_256.d.ts","sourceRoot":"","sources":["../src/sha_256.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,MAAO,YAAW,MAAM;IAK5B,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAQ9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CAG5C;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,MAAM;IAKjC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAQ9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CAG5C"}
1
+ {"version":3,"file":"sha_256.d.ts","sourceRoot":"","sources":["../src/sha_256.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;GAIG;AACH,qBAAa,MAAO,YAAW,MAAM;IAK5B,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAQ9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CAG5C;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,MAAM;IAKjC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAQ9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CAG5C"}
@@ -1,8 +1,9 @@
1
- import { AztecKVStore } from '@aztec/kv-store';
2
- import { Hasher } from '@aztec/types/interfaces';
3
- import { AppendOnlyTree } from '../interfaces/append_only_tree.js';
4
- import { TreeBase } from '../tree_base.js';
5
- import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
1
+ import { type Bufferable, type FromBuffer } from '@aztec/foundation/serialize';
2
+ import { type AztecKVStore } from '@aztec/kv-store';
3
+ import { type Hasher } from '@aztec/types/interfaces';
4
+ import { type AppendOnlyTree } from '../interfaces/append_only_tree.js';
5
+ import { type TreeBase } from '../tree_base.js';
6
+ import { type TreeSnapshot, type TreeSnapshotBuilder } from './snapshot_builder.js';
6
7
  /**
7
8
  * A more space-efficient way of storing snapshots of AppendOnlyTrees that trades space need for slower
8
9
  * sibling path reads.
@@ -18,13 +19,14 @@ import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
18
19
  * Best case: O(H) database reads + O(1) hashes
19
20
  * Worst case: O(H) database reads + O(H) hashes
20
21
  */
21
- export declare class AppendOnlySnapshotBuilder implements TreeSnapshotBuilder {
22
+ export declare class AppendOnlySnapshotBuilder<T extends Bufferable> implements TreeSnapshotBuilder<TreeSnapshot<T>> {
22
23
  #private;
23
24
  private db;
24
25
  private tree;
25
26
  private hasher;
26
- constructor(db: AztecKVStore, tree: TreeBase & AppendOnlyTree, hasher: Hasher);
27
- getSnapshot(block: number): Promise<TreeSnapshot>;
28
- snapshot(block: number): Promise<TreeSnapshot>;
27
+ private deserializer;
28
+ constructor(db: AztecKVStore, tree: TreeBase<T> & AppendOnlyTree<T>, hasher: Hasher, deserializer: FromBuffer<T>);
29
+ getSnapshot(block: number): Promise<TreeSnapshot<T>>;
30
+ snapshot(block: number): Promise<TreeSnapshot<T>>;
29
31
  }
30
32
  //# sourceMappingURL=append_only_snapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"append_only_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/append_only_snapshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkB1E;;;;;;;;;;;;;;GAcG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;;IAKvD,OAAO,CAAC,EAAE;IAAgB,OAAO,CAAC,IAAI;IAA6B,OAAO,CAAC,MAAM;gBAAzE,EAAE,EAAE,YAAY,EAAU,IAAI,EAAE,QAAQ,GAAG,cAAc,EAAU,MAAM,EAAE,MAAM;IAOrG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoBjD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CA0E/C"}
1
+ {"version":3,"file":"append_only_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/append_only_snapshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkBpF;;;;;;;;;;;;;;GAcG;AACH,qBAAa,yBAAyB,CAAC,CAAC,SAAS,UAAU,CAAE,YAAW,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;IAMxG,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;gBAHZ,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAQrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAqBpD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CA4ElD"}
@@ -1,6 +1,7 @@
1
1
  var _AppendOnlySnapshotBuilder_instances, _AppendOnlySnapshotBuilder_nodeValue, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, _AppendOnlySnapshotBuilder_snapshotMetadata, _AppendOnlySnapshotBuilder_getSnapshotMeta, _AppendOnlySnapshot_instances, _AppendOnlySnapshot_getHistoricalNodeValue, _AppendOnlySnapshot_getBlockNumberThatModifiedNode;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  import { SiblingPath } from '@aztec/circuit-types';
4
+ import { serializeToBuffer } from '@aztec/foundation/serialize';
4
5
  // stores the last block that modified this node
5
6
  const nodeModifiedAtBlockKey = (level, index) => `node:${level}:${index}:modifiedAtBlock`;
6
7
  // stores the value of the node at the above block
@@ -21,11 +22,12 @@ const historicalNodeKey = (level, index) => `node:${level}:${index}:value`;
21
22
  * Worst case: O(H) database reads + O(H) hashes
22
23
  */
23
24
  export class AppendOnlySnapshotBuilder {
24
- constructor(db, tree, hasher) {
25
+ constructor(db, tree, hasher, deserializer) {
25
26
  _AppendOnlySnapshotBuilder_instances.add(this);
26
27
  this.db = db;
27
28
  this.tree = tree;
28
29
  this.hasher = hasher;
30
+ this.deserializer = deserializer;
29
31
  _AppendOnlySnapshotBuilder_nodeValue.set(this, void 0);
30
32
  _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock.set(this, void 0);
31
33
  _AppendOnlySnapshotBuilder_snapshotMetadata.set(this, void 0);
@@ -39,14 +41,14 @@ export class AppendOnlySnapshotBuilder {
39
41
  if (typeof meta === 'undefined') {
40
42
  return Promise.reject(new Error(`Snapshot for tree ${this.tree.getName()} at block ${block} does not exist`));
41
43
  }
42
- return Promise.resolve(new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, meta.numLeaves, meta.root, this.tree, this.hasher));
44
+ return Promise.resolve(new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, meta.numLeaves, meta.root, this.tree, this.hasher, this.deserializer));
43
45
  }
44
46
  snapshot(block) {
45
47
  return this.db.transaction(() => {
46
48
  const meta = __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_instances, "m", _AppendOnlySnapshotBuilder_getSnapshotMeta).call(this, block);
47
49
  if (typeof meta !== 'undefined') {
48
50
  // no-op, we already have a snapshot
49
- return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, meta.numLeaves, meta.root, this.tree, this.hasher);
51
+ return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, meta.numLeaves, meta.root, this.tree, this.hasher, this.deserializer);
50
52
  }
51
53
  const root = this.tree.getRoot(false);
52
54
  const depth = this.tree.getDepth();
@@ -84,7 +86,7 @@ export class AppendOnlySnapshotBuilder {
84
86
  numLeaves,
85
87
  root,
86
88
  });
87
- return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, numLeaves, root, this.tree, this.hasher);
89
+ return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, numLeaves, root, this.tree, this.hasher, this.deserializer);
88
90
  });
89
91
  }
90
92
  }
@@ -95,7 +97,7 @@ _AppendOnlySnapshotBuilder_nodeValue = new WeakMap(), _AppendOnlySnapshotBuilder
95
97
  * a
96
98
  */
97
99
  class AppendOnlySnapshot {
98
- constructor(nodes, nodeHistory, block, leafCount, historicalRoot, tree, hasher) {
100
+ constructor(nodes, nodeHistory, block, leafCount, historicalRoot, tree, hasher, deserializer) {
99
101
  _AppendOnlySnapshot_instances.add(this);
100
102
  this.nodes = nodes;
101
103
  this.nodeHistory = nodeHistory;
@@ -104,6 +106,7 @@ class AppendOnlySnapshot {
104
106
  this.historicalRoot = historicalRoot;
105
107
  this.tree = tree;
106
108
  this.hasher = hasher;
109
+ this.deserializer = deserializer;
107
110
  }
108
111
  getSiblingPath(index) {
109
112
  const path = [];
@@ -138,7 +141,8 @@ class AppendOnlySnapshot {
138
141
  }
139
142
  // leaf was set some time in the past
140
143
  if (blockNumber <= this.block) {
141
- return this.nodes.get(historicalNodeKey(leafLevel, index));
144
+ const val = this.nodes.get(historicalNodeKey(leafLevel, index));
145
+ return val ? this.deserializer.fromBuffer(val) : undefined;
142
146
  }
143
147
  // leaf has been set but in a block in the future
144
148
  return undefined;
@@ -147,10 +151,11 @@ class AppendOnlySnapshot {
147
151
  return this.findLeafIndexAfter(value, 0n);
148
152
  }
149
153
  findLeafIndexAfter(value, startIndex) {
154
+ const valueBuffer = serializeToBuffer(value);
150
155
  const numLeaves = this.getNumLeaves();
151
156
  for (let i = startIndex; i < numLeaves; i++) {
152
157
  const currentValue = this.getLeafValue(i);
153
- if (currentValue && currentValue.equals(value)) {
158
+ if (currentValue && serializeToBuffer(currentValue).equals(valueBuffer)) {
154
159
  return i;
155
160
  }
156
161
  }
@@ -189,4 +194,4 @@ _AppendOnlySnapshot_instances = new WeakSet(), _AppendOnlySnapshot_getHistorical
189
194
  }, _AppendOnlySnapshot_getBlockNumberThatModifiedNode = function _AppendOnlySnapshot_getBlockNumberThatModifiedNode(level, index) {
190
195
  return this.nodeHistory.get(nodeModifiedAtBlockKey(level, index));
191
196
  };
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kX29ubHlfc25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc25hcHNob3RzL2FwcGVuZF9vbmx5X3NuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUW5ELGdEQUFnRDtBQUNoRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksS0FBSyxrQkFBa0IsQ0FBQztBQUUxRyxrREFBa0Q7QUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEtBQUssUUFBUSxDQUFDO0FBWTNGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxZQUFvQixFQUFnQixFQUFVLElBQStCLEVBQVUsTUFBYzs7UUFBakYsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUFVLFNBQUksR0FBSixJQUFJLENBQTJCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUpyRyx1REFBbUU7UUFDbkUscUVBQXNGO1FBQ3RGLDhEQUFzRDtRQUdwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsdUJBQUEsSUFBSSx3Q0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLHdCQUF3QixRQUFRLE9BQU8sQ0FBQyxNQUFBLENBQUM7UUFDdEUsdUJBQUEsSUFBSSxzREFBNEIsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsUUFBUSxRQUFRLENBQUMsTUFBQSxDQUFDO1FBQ3BGLHVCQUFBLElBQUksK0NBQXFCLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLFFBQVEsb0JBQW9CLENBQUMsTUFBQSxDQUFDO0lBQzVGLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixNQUFNLElBQUksR0FBRyx1QkFBQSxJQUFJLHdGQUFpQixNQUFyQixJQUFJLEVBQWtCLEtBQUssQ0FBQyxDQUFDO1FBRTFDLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDaEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ2hILENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLElBQUksa0JBQWtCLENBQ3BCLHVCQUFBLElBQUksNENBQVcsRUFDZix1QkFBQSxJQUFJLDBEQUF5QixFQUM3QixLQUFLLEVBQ0wsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEdBQUcsdUJBQUEsSUFBSSx3RkFBaUIsTUFBckIsSUFBSSxFQUFrQixLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNoQyxvQ0FBb0M7Z0JBQ3BDLE9BQU8sSUFBSSxrQkFBa0IsQ0FDM0IsdUJBQUEsSUFBSSw0Q0FBVyxFQUNmLHVCQUFBLElBQUksMERBQXlCLEVBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEtBQUssR0FBK0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUUxRCw2Q0FBNkM7WUFDN0MsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFHLENBQUM7Z0JBRTVDLE1BQU0sZUFBZSxHQUFHLHVCQUFBLElBQUksNENBQVcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQ3RELGtFQUFrRTtvQkFDbEUsd0VBQXdFO29CQUN4RSxLQUFLLHVCQUFBLElBQUksMERBQXlCLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDcEYsS0FBSyx1QkFBQSxJQUFJLDRDQUFXLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEUsQ0FBQztxQkFBTSxDQUFDO29CQUNOLCtFQUErRTtvQkFDL0UsU0FBUztnQkFDWCxDQUFDO2dCQUVELElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQztvQkFDdEIsZ0RBQWdEO29CQUNoRCxxRUFBcUU7b0JBQ3JFLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCx5RUFBeUU7Z0JBQ3pFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFN0csSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBRUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELEtBQUssdUJBQUEsSUFBSSxtREFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUNyQyxTQUFTO2dCQUNULElBQUk7YUFDTCxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksa0JBQWtCLENBQzNCLHVCQUFBLElBQUksNENBQVcsRUFDZix1QkFBQSxJQUFJLDBEQUF5QixFQUM3QixLQUFLLEVBQ0wsU0FBUyxFQUNULElBQUksRUFDSixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUtGOzhVQUhrQixLQUFhO0lBQzVCLE9BQU8sdUJBQUEsSUFBSSxtREFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUdIOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0I7SUFDdEIsWUFDVSxLQUErQixFQUMvQixXQUFxQyxFQUNyQyxLQUFhLEVBQ2IsU0FBaUIsRUFDakIsY0FBc0IsRUFDdEIsSUFBK0IsRUFDL0IsTUFBYzs7UUFOZCxVQUFLLEdBQUwsS0FBSyxDQUEwQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBMEI7UUFDckMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUcsY0FBYyxDQUFtQixLQUFhO1FBQ25ELE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25DLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVsQixPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixNQUFNLE9BQU8sR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQzlCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUV2RCxNQUFNLE9BQU8sR0FBRyx1QkFBQSxJQUFJLGlGQUF3QixNQUE1QixJQUFJLEVBQXlCLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRW5CLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxXQUFXLENBQUksS0FBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPO1FBQ0wscUVBQXFFO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLHVCQUFBLElBQUkseUZBQWdDLE1BQXBDLElBQUksRUFBaUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTNFLDJCQUEyQjtRQUMzQixJQUFJLE9BQU8sV0FBVyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBMENELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYSxFQUFFLFVBQWtCO1FBQ2xELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7Z0pBdER5QixLQUFhLEVBQUUsS0FBYTtJQUNsRCxNQUFNLFdBQVcsR0FBRyx1QkFBQSxJQUFJLHlGQUFnQyxNQUFwQyxJQUFJLEVBQWlDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUV2RSwwQkFBMEI7SUFDMUIsSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxnRkFBZ0Y7SUFDaEYsbUZBQW1GO0lBQ25GLHNDQUFzQztJQUN0QyxFQUFFO0lBQ0YsMERBQTBEO0lBQzFELGdGQUFnRjtJQUNoRixvRUFBb0U7SUFDcEUscURBQXFEO0lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsTUFBTSxTQUFTLEdBQUcsS0FBSyxHQUFHLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3RELElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1FBQ2pCLHVCQUFBLElBQUksaUZBQXdCLE1BQTVCLElBQUksRUFBeUIsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ25ELHVCQUFBLElBQUksaUZBQXdCLE1BQTVCLElBQUksRUFBeUIsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztLQUN6RCxDQUFDO0lBRUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxtSEFFK0IsS0FBYSxFQUFFLEtBQWE7SUFDMUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDIn0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kX29ubHlfc25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc25hcHNob3RzL2FwcGVuZF9vbmx5X3NuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBb0MsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVFsRyxnREFBZ0Q7QUFDaEQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEtBQUssa0JBQWtCLENBQUM7QUFFMUcsa0RBQWtEO0FBQ2xELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxLQUFLLFFBQVEsQ0FBQztBQVkzRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFLcEMsWUFDVSxFQUFnQixFQUNoQixJQUFxQyxFQUNyQyxNQUFjLEVBQ2QsWUFBMkI7O1FBSDNCLE9BQUUsR0FBRixFQUFFLENBQWM7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBaUM7UUFDckMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBUnJDLHVEQUFtRTtRQUNuRSxxRUFBc0Y7UUFDdEYsOERBQXNEO1FBUXBELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyx1QkFBQSxJQUFJLHdDQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLFFBQVEsT0FBTyxDQUFDLE1BQUEsQ0FBQztRQUN0RSx1QkFBQSxJQUFJLHNEQUE0QixFQUFFLENBQUMsT0FBTyxDQUFDLHVCQUF1QixRQUFRLFFBQVEsQ0FBQyxNQUFBLENBQUM7UUFDcEYsdUJBQUEsSUFBSSwrQ0FBcUIs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
@@ -1,8 +1,9 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import { SiblingPath } from '@aztec/circuit-types';
3
- import { AztecKVStore, AztecMap } from '@aztec/kv-store';
4
- import { TreeBase } from '../tree_base.js';
5
- import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
3
+ import { type Bufferable, type FromBuffer } from '@aztec/foundation/serialize';
4
+ import { type AztecKVStore, type AztecMap } from '@aztec/kv-store';
5
+ import { type TreeBase } from '../tree_base.js';
6
+ import { type TreeSnapshot, type TreeSnapshotBuilder } from './snapshot_builder.js';
6
7
  /**
7
8
  * Metadata for a snapshot, per block
8
9
  */
@@ -28,7 +29,7 @@ type SnapshotMetadata = {
28
29
  * Worst case space complexity: O(N * M)
29
30
  * Sibling path access: O(H) database reads
30
31
  */
31
- export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase, S extends TreeSnapshot> implements TreeSnapshotBuilder<S> {
32
+ export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase<Bufferable>, S extends TreeSnapshot<Bufferable>> implements TreeSnapshotBuilder<S> {
32
33
  #private;
33
34
  protected db: AztecKVStore;
34
35
  protected tree: T;
@@ -43,21 +44,22 @@ export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase, S
43
44
  /**
44
45
  * A source of sibling paths from a snapshot tree
45
46
  */
46
- export declare class BaseFullTreeSnapshot implements TreeSnapshot {
47
+ export declare class BaseFullTreeSnapshot<T extends Bufferable> implements TreeSnapshot<T> {
47
48
  #private;
48
49
  protected db: AztecMap<string, [Buffer, Buffer]>;
49
50
  protected historicRoot: Buffer;
50
51
  protected numLeaves: bigint;
51
- protected tree: TreeBase;
52
- constructor(db: AztecMap<string, [Buffer, Buffer]>, historicRoot: Buffer, numLeaves: bigint, tree: TreeBase);
52
+ protected tree: TreeBase<T>;
53
+ protected deserializer: FromBuffer<T>;
54
+ constructor(db: AztecMap<string, [Buffer, Buffer]>, historicRoot: Buffer, numLeaves: bigint, tree: TreeBase<T>, deserializer: FromBuffer<T>);
53
55
  getSiblingPath<N extends number>(index: bigint): SiblingPath<N>;
54
- getLeafValue(index: bigint): Buffer | undefined;
56
+ getLeafValue(index: bigint): T | undefined;
55
57
  getDepth(): number;
56
58
  getRoot(): Buffer;
57
59
  getNumLeaves(): bigint;
58
60
  protected pathFromRootToLeaf(leafIndex: bigint): Generator<Buffer[], void, unknown>;
59
- findLeafIndex(value: Buffer): bigint | undefined;
60
- findLeafIndexAfter(value: Buffer, startIndex: bigint): bigint | undefined;
61
+ findLeafIndex(value: T): bigint | undefined;
62
+ findLeafIndexAfter(value: T, startIndex: bigint): bigint | undefined;
61
63
  }
62
64
  export {};
63
65
  //# sourceMappingURL=base_full_snapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base_full_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/base_full_snapshot.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;GAEG;AACH,KAAK,gBAAgB,GAAG;IACtB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,YAAY,CAC1F,YAAW,mBAAmB,CAAC,CAAC,CAAC;;IAKrB,SAAS,CAAC,EAAE,EAAE,YAAY;IAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAHzD,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAEzC,EAAE,EAAE,YAAY,EAAY,IAAI,EAAE,CAAC;IAKzD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAwDnC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAEzD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAUxC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;CAKpE;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,YAAY;;IAErD,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,SAAS,CAAC,YAAY,EAAE,MAAM;IAC9B,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,IAAI,EAAE,QAAQ;gBAHd,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ;IAG1B,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAc/D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAS/C,QAAQ,IAAI,MAAM;IAIlB,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;IAItB,SAAS,CAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAwC/C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAUjF"}
1
+ {"version":3,"file":"base_full_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/base_full_snapshot.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEpF;;GAEG;AACH,KAAK,gBAAgB,GAAG;IACtB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,YAAY,CAAC,UAAU,CAAC,CAClH,YAAW,mBAAmB,CAAC,CAAC,CAAC;;IAKrB,SAAS,CAAC,EAAE,EAAE,YAAY;IAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAHzD,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAEzC,EAAE,EAAE,YAAY,EAAY,IAAI,EAAE,CAAC;IAKzD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAwDnC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAEzD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAUxC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;CAKpE;AAED;;GAEG;AACH,qBAAa,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;;IAE9E,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,SAAS,CAAC,YAAY,EAAE,MAAM;IAC9B,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;gBAJ3B,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAGvC,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAc/D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAS1C,QAAQ,IAAI,MAAM;IAIlB,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;IAItB,SAAS,CAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAwC/C,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS;IAIpC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAW5E"}
@@ -1,6 +1,7 @@
1
1
  var _BaseFullTreeSnapshotBuilder_instances, _BaseFullTreeSnapshotBuilder_getSnapshotMeta, _BaseFullTreeSnapshot_instances, _BaseFullTreeSnapshot_getPathFromRoot;
2
2
  import { __classPrivateFieldGet } from "tslib";
3
3
  import { SiblingPath } from '@aztec/circuit-types';
4
+ import { serializeToBuffer } from '@aztec/foundation/serialize';
4
5
  /**
5
6
  * Builds a full snapshot of a tree. This implementation works for any Merkle tree and stores
6
7
  * it in a database in a similar way to how a tree is stored in memory, using pointers.
@@ -87,12 +88,13 @@ _BaseFullTreeSnapshotBuilder_instances = new WeakSet(), _BaseFullTreeSnapshotBui
87
88
  * A source of sibling paths from a snapshot tree
88
89
  */
89
90
  export class BaseFullTreeSnapshot {
90
- constructor(db, historicRoot, numLeaves, tree) {
91
+ constructor(db, historicRoot, numLeaves, tree, deserializer) {
91
92
  _BaseFullTreeSnapshot_instances.add(this);
92
93
  this.db = db;
93
94
  this.historicRoot = historicRoot;
94
95
  this.numLeaves = numLeaves;
95
96
  this.tree = tree;
97
+ this.deserializer = deserializer;
96
98
  }
97
99
  getSiblingPath(index) {
98
100
  const siblings = [];
@@ -109,7 +111,7 @@ export class BaseFullTreeSnapshot {
109
111
  for (const [node, _sibling] of this.pathFromRootToLeaf(index)) {
110
112
  leafNode = node;
111
113
  }
112
- return leafNode;
114
+ return leafNode ? this.deserializer.fromBuffer(leafNode) : undefined;
113
115
  }
114
116
  getDepth() {
115
117
  return this.tree.getDepth();
@@ -141,9 +143,10 @@ export class BaseFullTreeSnapshot {
141
143
  }
142
144
  findLeafIndexAfter(value, startIndex) {
143
145
  const numLeaves = this.getNumLeaves();
146
+ const buffer = serializeToBuffer(value);
144
147
  for (let i = startIndex; i < numLeaves; i++) {
145
148
  const currentValue = this.getLeafValue(i);
146
- if (currentValue && currentValue.equals(value)) {
149
+ if (currentValue && serializeToBuffer(currentValue).equals(buffer)) {
147
150
  return i;
148
151
  }
149
152
  }
@@ -161,4 +164,4 @@ _BaseFullTreeSnapshot_instances = new WeakSet(), _BaseFullTreeSnapshot_getPathFr
161
164
  path.reverse();
162
165
  return path;
163
166
  };
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9mdWxsX3NuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NuYXBzaG90cy9iYXNlX2Z1bGxfc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFnQm5EOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sT0FBZ0IsMkJBQTJCO0lBTS9DLFlBQXNCLEVBQWdCLEVBQVksSUFBTzs7UUFBbkMsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUFZLFNBQUksR0FBSixJQUFJLENBQUc7UUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUM5QixNQUFNLGdCQUFnQixHQUFHLHVCQUFBLElBQUksNEZBQWlCLE1BQXJCLElBQUksRUFBa0IsS0FBSyxDQUFDLENBQUM7WUFFdEQsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlFLENBQUM7WUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUErQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTFELDBFQUEwRTtZQUMxRSxpQ0FBaUM7WUFDakMseUNBQXlDO1lBQ3pDLDBDQUEwQztZQUMxQyxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUcsQ0FBQztnQkFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsMERBQTBEO2dCQUMxRCx3RUFBd0U7Z0JBQ3hFLDJDQUEyQztnQkFDM0MsK0ZBQStGO2dCQUMvRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQzVCLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7b0JBQ3RCLGdEQUFnRDtvQkFDaEQscUVBQXFFO29CQUNyRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDekIsU0FBUztnQkFDWCxDQUFDO2dCQUVELE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFckcsc0VBQXNFO2dCQUN0RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRWxELEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDakUsdURBQXVEO2dCQUN2RCxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFFRCxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7WUFDSCxDQUFDO1lBRUQsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsVUFBVSxDQUFDLE1BQWMsRUFBRSxLQUFhLElBQVMsQ0FBQztJQUU1RCxXQUFXLENBQUMsT0FBZTtRQUN6QixNQUFNLGdCQUFnQixHQUFHLHVCQUFBLElBQUksNEZBQWlCLE1BQXJCLElBQUksRUFBa0IsT0FBTyxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFdBQVcsT0FBTyw0QkFBNEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztDQU9GOzZKQUhrQixLQUFhO0lBQzVCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBR0g7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQ1ksRUFBc0MsRUFDdEMsWUFBb0IsRUFDcEIsU0FBaUIsRUFDakIsSUFBYzs7UUFIZCxPQUFFLEdBQUYsRUFBRSxDQUFvQztRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQVU7SUFDdkIsQ0FBQztJQUVKLGNBQWMsQ0FBbUIsS0FBYTtRQUM1QyxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFFOUIsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELDJFQUEyRTtRQUMzRSxvRUFBb0U7UUFDcEUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRW5CLE9BQU8sSUFBSSxXQUFXLENBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxRQUFRLEdBQXVCLFNBQVMsQ0FBQztRQUM3QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUQsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVTLENBQUMsa0JBQWtCLENBQUMsU0FBaUI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMvQixNQUFNLFlBQVksR0FBRyx1QkFBQSxJQUFJLDhFQUFpQixNQUFyQixJQUFJLEVBQWtCLFNBQVMsQ0FBQyxDQUFDO1FBRXRELElBQUksSUFBSSxHQUFXLElBQUksQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLDhGQUE4RjtZQUM5RixNQUFNLFFBQVEsR0FBcUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJO2dCQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzdCLENBQUM7WUFDRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXBELE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFdEIsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBc0JELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsS0FBYSxFQUFFLFVBQWtCO1FBQ3pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7d0lBM0JrQixTQUFpQjtJQUNoQyxNQUFNLElBQUksR0FBaUIsRUFBRSxDQUFDO0lBQzlCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFNBQVMsS0FBSyxFQUFFLENBQUM7UUFDakIsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9mdWxsX3NuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NuYXBzaG90cy9iYXNlX2Z1bGxfc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFvQyxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBZ0JsRzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLE9BQWdCLDJCQUEyQjtJQU0vQyxZQUFzQixFQUFnQixFQUFZLElBQU87O1FBQW5DLE9BQUUsR0FBRixFQUFFLENBQWM7UUFBWSxTQUFJLEdBQUosSUFBSSxDQUFHO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBQSxJQUFJLDRGQUFpQixNQUFyQixJQUFJLEVBQWtCLEtBQUssQ0FBQyxDQUFDO1lBRXRELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFB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