@proto-kit/module 0.1.1-develop.190 → 0.1.1-develop.2024

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 (110) hide show
  1. package/dist/factories/MethodIdFactory.d.ts +6 -6
  2. package/dist/factories/MethodIdFactory.d.ts.map +1 -1
  3. package/dist/factories/MethodIdFactory.js +10 -34
  4. package/dist/factories/MethodIdFactory.js.map +1 -0
  5. package/dist/index.d.ts +4 -7
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +5 -7
  8. package/dist/index.js.map +1 -0
  9. package/dist/messages/OutgoingMessage.d.ts +96 -0
  10. package/dist/messages/OutgoingMessage.d.ts.map +1 -0
  11. package/dist/messages/OutgoingMessage.js +68 -0
  12. package/dist/messages/OutgoingMessage.js.map +1 -0
  13. package/dist/messages/OutgoingMessages.d.ts +231 -0
  14. package/dist/messages/OutgoingMessages.d.ts.map +1 -0
  15. package/dist/messages/OutgoingMessages.js +66 -0
  16. package/dist/messages/OutgoingMessages.js.map +1 -0
  17. package/dist/method/MethodParameterEncoder.d.ts +26 -0
  18. package/dist/method/MethodParameterEncoder.d.ts.map +1 -0
  19. package/dist/method/MethodParameterEncoder.js +169 -0
  20. package/dist/method/MethodParameterEncoder.js.map +1 -0
  21. package/dist/method/runtimeMethod.d.ts +21 -5
  22. package/dist/method/runtimeMethod.d.ts.map +1 -1
  23. package/dist/method/runtimeMethod.js +69 -25
  24. package/dist/method/runtimeMethod.js.map +1 -0
  25. package/dist/module/decorator.js +1 -0
  26. package/dist/module/decorator.js.map +1 -0
  27. package/dist/runtime/MethodIdResolver.d.ts +10 -8
  28. package/dist/runtime/MethodIdResolver.d.ts.map +1 -1
  29. package/dist/runtime/MethodIdResolver.js +74 -33
  30. package/dist/runtime/MethodIdResolver.js.map +1 -0
  31. package/dist/runtime/Runtime.d.ts +20 -26
  32. package/dist/runtime/Runtime.d.ts.map +1 -1
  33. package/dist/runtime/Runtime.js +117 -62
  34. package/dist/runtime/Runtime.js.map +1 -0
  35. package/dist/runtime/RuntimeEnvironment.d.ts +10 -0
  36. package/dist/runtime/RuntimeEnvironment.d.ts.map +1 -0
  37. package/dist/runtime/RuntimeEnvironment.js +2 -0
  38. package/dist/runtime/RuntimeEnvironment.js.map +1 -0
  39. package/dist/runtime/RuntimeModule.d.ts +18 -15
  40. package/dist/runtime/RuntimeModule.d.ts.map +1 -1
  41. package/dist/runtime/RuntimeModule.js +33 -8
  42. package/dist/runtime/RuntimeModule.js.map +1 -0
  43. package/dist/state/InMemoryStateService.d.ts +11 -10
  44. package/dist/state/InMemoryStateService.d.ts.map +1 -1
  45. package/dist/state/InMemoryStateService.js +11 -8
  46. package/dist/state/InMemoryStateService.js.map +1 -0
  47. package/dist/state/decorator.d.ts.map +1 -1
  48. package/dist/state/decorator.js +2 -4
  49. package/dist/state/decorator.js.map +1 -0
  50. package/dist/testing/TestingRuntime.d.ts +8 -0
  51. package/dist/testing/TestingRuntime.d.ts.map +1 -0
  52. package/dist/testing/TestingRuntime.js +31 -0
  53. package/dist/testing/TestingRuntime.js.map +1 -0
  54. package/jest.config.cjs +12 -1
  55. package/package.json +10 -11
  56. package/src/factories/MethodIdFactory.ts +10 -17
  57. package/src/index.ts +4 -7
  58. package/src/messages/OutgoingMessages.ts +122 -0
  59. package/src/method/MethodParameterEncoder.ts +262 -0
  60. package/src/method/runtimeMethod.ts +130 -33
  61. package/src/runtime/MethodIdResolver.ts +83 -46
  62. package/src/runtime/Runtime.ts +193 -100
  63. package/src/runtime/RuntimeEnvironment.ts +16 -0
  64. package/src/runtime/RuntimeModule.ts +62 -30
  65. package/src/state/InMemoryStateService.ts +14 -18
  66. package/test/Runtime.test.ts +68 -42
  67. package/test/TestingRuntime.ts +43 -0
  68. package/test/messages/message.test.ts +42 -0
  69. package/test/method/MethodParameterEncoder.test.ts +124 -0
  70. package/test/method/runtimeMethod-fail.test.ts +53 -0
  71. package/{src/method/decorator.test.ts → test/method/runtimeMethod.test.ts} +3 -3
  72. package/test/modules/Admin.ts +4 -4
  73. package/test/modules/Balances.test.ts +92 -78
  74. package/test/modules/Balances.ts +15 -17
  75. package/test/modules/{methodId.test.ts → MethodIdResolver.test.ts} +24 -36
  76. package/test/modules/State.test.ts +81 -0
  77. package/test/runtimeMethod.test.ts +192 -20
  78. package/test/tsconfig.json +7 -0
  79. package/tsconfig.json +2 -2
  80. package/LICENSE.md +0 -201
  81. package/dist/method/MethodParameterDecoder.d.ts +0 -22
  82. package/dist/method/MethodParameterDecoder.d.ts.map +0 -1
  83. package/dist/method/MethodParameterDecoder.js +0 -33
  84. package/dist/method/RuntimeMethodExecutionContext.d.ts +0 -57
  85. package/dist/method/RuntimeMethodExecutionContext.d.ts.map +0 -1
  86. package/dist/method/RuntimeMethodExecutionContext.js +0 -92
  87. package/dist/method/assert.d.ts +0 -12
  88. package/dist/method/assert.d.ts.map +0 -1
  89. package/dist/method/assert.js +0 -23
  90. package/dist/state/State.d.ts +0 -65
  91. package/dist/state/State.d.ts.map +0 -1
  92. package/dist/state/State.js +0 -114
  93. package/dist/state/StateMap.d.ts +0 -37
  94. package/dist/state/StateMap.d.ts.map +0 -1
  95. package/dist/state/StateMap.js +0 -56
  96. package/dist/state/StateServiceProvider.d.ts +0 -10
  97. package/dist/state/StateServiceProvider.d.ts.map +0 -1
  98. package/dist/state/StateServiceProvider.js +0 -34
  99. package/src/method/MethodParameterDecoder.ts +0 -68
  100. package/src/method/RuntimeMethodExecutionContext.ts +0 -111
  101. package/src/method/assert.test.ts +0 -49
  102. package/src/method/assert.ts +0 -27
  103. package/src/state/State.ts +0 -154
  104. package/src/state/StateMap.ts +0 -69
  105. package/src/state/StateServiceProvider.ts +0 -24
  106. package/src/state/decorator.ts +0 -65
  107. package/test/state/MerkleTree.test.ts +0 -95
  108. package/test/state/MockAsyncMerkleStore.ts +0 -28
  109. package/test/transaction.test.ts +0 -82
  110. package/tsconfig.test.json +0 -9
@@ -1,10 +1,11 @@
1
- import { Experimental } from "snarkyjs";
1
+ import { ZkProgram } from "o1js";
2
2
  import { DependencyContainer } from "tsyringe";
3
- import { StringKeyOf, ModuleContainer, ModulesConfig, ModulesRecord, TypedClass, ZkProgrammable, PlainZkProgram, WithZkProgrammable, AreProofsEnabled } from "@proto-kit/common";
4
- import { MethodPublicOutput } from "@proto-kit/protocol";
5
- import { StateService } from "../state/InMemoryStateService.js";
6
- import { StateServiceProvider } from "../state/StateServiceProvider";
7
- import { RuntimeModule } from "./RuntimeModule.js";
3
+ import { StringKeyOf, ModuleContainer, ModulesRecord, TypedClass, ZkProgrammable, PlainZkProgram, AreProofsEnabled, ChildContainerProvider, CompilableModule, CompileRegistry } from "@proto-kit/common";
4
+ import { MethodPublicOutput, StateServiceProvider, SimpleAsyncStateService } from "@proto-kit/protocol";
5
+ import { RuntimeModule } from "./RuntimeModule";
6
+ import { MethodIdResolver } from "./MethodIdResolver";
7
+ import { RuntimeEnvironment } from "./RuntimeEnvironment";
8
+ export declare function getAllPropertyNames(obj: any): (string | symbol)[];
8
9
  /**
9
10
  * Record of modules accepted by the Runtime module container.
10
11
  *
@@ -12,40 +13,32 @@ import { RuntimeModule } from "./RuntimeModule.js";
12
13
  * is an abstract class
13
14
  */
14
15
  export type RuntimeModulesRecord = ModulesRecord<TypedClass<RuntimeModule<unknown>>>;
15
- /**
16
- * Definition / required arguments for the Runtime class
17
- */
18
- export interface RuntimeDefinition<Modules extends RuntimeModulesRecord> {
19
- state: StateService;
20
- modules: Modules;
21
- config?: ModulesConfig<Modules>;
22
- }
23
16
  export declare class RuntimeZkProgrammable<Modules extends RuntimeModulesRecord> extends ZkProgrammable<undefined, MethodPublicOutput> {
24
17
  runtime: Runtime<Modules>;
25
18
  constructor(runtime: Runtime<Modules>);
26
- get appChain(): AreProofsEnabled | undefined;
27
- zkProgramFactory(): PlainZkProgram<undefined, MethodPublicOutput>;
19
+ get areProofsEnabled(): AreProofsEnabled | undefined;
20
+ zkProgramFactory(): PlainZkProgram<undefined, MethodPublicOutput>[];
28
21
  }
29
22
  /**
30
23
  * Wrapper for an application specific runtime, which helps orchestrate
31
24
  * runtime modules into an interoperable runtime.
32
25
  */
33
- export declare class Runtime<Modules extends RuntimeModulesRecord> extends ModuleContainer<Modules> implements WithZkProgrammable<undefined, MethodPublicOutput> {
34
- static from<Modules extends RuntimeModulesRecord>(definition: RuntimeDefinition<Modules>): Runtime<Modules>;
35
- program?: ReturnType<typeof Experimental.ZkProgram>;
36
- definition: RuntimeDefinition<Modules>;
26
+ export declare class Runtime<Modules extends RuntimeModulesRecord> extends ModuleContainer<Modules> implements RuntimeEnvironment, CompilableModule {
27
+ static from<Modules extends RuntimeModulesRecord>(definition: Modules): TypedClass<Runtime<Modules>>;
28
+ program?: ReturnType<typeof ZkProgram>;
29
+ definition: Modules;
37
30
  zkProgrammable: ZkProgrammable<undefined, MethodPublicOutput>;
38
- private readonly stateServiceProviderInstance;
39
31
  /**
40
32
  * Creates a new Runtime from the provided config
41
33
  *
42
34
  * @param modules - Configuration object for the constructed Runtime
43
35
  */
44
- constructor(definition: RuntimeDefinition<Modules>);
45
- start(): void;
46
- get appChain(): AreProofsEnabled | undefined;
47
- get stateService(): StateService;
36
+ constructor(definition: Modules);
37
+ create(childContainerProvider: ChildContainerProvider): void;
38
+ get areProofsEnabled(): AreProofsEnabled | undefined;
48
39
  get stateServiceProvider(): StateServiceProvider;
40
+ get stateService(): SimpleAsyncStateService;
41
+ get methodIdResolver(): MethodIdResolver;
49
42
  /**
50
43
  * @returns The dependency injection container of this runtime
51
44
  */
@@ -54,7 +47,7 @@ export declare class Runtime<Modules extends RuntimeModulesRecord> extends Modul
54
47
  * @param methodId The encoded name of the method to call.
55
48
  * Encoding: "stringToField(module.name) << 128 + stringToField(method-name)"
56
49
  */
57
- getMethodById(methodId: bigint): ((...args: unknown[]) => unknown) | undefined;
50
+ getMethodById(methodId: bigint): ((...args: unknown[]) => Promise<unknown>) | undefined;
58
51
  /**
59
52
  * Add a name and other respective properties required by RuntimeModules,
60
53
  * that come from the current Runtime
@@ -67,5 +60,6 @@ export declare class Runtime<Modules extends RuntimeModulesRecord> extends Modul
67
60
  * @returns A list of names of all the registered module names
68
61
  */
69
62
  get runtimeModuleNames(): string[];
63
+ compile(registry: CompileRegistry): Promise<Record<string, import("@proto-kit/common").CompileArtifact>>;
70
64
  }
71
65
  //# sourceMappingURL=Runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAc,MAAM,UAAU,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQzD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CACnC,CAAC;AAOF;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,oBAAoB;IACrE,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,qBAAqB,CAChC,OAAO,SAAS,oBAAoB,CACpC,SAAQ,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAE3B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;gBAAzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAInD,IAAW,QAAQ,iCAElB;IAEM,gBAAgB,IAAI,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC;CAgHzE;AAED;;;GAGG;AACH,qBACa,OAAO,CAAC,OAAO,SAAS,oBAAoB,CACvD,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC;WAE9C,IAAI,CAAC,OAAO,SAAS,oBAAoB,EACrD,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAMjC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IAEpD,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEvC,cAAc,EAAE,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAIrE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAE3C;IAEF;;;;OAIG;gBACgB,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAUlD,KAAK;IAOZ,IAAW,QAAQ,IAAI,gBAAgB,GAAG,SAAS,CAElD;IAED,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,oBAAoB,IAAI,oBAAoB,CAEtD;IAED;;OAEG;IACH,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IAED;;;OAGG;IACI,aAAa,CAClB,QAAQ,EAAE,MAAM,GACf,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,SAAS;IAwBhD;;;;;;OAMG;IACI,cAAc,CACnB,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAChC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAQ9D;;OAEG;IACH,IAAW,kBAAkB,aAE5B;CACF"}
1
+ {"version":3,"file":"Runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAa,mBAAmB,EAAc,MAAM,UAAU,CAAC;AACtE,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EAIxB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,uBAa3C;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CACnC,CAAC;AAOF,qBAAa,qBAAqB,CAChC,OAAO,SAAS,oBAAoB,CACpC,SAAQ,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;gBAAzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAInD,IAAW,gBAAgB,iCAE1B;IAEM,gBAAgB,IAAI,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE;CAyL3E;AAED;;;GAGG;AACH,qBACa,OAAO,CAAC,OAAO,SAAS,oBAAoB,CACvD,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,kBAAkB,EAAE,gBAAgB;WAEjC,IAAI,CAAC,OAAO,SAAS,oBAAoB,EACrD,UAAU,EAAE,OAAO,GAClB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IASxB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;IAIvC,UAAU,EAAE,OAAO,CAAC;IAEpB,cAAc,EAAE,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAErE;;;;OAIG;gBACgB,UAAU,EAAE,OAAO;IAO/B,MAAM,CAAC,sBAAsB,EAAE,sBAAsB;IAM5D,IAAW,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAE1D;IAED,IAAW,oBAAoB,IAAI,oBAAoB,CAEtD;IAED,IAAW,YAAY,IAAI,uBAAuB,CAEjD;IAED,IAAW,gBAAgB,IAAI,gBAAgB,CAE9C;IAED;;OAEG;IACH,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IAED;;;OAGG;IACI,aAAa,CAClB,QAAQ,EAAE,MAAM,GACf,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS;IAsBzD;;;;;;OAMG;IACI,cAAc,CACnB,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAChC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAQ9D;;OAEG;IACH,IAAW,kBAAkB,aAE5B;IAEY,OAAO,CAAC,QAAQ,EAAE,eAAe;CAQ/C"}
@@ -8,54 +8,62 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  var Runtime_1;
11
- // eslint-disable-next-line max-len
12
- /* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment,max-lines */
13
- import { Experimental } from "snarkyjs";
14
- import { injectable } from "tsyringe";
11
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-argument */
12
+ import { ZkProgram } from "o1js";
13
+ import { container, injectable } from "tsyringe";
15
14
  import { ModuleContainer, ZkProgrammable, } from "@proto-kit/common";
16
- import { MethodPublicOutput } from "@proto-kit/protocol";
17
- import { combineMethodName, isRuntimeMethod, toWrappedMethod, } from "../method/runtimeMethod.js";
18
- import { StateServiceProvider } from "../state/StateServiceProvider";
15
+ import { MethodPublicOutput, RuntimeMethodExecutionContext, RuntimeTransaction, NetworkState, } from "@proto-kit/protocol";
16
+ import { combineMethodName, isRuntimeMethod, runtimeMethodTypeMetadataKey, toWrappedMethod, } from "../method/runtimeMethod";
19
17
  import { MethodIdFactory } from "../factories/MethodIdFactory";
18
+ export function getAllPropertyNames(obj) {
19
+ let currentPrototype = obj;
20
+ let keys = [];
21
+ // if primitive (primitives still have keys) skip the first iteration
22
+ if (!(obj instanceof Object)) {
23
+ currentPrototype = Object.getPrototypeOf(obj);
24
+ }
25
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
26
+ while (currentPrototype) {
27
+ keys = keys.concat(Reflect.ownKeys(currentPrototype));
28
+ currentPrototype = Object.getPrototypeOf(currentPrototype);
29
+ }
30
+ return keys;
31
+ }
20
32
  const errors = {
21
33
  methodNotFound: (methodKey) => new Error(`Unable to find method with id ${methodKey}`),
22
34
  };
23
35
  export class RuntimeZkProgrammable extends ZkProgrammable {
24
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
25
36
  constructor(runtime) {
26
37
  super();
27
38
  this.runtime = runtime;
28
39
  }
29
- get appChain() {
30
- return this.runtime.appChain;
40
+ get areProofsEnabled() {
41
+ return this.runtime.areProofsEnabled;
31
42
  }
32
43
  zkProgramFactory() {
33
44
  // We need to use explicit type annotations here,
34
45
  // therefore we can't use destructuring
35
- // eslint-disable-next-line max-len
36
- // eslint-disable-next-line @typescript-eslint/no-use-before-define,prefer-destructuring,putout/putout
46
+ // eslint-disable-next-line prefer-destructuring
37
47
  const runtime = this.runtime;
48
+ const MAXIMUM_METHODS_PER_ZK_PROGRAM = 8;
38
49
  const runtimeMethods = runtime.runtimeModuleNames.reduce((allMethods, runtimeModuleName) => {
39
- runtime.isValidModuleName(runtime.definition.modules, runtimeModuleName);
50
+ runtime.isValidModuleName(runtime.definition, runtimeModuleName);
40
51
  /**
41
52
  * Couldnt find a better way to circumvent the type assertion
42
53
  * regarding resolving only known modules. We assert in the line above
43
54
  * but we cast it to any anyways to satisfy the proof system.
44
55
  */
45
- // eslint-disable-next-line max-len
46
56
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
47
57
  const runtimeModule = runtime.resolve(runtimeModuleName);
48
- // eslint-disable-next-line max-len
49
58
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
50
59
  const modulePrototype = Object.getPrototypeOf(runtimeModule);
51
- const modulePrototypeMethods = Object.getOwnPropertyNames(modulePrototype);
60
+ const modulePrototypeMethods = getAllPropertyNames(runtimeModule).map((method) => method.toString());
52
61
  const moduleMethods = modulePrototypeMethods.reduce((allModuleMethods, methodName) => {
53
62
  if (isRuntimeMethod(runtimeModule, methodName)) {
54
63
  const combinedMethodName = combineMethodName(runtimeModuleName, methodName);
55
64
  const method = modulePrototype[methodName];
56
- const wrappedMethod = Reflect.apply(toWrappedMethod, runtimeModule, [methodName, method]);
57
- // eslint-disable-next-line no-warning-comments
58
- // TODO: find out how to import the Tuple type
65
+ const invocationType = Reflect.getMetadata(runtimeMethodTypeMetadataKey, runtimeModule, methodName);
66
+ const wrappedMethod = Reflect.apply(toWrappedMethod, runtimeModule, [methodName, method, { invocationType }]);
59
67
  const privateInputs = Reflect.getMetadata("design:paramtypes", runtimeModule, methodName);
60
68
  return {
61
69
  ...allModuleMethods,
@@ -72,33 +80,78 @@ export class RuntimeZkProgrammable extends ZkProgrammable {
72
80
  ...moduleMethods,
73
81
  };
74
82
  }, {});
75
- const sortedRuntimeMethods = Object.fromEntries(
76
- // eslint-disable-next-line @typescript-eslint/require-array-sort-compare
77
- Object.entries(runtimeMethods).sort());
78
- const program = Experimental.ZkProgram({
79
- publicOutput: MethodPublicOutput,
80
- methods: sortedRuntimeMethods,
81
- });
82
- const SelfProof = Experimental.ZkProgram.Proof(program);
83
- const methods = Object.keys(sortedRuntimeMethods).reduce((boundMethods, methodName) => {
84
- boundMethods[methodName] = program[methodName].bind(program);
85
- return boundMethods;
86
- }, {});
87
- return {
88
- compile: program.compile.bind(program),
89
- verify: program.verify.bind(program),
90
- Proof: SelfProof,
91
- methods,
83
+ const sortedRuntimeMethods = Object.fromEntries(Object.entries(runtimeMethods).sort());
84
+ const splitRuntimeMethods = () => {
85
+ const buckets = [];
86
+ Object.entries(sortedRuntimeMethods).forEach(async ([methodName, method]) => {
87
+ let methodAdded = false;
88
+ for (const bucket of buckets) {
89
+ if (buckets.length === 0) {
90
+ const record = {};
91
+ record[methodName] = method;
92
+ buckets.push(record);
93
+ methodAdded = true;
94
+ break;
95
+ }
96
+ else if (Object.keys(bucket).length <=
97
+ MAXIMUM_METHODS_PER_ZK_PROGRAM - 1) {
98
+ bucket[methodName] = method;
99
+ methodAdded = true;
100
+ break;
101
+ }
102
+ }
103
+ if (!methodAdded) {
104
+ const record = {};
105
+ record[methodName] = method;
106
+ buckets.push(record);
107
+ }
108
+ });
109
+ return buckets;
92
110
  };
111
+ return splitRuntimeMethods().map((bucket, index) => {
112
+ const name = `RuntimeProgram-${index}`;
113
+ const wrappedBucket = Object.fromEntries(Object.entries(bucket).map(([methodName, methodDef]) => [
114
+ methodName,
115
+ {
116
+ privateInputs: methodDef.privateInputs,
117
+ method: async (...args) => {
118
+ const publicOutput = await methodDef.method(...args);
119
+ return { publicOutput };
120
+ },
121
+ },
122
+ ]));
123
+ const program = ZkProgram({
124
+ name,
125
+ publicOutput: MethodPublicOutput,
126
+ methods: wrappedBucket,
127
+ });
128
+ const SelfProof = ZkProgram.Proof(program);
129
+ const methods = Object.keys(bucket).reduce((boundMethods, methodName) => {
130
+ boundMethods[methodName] = program[methodName].bind(program);
131
+ return boundMethods;
132
+ }, {});
133
+ return {
134
+ name,
135
+ compile: program.compile.bind(program),
136
+ verify: program.verify.bind(program),
137
+ analyzeMethods: program.analyzeMethods.bind(program),
138
+ Proof: SelfProof,
139
+ methods,
140
+ };
141
+ });
93
142
  }
94
143
  }
95
144
  /**
96
145
  * Wrapper for an application specific runtime, which helps orchestrate
97
146
  * runtime modules into an interoperable runtime.
98
147
  */
99
- let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
148
+ export let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
100
149
  static from(definition) {
101
- return new Runtime_1(definition);
150
+ return class RuntimeScoped extends Runtime_1 {
151
+ constructor() {
152
+ super(definition);
153
+ }
154
+ };
102
155
  }
103
156
  /**
104
157
  * Creates a new Runtime from the provided config
@@ -107,29 +160,25 @@ let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
107
160
  */
108
161
  constructor(definition) {
109
162
  super(definition);
110
- // eslint-disable-next-line no-warning-comments
111
- // TODO DI
112
- this.stateServiceProviderInstance = new StateServiceProvider(this.definition.state);
113
163
  this.definition = definition;
114
164
  this.zkProgrammable = new RuntimeZkProgrammable(this);
115
- // this.registerDependencyFactories([MethodIdFactory]);
116
165
  }
117
- // eslint-disable-next-line no-warning-comments
118
166
  // TODO Remove after changing DFs to type-based approach
119
- start() {
120
- this.registerValue({
121
- Runtime: this,
122
- });
123
- this.registerDependencyFactories([MethodIdFactory]);
167
+ create(childContainerProvider) {
168
+ super.create(childContainerProvider);
169
+ this.useDependencyFactory(MethodIdFactory);
124
170
  }
125
- get appChain() {
126
- return this.container.resolve("AppChain");
171
+ get areProofsEnabled() {
172
+ return this.container.resolve("AreProofsEnabled");
173
+ }
174
+ get stateServiceProvider() {
175
+ return this.container.resolve("StateServiceProvider");
127
176
  }
128
177
  get stateService() {
129
- return this.stateServiceProviderInstance.stateService;
178
+ return this.stateServiceProvider.stateService;
130
179
  }
131
- get stateServiceProvider() {
132
- return this.stateServiceProviderInstance;
180
+ get methodIdResolver() {
181
+ return this.container.resolve("MethodIdResolver");
133
182
  }
134
183
  /**
135
184
  * @returns The dependency injection container of this runtime
@@ -142,17 +191,14 @@ let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
142
191
  * Encoding: "stringToField(module.name) << 128 + stringToField(method-name)"
143
192
  */
144
193
  getMethodById(methodId) {
145
- const methodDescriptor = this.container
146
- .resolve("MethodIdResolver")
147
- .getMethodNameFromId(methodId);
194
+ const methodDescriptor = this.methodIdResolver.getMethodNameFromId(methodId);
148
195
  if (methodDescriptor === undefined) {
149
196
  return undefined;
150
197
  }
151
198
  const [moduleName, methodName] = methodDescriptor;
152
- this.isValidModuleName(this.definition.modules, moduleName);
199
+ this.assertIsValidModuleName(moduleName);
153
200
  const module = this.resolve(moduleName);
154
- // eslint-disable-next-line max-len
155
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions,@typescript-eslint/no-unsafe-member-access
201
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
156
202
  const method = module[methodName];
157
203
  if (method === undefined) {
158
204
  throw errors.methodNotFound(`${moduleName}.${methodName}`);
@@ -169,18 +215,27 @@ let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
169
215
  */
170
216
  decorateModule(moduleName, containedModule) {
171
217
  containedModule.name = moduleName;
172
- containedModule.runtime = this;
218
+ containedModule.parent = this;
173
219
  super.decorateModule(moduleName, containedModule);
174
220
  }
175
221
  /**
176
222
  * @returns A list of names of all the registered module names
177
223
  */
178
224
  get runtimeModuleNames() {
179
- return Object.keys(this.definition.modules);
225
+ return this.moduleNames;
226
+ }
227
+ async compile(registry) {
228
+ const context = container.resolve(RuntimeMethodExecutionContext);
229
+ context.setup({
230
+ transaction: RuntimeTransaction.dummyTransaction(),
231
+ networkState: NetworkState.empty(),
232
+ });
233
+ return await this.zkProgrammable.compile(registry);
180
234
  }
181
235
  };
182
236
  Runtime = Runtime_1 = __decorate([
183
237
  injectable(),
184
238
  __metadata("design:paramtypes", [Object])
185
239
  ], Runtime);
186
- export { Runtime };
240
+ /* eslint-enable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-argument */
241
+ //# sourceMappingURL=Runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Runtime.js","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { AreProofsEnabled, WithZkProgrammable } from "@proto-kit/common";
2
+ import { MethodPublicOutput, SimpleAsyncStateService, StateServiceProvider } from "@proto-kit/protocol";
3
+ import { MethodIdResolver } from "./MethodIdResolver";
4
+ export interface RuntimeEnvironment extends WithZkProgrammable<undefined, MethodPublicOutput> {
5
+ get areProofsEnabled(): AreProofsEnabled | undefined;
6
+ get stateService(): SimpleAsyncStateService;
7
+ get stateServiceProvider(): StateServiceProvider;
8
+ get methodIdResolver(): MethodIdResolver;
9
+ }
10
+ //# sourceMappingURL=RuntimeEnvironment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeEnvironment.d.ts","sourceRoot":"","sources":["../../src/runtime/RuntimeEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,kBACf,SAAQ,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACzD,IAAI,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACrD,IAAI,YAAY,IAAI,uBAAuB,CAAC;IAC5C,IAAI,oBAAoB,IAAI,oBAAoB,CAAC;IACjD,IAAI,gBAAgB,IAAI,gBAAgB,CAAC;CAC1C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RuntimeEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeEnvironment.js","sourceRoot":"","sources":["../../src/runtime/RuntimeEnvironment.ts"],"names":[],"mappings":""}
@@ -1,19 +1,20 @@
1
- import { ConfigurableModule, Presets } from "@proto-kit/common";
2
- import { NetworkState, RuntimeTransaction } from "@proto-kit/protocol";
3
- import { StateService } from "../state/InMemoryStateService";
4
- import type { Runtime, RuntimeDefinition, RuntimeModulesRecord } from "./Runtime";
5
- /**
6
- * This type exists to carry over certain runtime properties
7
- * to runtime modules, until we can inject them through DI.
8
- */
9
- export interface PartialRuntime extends Pick<Runtime<RuntimeModulesRecord>, "zkProgrammable"> {
10
- definition: Pick<RuntimeDefinition<RuntimeModulesRecord>, "state">;
11
- get stateService(): StateService;
1
+ import { ConfigurableModule, NoConfig, Presets } from "@proto-kit/common";
2
+ import { NetworkState, RuntimeTransaction, RuntimeMethodExecutionData } from "@proto-kit/protocol";
3
+ import { FlexibleProvablePure, Provable, Bool } from "o1js";
4
+ import { OutgoingMessages, OutgoingMessagesRecord } from "../messages/OutgoingMessages";
5
+ import { RuntimeEnvironment } from "./RuntimeEnvironment";
6
+ type EventRecord = Record<string, FlexibleProvablePure<any>>;
7
+ type InferProvable<T extends FlexibleProvablePure<any>> = T extends Provable<infer U> ? U : never;
8
+ export declare class RuntimeEvents<Events extends EventRecord> {
9
+ private readonly events;
10
+ constructor(events: Events);
11
+ emitIf<Key extends keyof Events>(condition: Bool, eventName: Key, event: InferProvable<Events[Key]>): void;
12
+ emit<Key extends keyof Events>(eventName: Key, event: InferProvable<Events[Key]>): void;
12
13
  }
13
14
  /**
14
15
  * Base class for runtime modules providing the necessary utilities.
15
16
  */
16
- export declare class RuntimeModule<Config> extends ConfigurableModule<Config> {
17
+ export declare class RuntimeModule<Config = NoConfig> extends ConfigurableModule<Config> {
17
18
  static presets: Presets<unknown>;
18
19
  /**
19
20
  * Holds all method names that are callable throw transactions
@@ -26,11 +27,13 @@ export declare class RuntimeModule<Config> extends ConfigurableModule<Config> {
26
27
  */
27
28
  isRuntimeModule: boolean;
28
29
  name?: string;
29
- test?: number;
30
- runtime?: Runtime<RuntimeModulesRecord>;
30
+ parent?: RuntimeEnvironment;
31
+ events?: RuntimeEvents<any>;
32
+ messages?: OutgoingMessages<OutgoingMessagesRecord>;
31
33
  constructor();
32
- private getInputs;
34
+ getInputs(): RuntimeMethodExecutionData;
33
35
  get transaction(): RuntimeTransaction;
34
36
  get network(): NetworkState;
35
37
  }
38
+ export {};
36
39
  //# sourceMappingURL=RuntimeModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeModule.d.ts","sourceRoot":"","sources":["../../src/runtime/RuntimeModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMvE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAMnB;;;GAGG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,CAAC;IAC7D,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC;IAEnE,IAAI,YAAY,IAAI,YAAY,CAAC;CAClC;AAED;;GAEG;AACH,qBACa,aAAa,CAAC,MAAM,CAAE,SAAQ,kBAAkB,CAAC,MAAM,CAAC;IACnE,OAAc,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAM;IAE7C;;OAEG;IACH,SAAgB,kBAAkB,EAAE,MAAM,EAAE,CAAM;IAElD;;;;OAIG;IACI,eAAe,UAAQ;IAEvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;;IAY/C,OAAO,CAAC,SAAS;IAWjB,IAAW,WAAW,IAAI,kBAAkB,CAE3C;IAED,IAAW,OAAO,IAAI,YAAY,CAEjC;CACF"}
1
+ {"version":3,"file":"RuntimeModule.d.ts","sourceRoot":"","sources":["../../src/runtime/RuntimeModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EACL,YAAY,EACZ,kBAAkB,EAElB,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5D,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,KAAK,aAAa,CAAC,CAAC,SAAS,oBAAoB,CAAC,GAAG,CAAC,IACpD,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE1C,qBAAa,aAAa,CAAC,MAAM,SAAS,WAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,MAAM,CAAC,GAAG,SAAS,MAAM,MAAM,EACpC,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,GAAG,EACd,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAgB5B,IAAI,CAAC,GAAG,SAAS,MAAM,MAAM,EAClC,SAAS,EAAE,GAAG,EACd,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAIpC;AAED;;GAEG;AACH,qBACa,aAAa,CACxB,MAAM,GAAG,QAAQ,CACjB,SAAQ,kBAAkB,CAAC,MAAM,CAAC;IAClC,OAAc,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAM;IAE7C;;OAEG;IACH,SAAgB,kBAAkB,EAAE,MAAM,EAAE,CAAM;IAElD;;;;OAIG;IACI,eAAe,UAAQ;IAEvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAE5B,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAa;IAExC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAa;;IAYhE,SAAS,IAAI,0BAA0B;IAa9C,IAAW,WAAW,IAAI,kBAAkB,CAE3C;IAED,IAAW,OAAO,IAAI,YAAY,CAEjC;CACF"}
@@ -9,15 +9,36 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import { ConfigurableModule } from "@proto-kit/common";
11
11
  import { container, injectable } from "tsyringe";
12
- import { RuntimeMethodExecutionContext, } from "../method/RuntimeMethodExecutionContext";
12
+ import { RuntimeMethodExecutionContext, RuntimeMethodExecutionDataStruct, } from "@proto-kit/protocol";
13
+ import { Provable, Bool } from "o1js";
13
14
  import { runtimeMethodNamesMetadataKey } from "../method/runtimeMethod";
14
15
  const errors = {
15
16
  inputDataNotSet: () => new Error("Input data for runtime execution not set"),
16
17
  };
18
+ export class RuntimeEvents {
19
+ constructor(events) {
20
+ this.events = events;
21
+ }
22
+ emitIf(condition, eventName, event) {
23
+ if (this.events === undefined) {
24
+ throw new Error("'events' property not defined, make sure to define the event types on your runtimemodule");
25
+ }
26
+ const eventType = this.events[eventName];
27
+ if (typeof eventName !== "string") {
28
+ throw new Error("Only string");
29
+ }
30
+ return container
31
+ .resolve(RuntimeMethodExecutionContext)
32
+ .addEvent(eventType, event, eventName, condition);
33
+ }
34
+ emit(eventName, event) {
35
+ this.emitIf(Bool(true), eventName, event);
36
+ }
37
+ }
17
38
  /**
18
39
  * Base class for runtime modules providing the necessary utilities.
19
40
  */
20
- let RuntimeModule = class RuntimeModule extends ConfigurableModule {
41
+ export let RuntimeModule = class RuntimeModule extends ConfigurableModule {
21
42
  constructor() {
22
43
  super();
23
44
  /**
@@ -30,16 +51,20 @@ let RuntimeModule = class RuntimeModule extends ConfigurableModule {
30
51
  * one non-optional property in this class to make the typechecking work.
31
52
  */
32
53
  this.isRuntimeModule = true;
54
+ this.events = undefined;
55
+ this.messages = undefined;
33
56
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
34
57
  const methodNames = Reflect.getMetadata(runtimeMethodNamesMetadataKey, this);
35
58
  this.runtimeMethodNames = methodNames ?? [];
36
59
  }
37
60
  getInputs() {
38
- const { input } = container.resolve(RuntimeMethodExecutionContext);
39
- if (input === undefined) {
40
- throw errors.inputDataNotSet();
41
- }
42
- return input;
61
+ return Provable.witness(RuntimeMethodExecutionDataStruct, () => {
62
+ const { input } = container.resolve(RuntimeMethodExecutionContext);
63
+ if (input === undefined) {
64
+ throw errors.inputDataNotSet();
65
+ }
66
+ return input;
67
+ });
43
68
  }
44
69
  get transaction() {
45
70
  return this.getInputs().transaction;
@@ -53,4 +78,4 @@ RuntimeModule = __decorate([
53
78
  injectable(),
54
79
  __metadata("design:paramtypes", [])
55
80
  ], RuntimeModule);
56
- export { RuntimeModule };
81
+ //# sourceMappingURL=RuntimeModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeModule.js","sourceRoot":"","sources":["../../src/runtime/RuntimeModule.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAGL,6BAA6B,EAE7B,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAwB,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAQxE,MAAM,MAAM,GAAG;IACb,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC;CAC7E,CAAC;AAOF,MAAM,OAAO,aAAa;IACxB,YAAoC,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,MAAM,CACX,SAAe,EACf,SAAc,EACd,KAAiC;QAEjC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;SACH;QACD,MAAM,SAAS,GAA8B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,OAAO,SAAS;aACb,OAAO,CAAC,6BAA6B,CAAC;aACtC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAEM,IAAI,CACT,SAAc,EACd,KAAiC;QAEjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AAED;;GAEG;AAEI,WAAM,aAAa,GAAnB,MAAM,aAEX,SAAQ,kBAA0B;IAuBlC;QACE,KAAK,EAAE,CAAC;QArBV;;WAEG;QACa,uBAAkB,GAAa,EAAE,CAAC;QAElD;;;;WAIG;QACI,oBAAe,GAAG,IAAI,CAAC;QAMvB,WAAM,GAAwB,SAAS,CAAC;QAExC,aAAQ,GAA8C,SAAS,CAAC;QAIrE,mEAAmE;QACnE,MAAM,WAAW,GAAyB,OAAO,CAAC,WAAW,CAC3D,6BAA6B,EAC7B,IAAI,CACL,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,WAAW,IAAI,EAAE,CAAC;IAC9C,CAAC;IAEM,SAAS;QACd,OAAO,QAAQ,CAAC,OAAO,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,OAAO,CACjC,6BAA6B,CAC9B,CAAC;YACF,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;aAChC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC;IACtC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC;IACvC,CAAC;;AAnDa,qBAAO,GAAqB,EAAE,AAAvB,CAAwB;AAHlC,aAAa;IADzB,UAAU,EAAE;;GACA,aAAa,CAuDzB"}
@@ -1,14 +1,15 @@
1
- import { Field } from "snarkyjs";
2
- export interface StateService {
3
- get: (key: Field) => Field[] | undefined;
4
- set: (key: Field, value: Field[] | undefined) => void;
5
- }
1
+ import { Field } from "o1js";
2
+ import { SimpleAsyncStateService } from "@proto-kit/protocol";
6
3
  /**
7
- * Naive implementation of a StateService for testing purposes
4
+ * Naive implementation of an in-memory variant of the StateService interface
8
5
  */
9
- export declare class InMemoryStateService implements StateService {
10
- values: Record<string, Field[] | undefined>;
11
- get(key: Field): Field[] | undefined;
12
- set(key: Field, value: Field[] | undefined): void;
6
+ export declare class InMemoryStateService implements SimpleAsyncStateService {
7
+ /**
8
+ * This mapping container null values if the specific entry has been deleted.
9
+ * This is used by the CachedState service to keep track of deletions
10
+ */
11
+ values: Record<string, Field[] | null>;
12
+ get(key: Field): Promise<Field[] | undefined>;
13
+ set(key: Field, value: Field[] | undefined): Promise<void>;
13
14
  }
14
15
  //# sourceMappingURL=InMemoryStateService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryStateService.d.ts","sourceRoot":"","sources":["../../src/state/InMemoryStateService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,EAAE,GAAG,SAAS,CAAC;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,KAAK,IAAI,CAAC;CACvD;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAM;IAEjD,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,SAAS;IAIpC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;CAWlD"}
1
+ {"version":3,"file":"InMemoryStateService.d.ts","sourceRoot":"","sources":["../../src/state/InMemoryStateService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,uBAAuB;IAClE;;;OAGG;IACI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAM;IAEtC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC;IAI7C,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;CAOxD"}
@@ -1,21 +1,24 @@
1
1
  /**
2
- * Naive implementation of a StateService for testing purposes
2
+ * Naive implementation of an in-memory variant of the StateService interface
3
3
  */
4
4
  export class InMemoryStateService {
5
5
  constructor() {
6
+ /**
7
+ * This mapping container null values if the specific entry has been deleted.
8
+ * This is used by the CachedState service to keep track of deletions
9
+ */
6
10
  this.values = {};
7
11
  }
8
- get(key) {
9
- return this.values[key.toString()];
12
+ async get(key) {
13
+ return this.values[key.toString()] ?? undefined;
10
14
  }
11
- set(key, value) {
12
- if (value === undefined &&
13
- Object.prototype.hasOwnProperty.call(this.values, key.toString())) {
14
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
15
- delete this.values[key.toString()];
15
+ async set(key, value) {
16
+ if (value === undefined) {
17
+ this.values[key.toString()] = null;
16
18
  }
17
19
  else {
18
20
  this.values[key.toString()] = value;
19
21
  }
20
22
  }
21
23
  }
24
+ //# sourceMappingURL=InMemoryStateService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryStateService.js","sourceRoot":"","sources":["../../src/state/InMemoryStateService.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAAjC;QACE;;;WAGG;QACI,WAAM,GAAmC,EAAE,CAAC;IAarD,CAAC;IAXQ,KAAK,CAAC,GAAG,CAAC,GAAU;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,SAAS,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAU,EAAE,KAA0B;QACrD,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;SACrC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/state/decorator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAkBjE;;;GAGG;AACH,wBAAgB,KAAK,mGAGJ,MAAM,UAqCtB"}
1
+ {"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/state/decorator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAgBjE;;;GAGG;AACH,wBAAgB,KAAK,mGAGJ,MAAM,UAmCtB"}