@proto-kit/common 0.1.1-develop.1665 → 0.1.1-develop.1688

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 (60) hide show
  1. package/dist/dependencyFactory/injectOptional.d.ts +16 -0
  2. package/dist/dependencyFactory/injectOptional.d.ts.map +1 -0
  3. package/dist/dependencyFactory/injectOptional.js +40 -0
  4. package/dist/dependencyFactory/injectOptional.js.map +1 -0
  5. package/dist/trees/InMemoryLinkedLeafStore.d.ts +21 -0
  6. package/dist/trees/InMemoryLinkedLeafStore.d.ts.map +1 -0
  7. package/dist/trees/InMemoryLinkedLeafStore.js +26 -0
  8. package/dist/trees/InMemoryLinkedLeafStore.js.map +1 -0
  9. package/dist/trees/InMemoryLinkedMerkleLeafStore.d.ts +7 -0
  10. package/dist/trees/InMemoryLinkedMerkleLeafStore.d.ts.map +1 -0
  11. package/dist/trees/InMemoryLinkedMerkleLeafStore.js +6 -0
  12. package/dist/trees/InMemoryLinkedMerkleLeafStore.js.map +1 -0
  13. package/dist/trees/InMemoryMerkleTreeStorage.d.ts +11 -0
  14. package/dist/trees/InMemoryMerkleTreeStorage.d.ts.map +1 -0
  15. package/dist/trees/InMemoryMerkleTreeStorage.js +13 -0
  16. package/dist/trees/InMemoryMerkleTreeStorage.js.map +1 -0
  17. package/dist/trees/LinkedMerkleTree.d.ts +345 -0
  18. package/dist/trees/LinkedMerkleTree.d.ts.map +1 -0
  19. package/dist/trees/LinkedMerkleTree.js +337 -0
  20. package/dist/trees/LinkedMerkleTree.js.map +1 -0
  21. package/dist/trees/LinkedMerkleTreeStore.d.ts +24 -0
  22. package/dist/trees/LinkedMerkleTreeStore.d.ts.map +1 -0
  23. package/dist/trees/LinkedMerkleTreeStore.js +2 -0
  24. package/dist/trees/LinkedMerkleTreeStore.js.map +1 -0
  25. package/dist/trees/MerkleTreeStore.d.ts +5 -0
  26. package/dist/trees/MerkleTreeStore.d.ts.map +1 -0
  27. package/dist/trees/MerkleTreeStore.js +2 -0
  28. package/dist/trees/MerkleTreeStore.js.map +1 -0
  29. package/dist/trees/MockAsyncMerkleStore.d.ts +9 -0
  30. package/dist/trees/MockAsyncMerkleStore.d.ts.map +1 -0
  31. package/dist/trees/MockAsyncMerkleStore.js +20 -0
  32. package/dist/trees/MockAsyncMerkleStore.js.map +1 -0
  33. package/dist/trees/RollupMerkleTree.d.ts +147 -0
  34. package/dist/trees/RollupMerkleTree.d.ts.map +1 -0
  35. package/dist/trees/RollupMerkleTree.js +218 -0
  36. package/dist/trees/RollupMerkleTree.js.map +1 -0
  37. package/dist/trees/VirtualMerkleTreeStore.d.ts +13 -0
  38. package/dist/trees/VirtualMerkleTreeStore.d.ts.map +1 -0
  39. package/dist/trees/VirtualMerkleTreeStore.js +18 -0
  40. package/dist/trees/VirtualMerkleTreeStore.js.map +1 -0
  41. package/dist/trees/lmt/InMemoryLinkedMerkleLeafStore.d.ts +7 -0
  42. package/dist/trees/lmt/InMemoryLinkedMerkleLeafStore.d.ts.map +1 -0
  43. package/dist/trees/lmt/InMemoryLinkedMerkleLeafStore.js +6 -0
  44. package/dist/trees/lmt/InMemoryLinkedMerkleLeafStore.js.map +1 -0
  45. package/dist/trees/lmt/LinkedLinkedStore.d.ts +16 -0
  46. package/dist/trees/lmt/LinkedLinkedStore.d.ts.map +1 -0
  47. package/dist/trees/lmt/LinkedLinkedStore.js +2 -0
  48. package/dist/trees/lmt/LinkedLinkedStore.js.map +1 -0
  49. package/dist/trees/lmt/LinkedMerkleTreeDatabase.d.ts +7 -0
  50. package/dist/trees/lmt/LinkedMerkleTreeDatabase.d.ts.map +1 -0
  51. package/dist/trees/lmt/LinkedMerkleTreeDatabase.js +2 -0
  52. package/dist/trees/lmt/LinkedMerkleTreeDatabase.js.map +1 -0
  53. package/dist/trees/lmt/LinkedMerkleTreeStore.d.ts +16 -0
  54. package/dist/trees/lmt/LinkedMerkleTreeStore.d.ts.map +1 -0
  55. package/dist/trees/lmt/LinkedMerkleTreeStore.js +2 -0
  56. package/dist/trees/lmt/LinkedMerkleTreeStore.js.map +1 -0
  57. package/package.json +3 -3
  58. package/src/zkProgrammable/ZkProgrammable.ts +12 -3
  59. package/src/zkProgrammable/provableMethod.ts +15 -3
  60. package/test/zkProgrammable/ZkProgrammable.test.ts +11 -7
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This function injects a dependency only if it has been registered, otherwise
3
+ * injects undefined. This can be useful for having optional dependencies, where
4
+ * tsyringe would normally error out and not be able to resolve. With this
5
+ * decorator, we can now do this.
6
+ *
7
+ * The strategy we employ here is that we inject a dummy into the global
8
+ * container that is of type UndefinedDisguise. We can't inject undefined
9
+ * directly, therefore we use this object to disguise itself as undefined.
10
+ * Then a child container registers something under the same token, it by
11
+ * default resolves that new dependency. If that doesn't happen, the
12
+ * resolution hits our disguise, which we then convert into undefined
13
+ * using the Transform
14
+ */
15
+ export declare function injectOptional<T>(token: string): (target: any, propertyKey: string | symbol | undefined, parameterIndex: number) => any;
16
+ //# sourceMappingURL=injectOptional.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectOptional.d.ts","sourceRoot":"","sources":["../../src/dependencyFactory/injectOptional.ts"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,0FAG9C"}
@@ -0,0 +1,40 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { container, injectable, injectWithTransform, Lifecycle, scoped, } from "tsyringe";
8
+ let UndefinedDisguise = class UndefinedDisguise {
9
+ };
10
+ UndefinedDisguise = __decorate([
11
+ injectable(),
12
+ scoped(Lifecycle.ResolutionScoped)
13
+ ], UndefinedDisguise);
14
+ class UndefinedTransform {
15
+ transform(incoming) {
16
+ if (incoming instanceof UndefinedDisguise) {
17
+ return undefined;
18
+ }
19
+ return incoming;
20
+ }
21
+ }
22
+ /**
23
+ * This function injects a dependency only if it has been registered, otherwise
24
+ * injects undefined. This can be useful for having optional dependencies, where
25
+ * tsyringe would normally error out and not be able to resolve. With this
26
+ * decorator, we can now do this.
27
+ *
28
+ * The strategy we employ here is that we inject a dummy into the global
29
+ * container that is of type UndefinedDisguise. We can't inject undefined
30
+ * directly, therefore we use this object to disguise itself as undefined.
31
+ * Then a child container registers something under the same token, it by
32
+ * default resolves that new dependency. If that doesn't happen, the
33
+ * resolution hits our disguise, which we then convert into undefined
34
+ * using the Transform
35
+ */
36
+ export function injectOptional(token) {
37
+ container.register(token, { useClass: UndefinedDisguise });
38
+ return injectWithTransform(token, (UndefinedTransform));
39
+ }
40
+ //# sourceMappingURL=injectOptional.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectOptional.js","sourceRoot":"","sources":["../../src/dependencyFactory/injectOptional.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,SAAS,EACT,MAAM,GACP,MAAM,UAAU,CAAC;AAIlB,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IAFtB,UAAU,EAAE;IACZ,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;GAC7B,iBAAiB,CAAG;AAE1B,MAAM,kBAAkB;IACf,SAAS,CACd,QAAwC;QAExC,IAAI,QAAQ,YAAY,iBAAiB,EAAE;YACzC,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAI,KAAa;IAC7C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC3D,OAAO,mBAAmB,CAAC,KAAK,EAAE,CAAA,kBAAqB,CAAA,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { LinkedLeafStore, LinkedLeaf } from "./LinkedMerkleTreeStore";
2
+ export declare class InMemoryLinkedLeafStore implements LinkedLeafStore {
3
+ leaves: {
4
+ [key: string]: {
5
+ leaf: LinkedLeaf;
6
+ index: bigint;
7
+ };
8
+ };
9
+ maximumIndex?: bigint;
10
+ getLeaf(path: bigint): {
11
+ leaf: LinkedLeaf;
12
+ index: bigint;
13
+ } | undefined;
14
+ setLeaf(index: bigint, value: LinkedLeaf): void;
15
+ getMaximumIndex(): bigint | undefined;
16
+ getLeafLessOrEqual(path: bigint): {
17
+ leaf: LinkedLeaf;
18
+ index: bigint;
19
+ } | undefined;
20
+ }
21
+ //# sourceMappingURL=InMemoryLinkedLeafStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryLinkedLeafStore.d.ts","sourceRoot":"","sources":["../../src/trees/InMemoryLinkedLeafStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEtE,qBAAa,uBAAwB,YAAW,eAAe;IACtD,MAAM,EAAE;QACb,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,UAAU,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KACpD,CAAM;IAEA,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,OAAO,CACZ,IAAI,EAAE,MAAM,GACX;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAI3C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAW/C,eAAe,IAAI,MAAM,GAAG,SAAS;IAKrC,kBAAkB,CACvB,IAAI,EAAE,MAAM,GACX;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;CAMnD"}
@@ -0,0 +1,26 @@
1
+ export class InMemoryLinkedLeafStore {
2
+ constructor() {
3
+ this.leaves = {};
4
+ }
5
+ getLeaf(path) {
6
+ return this.leaves[path.toString()];
7
+ }
8
+ setLeaf(index, value) {
9
+ const leaf = this.getLeaf(value.path);
10
+ if (leaf !== undefined && leaf?.index !== index) {
11
+ throw new Error("Cannot change index of existing leaf");
12
+ }
13
+ this.leaves[value.path.toString()] = { leaf: value, index: index };
14
+ if (this.maximumIndex === undefined || index > this.maximumIndex) {
15
+ this.maximumIndex = index;
16
+ }
17
+ }
18
+ getMaximumIndex() {
19
+ return this.maximumIndex;
20
+ }
21
+ // This gets the leaf with the closest path.
22
+ getLeafLessOrEqual(path) {
23
+ return Object.values(this.leaves).find((storedLeaf) => storedLeaf.leaf.nextPath > path && storedLeaf.leaf.path <= path);
24
+ }
25
+ }
26
+ //# sourceMappingURL=InMemoryLinkedLeafStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryLinkedLeafStore.js","sourceRoot":"","sources":["../../src/trees/InMemoryLinkedLeafStore.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,uBAAuB;IAApC;QACS,WAAM,GAET,EAAE,CAAC;IAkCT,CAAC;IA9BQ,OAAO,CACZ,IAAY;QAEZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;IAEM,OAAO,CAAC,KAAa,EAAE,KAAiB;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,EAAE,KAAK,KAAK,KAAK,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACzD;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;YAChE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;IACH,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,4CAA4C;IACrC,kBAAkB,CACvB,IAAY;QAEZ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACpC,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAClE,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import { InMemoryLinkedLeafStore } from "./InMemoryLinkedLeafStore";
2
+ import { InMemoryMerkleTreeStorage } from "./InMemoryMerkleTreeStorage";
3
+ declare const InMemoryLinkedMerkleLeafStore_base: import("ts-mixer/dist/types/types").Class<any[], InMemoryLinkedLeafStore & InMemoryMerkleTreeStorage, typeof InMemoryLinkedLeafStore & typeof InMemoryMerkleTreeStorage>;
4
+ export declare class InMemoryLinkedMerkleLeafStore extends InMemoryLinkedMerkleLeafStore_base {
5
+ }
6
+ export {};
7
+ //# sourceMappingURL=InMemoryLinkedMerkleLeafStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryLinkedMerkleLeafStore.d.ts","sourceRoot":"","sources":["../../src/trees/InMemoryLinkedMerkleLeafStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;;AAExE,qBAAa,6BAA8B,SAAQ,kCAGlD;CAAG"}
@@ -0,0 +1,6 @@
1
+ import { Mixin } from "ts-mixer";
2
+ import { InMemoryLinkedLeafStore } from "./InMemoryLinkedLeafStore";
3
+ import { InMemoryMerkleTreeStorage } from "./InMemoryMerkleTreeStorage";
4
+ export class InMemoryLinkedMerkleLeafStore extends Mixin(InMemoryLinkedLeafStore, InMemoryMerkleTreeStorage) {
5
+ }
6
+ //# sourceMappingURL=InMemoryLinkedMerkleLeafStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryLinkedMerkleLeafStore.js","sourceRoot":"","sources":["../../src/trees/InMemoryLinkedMerkleLeafStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,OAAO,6BAA8B,SAAQ,KAAK,CACtD,uBAAuB,EACvB,yBAAyB,CAC1B;CAAG"}
@@ -0,0 +1,11 @@
1
+ import { MerkleTreeStore } from "./MerkleTreeStore";
2
+ export declare class InMemoryMerkleTreeStorage implements MerkleTreeStore {
3
+ protected nodes: {
4
+ [key: number]: {
5
+ [key: string]: bigint;
6
+ };
7
+ };
8
+ getNode(key: bigint, level: number): bigint | undefined;
9
+ setNode(key: bigint, level: number, value: bigint): void;
10
+ }
11
+ //# sourceMappingURL=InMemoryMerkleTreeStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryMerkleTreeStorage.d.ts","sourceRoot":"","sources":["../../src/trees/InMemoryMerkleTreeStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,SAAS,CAAC,KAAK,EAAE;QACf,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;SACvB,CAAC;KACH,CAAM;IAEA,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAGhE"}
@@ -0,0 +1,13 @@
1
+ export class InMemoryMerkleTreeStorage {
2
+ constructor() {
3
+ this.nodes = {};
4
+ }
5
+ getNode(key, level) {
6
+ return this.nodes[level]?.[key.toString()];
7
+ }
8
+ setNode(key, level, value) {
9
+ var _a;
10
+ ((_a = this.nodes)[level] ?? (_a[level] = {}))[key.toString()] = value;
11
+ }
12
+ }
13
+ //# sourceMappingURL=InMemoryMerkleTreeStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryMerkleTreeStorage.js","sourceRoot":"","sources":["../../src/trees/InMemoryMerkleTreeStorage.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,yBAAyB;IAAtC;QACY,UAAK,GAIX,EAAE,CAAC;IAST,CAAC;IAPQ,OAAO,CAAC,GAAW,EAAE,KAAa;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,KAAa;;QACtD,OAAC,IAAI,CAAC,KAAK,EAAC,KAAK,SAAL,KAAK,IAAM,EAAE,EAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,345 @@
1
+ import { Field } from "o1js";
2
+ import { TypedClass } from "../types";
3
+ import { LinkedMerkleTreeStore } from "./LinkedMerkleTreeStore";
4
+ import { AbstractMerkleWitness } from "./RollupMerkleTree";
5
+ declare const LinkedLeafStruct_base: (new (value: {
6
+ value: import("o1js/dist/node/lib/provable/field").Field;
7
+ path: import("o1js/dist/node/lib/provable/field").Field;
8
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
9
+ }) => {
10
+ value: import("o1js/dist/node/lib/provable/field").Field;
11
+ path: import("o1js/dist/node/lib/provable/field").Field;
12
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
13
+ }) & {
14
+ _isStruct: true;
15
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
16
+ value: import("o1js/dist/node/lib/provable/field").Field;
17
+ path: import("o1js/dist/node/lib/provable/field").Field;
18
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
19
+ }, {
20
+ value: bigint;
21
+ path: bigint;
22
+ nextPath: bigint;
23
+ }>, "fromFields"> & {
24
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
25
+ value: import("o1js/dist/node/lib/provable/field").Field;
26
+ path: import("o1js/dist/node/lib/provable/field").Field;
27
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
28
+ };
29
+ } & {
30
+ fromValue: (value: {
31
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
32
+ path: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
33
+ nextPath: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
34
+ }) => {
35
+ value: import("o1js/dist/node/lib/provable/field").Field;
36
+ path: import("o1js/dist/node/lib/provable/field").Field;
37
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
38
+ };
39
+ toInput: (x: {
40
+ value: import("o1js/dist/node/lib/provable/field").Field;
41
+ path: import("o1js/dist/node/lib/provable/field").Field;
42
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
43
+ }) => {
44
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
45
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
46
+ };
47
+ toJSON: (x: {
48
+ value: import("o1js/dist/node/lib/provable/field").Field;
49
+ path: import("o1js/dist/node/lib/provable/field").Field;
50
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
51
+ }) => {
52
+ value: string;
53
+ path: string;
54
+ nextPath: string;
55
+ };
56
+ fromJSON: (x: {
57
+ value: string;
58
+ path: string;
59
+ nextPath: string;
60
+ }) => {
61
+ value: import("o1js/dist/node/lib/provable/field").Field;
62
+ path: import("o1js/dist/node/lib/provable/field").Field;
63
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
64
+ };
65
+ empty: () => {
66
+ value: import("o1js/dist/node/lib/provable/field").Field;
67
+ path: import("o1js/dist/node/lib/provable/field").Field;
68
+ nextPath: import("o1js/dist/node/lib/provable/field").Field;
69
+ };
70
+ };
71
+ export declare class LinkedLeafStruct extends LinkedLeafStruct_base {
72
+ hash(): Field;
73
+ }
74
+ declare const LinkedLeafAndMerkleWitness_base: (new (value: {
75
+ leaf: LinkedLeafStruct;
76
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
77
+ }) => {
78
+ leaf: LinkedLeafStruct;
79
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
80
+ }) & {
81
+ _isStruct: true;
82
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
83
+ leaf: LinkedLeafStruct;
84
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
85
+ }, {
86
+ leaf: {
87
+ value: bigint;
88
+ path: bigint;
89
+ nextPath: bigint;
90
+ };
91
+ merkleWitness: {
92
+ path: bigint[];
93
+ isLeft: boolean[];
94
+ };
95
+ }>, "fromFields"> & {
96
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
97
+ leaf: LinkedLeafStruct;
98
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
99
+ };
100
+ } & {
101
+ fromValue: (value: {
102
+ leaf: LinkedLeafStruct | {
103
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
104
+ path: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
105
+ nextPath: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
106
+ };
107
+ merkleWitness: {
108
+ path: import("o1js/dist/node/lib/provable/field").Field[] | bigint[];
109
+ isLeft: import("o1js/dist/node/lib/provable/bool").Bool[] | boolean[];
110
+ } | (AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate);
111
+ }) => {
112
+ leaf: LinkedLeafStruct;
113
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
114
+ };
115
+ toInput: (x: {
116
+ leaf: LinkedLeafStruct;
117
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
118
+ }) => {
119
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
120
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
121
+ };
122
+ toJSON: (x: {
123
+ leaf: LinkedLeafStruct;
124
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
125
+ }) => {
126
+ leaf: {
127
+ value: string;
128
+ path: string;
129
+ nextPath: string;
130
+ };
131
+ merkleWitness: {
132
+ path: string[];
133
+ isLeft: boolean[];
134
+ };
135
+ };
136
+ fromJSON: (x: {
137
+ leaf: {
138
+ value: string;
139
+ path: string;
140
+ nextPath: string;
141
+ };
142
+ merkleWitness: {
143
+ path: string[];
144
+ isLeft: boolean[];
145
+ };
146
+ }) => {
147
+ leaf: LinkedLeafStruct;
148
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
149
+ };
150
+ empty: () => {
151
+ leaf: LinkedLeafStruct;
152
+ merkleWitness: AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate;
153
+ };
154
+ };
155
+ export declare class LinkedLeafAndMerkleWitness extends LinkedLeafAndMerkleWitness_base {
156
+ }
157
+ declare const LinkedStructTemplate_base: (new (value: {
158
+ leafPrevious: LinkedLeafAndMerkleWitness;
159
+ leafCurrent: LinkedLeafAndMerkleWitness;
160
+ }) => {
161
+ leafPrevious: LinkedLeafAndMerkleWitness;
162
+ leafCurrent: LinkedLeafAndMerkleWitness;
163
+ }) & {
164
+ _isStruct: true;
165
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
166
+ leafPrevious: LinkedLeafAndMerkleWitness;
167
+ leafCurrent: LinkedLeafAndMerkleWitness;
168
+ }, {
169
+ leafPrevious: {
170
+ leaf: {
171
+ value: bigint;
172
+ path: bigint;
173
+ nextPath: bigint;
174
+ };
175
+ merkleWitness: {
176
+ path: bigint[];
177
+ isLeft: boolean[];
178
+ };
179
+ };
180
+ leafCurrent: {
181
+ leaf: {
182
+ value: bigint;
183
+ path: bigint;
184
+ nextPath: bigint;
185
+ };
186
+ merkleWitness: {
187
+ path: bigint[];
188
+ isLeft: boolean[];
189
+ };
190
+ };
191
+ }>, "fromFields"> & {
192
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
193
+ leafPrevious: LinkedLeafAndMerkleWitness;
194
+ leafCurrent: LinkedLeafAndMerkleWitness;
195
+ };
196
+ } & {
197
+ fromValue: (value: {
198
+ leafPrevious: LinkedLeafAndMerkleWitness | {
199
+ leaf: LinkedLeafStruct | {
200
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
201
+ path: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
202
+ nextPath: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
203
+ };
204
+ merkleWitness: {
205
+ path: import("o1js/dist/node/lib/provable/field").Field[] | bigint[];
206
+ isLeft: import("o1js/dist/node/lib/provable/bool").Bool[] | boolean[];
207
+ } | (AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate);
208
+ };
209
+ leafCurrent: LinkedLeafAndMerkleWitness | {
210
+ leaf: LinkedLeafStruct | {
211
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
212
+ path: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
213
+ nextPath: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
214
+ };
215
+ merkleWitness: {
216
+ path: import("o1js/dist/node/lib/provable/field").Field[] | bigint[];
217
+ isLeft: import("o1js/dist/node/lib/provable/bool").Bool[] | boolean[];
218
+ } | (AbstractMerkleWitness & import("./RollupMerkleTree").StructTemplate);
219
+ };
220
+ }) => {
221
+ leafPrevious: LinkedLeafAndMerkleWitness;
222
+ leafCurrent: LinkedLeafAndMerkleWitness;
223
+ };
224
+ toInput: (x: {
225
+ leafPrevious: LinkedLeafAndMerkleWitness;
226
+ leafCurrent: LinkedLeafAndMerkleWitness;
227
+ }) => {
228
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
229
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
230
+ };
231
+ toJSON: (x: {
232
+ leafPrevious: LinkedLeafAndMerkleWitness;
233
+ leafCurrent: LinkedLeafAndMerkleWitness;
234
+ }) => {
235
+ leafPrevious: {
236
+ leaf: {
237
+ value: string;
238
+ path: string;
239
+ nextPath: string;
240
+ };
241
+ merkleWitness: {
242
+ path: string[];
243
+ isLeft: boolean[];
244
+ };
245
+ };
246
+ leafCurrent: {
247
+ leaf: {
248
+ value: string;
249
+ path: string;
250
+ nextPath: string;
251
+ };
252
+ merkleWitness: {
253
+ path: string[];
254
+ isLeft: boolean[];
255
+ };
256
+ };
257
+ };
258
+ fromJSON: (x: {
259
+ leafPrevious: {
260
+ leaf: {
261
+ value: string;
262
+ path: string;
263
+ nextPath: string;
264
+ };
265
+ merkleWitness: {
266
+ path: string[];
267
+ isLeft: boolean[];
268
+ };
269
+ };
270
+ leafCurrent: {
271
+ leaf: {
272
+ value: string;
273
+ path: string;
274
+ nextPath: string;
275
+ };
276
+ merkleWitness: {
277
+ path: string[];
278
+ isLeft: boolean[];
279
+ };
280
+ };
281
+ }) => {
282
+ leafPrevious: LinkedLeafAndMerkleWitness;
283
+ leafCurrent: LinkedLeafAndMerkleWitness;
284
+ };
285
+ empty: () => {
286
+ leafPrevious: LinkedLeafAndMerkleWitness;
287
+ leafCurrent: LinkedLeafAndMerkleWitness;
288
+ };
289
+ };
290
+ declare class LinkedStructTemplate extends LinkedStructTemplate_base {
291
+ }
292
+ export interface AbstractLinkedMerkleWitness extends LinkedStructTemplate {
293
+ }
294
+ export interface AbstractLinkedMerkleTree {
295
+ store: LinkedMerkleTreeStore;
296
+ /**
297
+ * Returns a node which lives at a given index and level.
298
+ * @param level Level of the node.
299
+ * @param index Index of the node.
300
+ * @returns The data of the node.
301
+ */
302
+ getNode(level: number, index: bigint): Field;
303
+ /**
304
+ * Returns the root of the [Merkle Tree](https://en.wikipedia.org/wiki/Merkle_tree).
305
+ * @returns The root of the Merkle Tree.
306
+ */
307
+ getRoot(): Field;
308
+ /**
309
+ * Sets the value of a leaf node at a given index to a given value.
310
+ * @param path of the leaf node.
311
+ * @param value New value.
312
+ */
313
+ setLeaf(path: bigint, value?: bigint): LinkedMerkleTreeWitness;
314
+ /**
315
+ * Returns a leaf which lives at a given path.
316
+ * Errors otherwise.
317
+ * @param path Index of the node.
318
+ * @returns The data of the leaf.
319
+ */
320
+ getLeaf(path: bigint): LinkedLeafStruct | undefined;
321
+ /**
322
+ * Returns the witness (also known as
323
+ * [Merkle Proof or Merkle Witness](https://computersciencewiki.org/index.php/Merkle_proof))
324
+ * for the leaf at the given path.
325
+ * @param path Position of the leaf node.
326
+ * @returns The witness that belongs to the leaf.
327
+ */
328
+ getWitness(path: bigint): LinkedLeafAndMerkleWitness;
329
+ dummyWitness(): LinkedMerkleTreeWitness;
330
+ dummy(): LinkedLeafAndMerkleWitness;
331
+ }
332
+ export interface AbstractLinkedMerkleTreeClass {
333
+ new (store: LinkedMerkleTreeStore): AbstractLinkedMerkleTree;
334
+ WITNESS: TypedClass<AbstractLinkedMerkleWitness> & typeof LinkedStructTemplate;
335
+ HEIGHT: number;
336
+ EMPTY_ROOT: bigint;
337
+ }
338
+ export declare function createLinkedMerkleTree(height: number): AbstractLinkedMerkleTreeClass;
339
+ declare const LinkedMerkleTree_base: AbstractLinkedMerkleTreeClass;
340
+ export declare class LinkedMerkleTree extends LinkedMerkleTree_base {
341
+ }
342
+ export declare class LinkedMerkleTreeWitness extends LinkedMerkleTree.WITNESS {
343
+ }
344
+ export {};
345
+ //# sourceMappingURL=LinkedMerkleTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkedMerkleTree.d.ts","sourceRoot":"","sources":["../../src/trees/LinkedMerkleTree.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,EAA8B,MAAM,MAAM,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,qBAAqB,EAGtB,MAAM,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAIpC;IACO,IAAI,IAAI,KAAK;CAGrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAID,qBAAa,0BAA2B,SAAQ,+BAG9C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,cAAM,oBAAqB,SAAQ,yBAGjC;CAAG;AAEL,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;CAAG;AAE5E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,qBAAqB,CAAC;IAC7B;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7C;;;OAGG;IACH,OAAO,IAAI,KAAK,CAAC;IAEjB;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAE/D;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAEpD;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,CAAC;IAErD,YAAY,IAAI,uBAAuB,CAAC;IAExC,KAAK,IAAI,0BAA0B,CAAC;CACrC;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,KAAK,EAAE,qBAAqB,GAAG,wBAAwB,CAAC;IAE7D,OAAO,EAAE,UAAU,CAAC,2BAA2B,CAAC,GAC9C,OAAO,oBAAoB,CAAC;IAE9B,MAAM,EAAE,MAAM,CAAC;IAEf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GACb,6BAA6B,CAyX/B;;AAED,qBAAa,gBAAiB,SAAQ,qBAA0B;CAAG;AACnE,qBAAa,uBAAwB,SAAQ,gBAAgB,CAAC,OAAO;CAAG"}