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

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 (249) hide show
  1. package/dist/compiling/AtomicCompileHelper.d.ts +13 -0
  2. package/dist/compiling/AtomicCompileHelper.d.ts.map +1 -0
  3. package/dist/compiling/AtomicCompileHelper.js +40 -0
  4. package/dist/compiling/AtomicCompileHelper.js.map +1 -0
  5. package/dist/compiling/CompilableModule.d.ts +6 -0
  6. package/dist/compiling/CompilableModule.d.ts.map +1 -0
  7. package/dist/compiling/CompilableModule.js +2 -0
  8. package/dist/compiling/CompilableModule.js.map +1 -0
  9. package/dist/compiling/CompileRegistry.d.ts +26 -0
  10. package/dist/compiling/CompileRegistry.d.ts.map +1 -0
  11. package/dist/compiling/CompileRegistry.js +69 -0
  12. package/dist/compiling/CompileRegistry.js.map +1 -0
  13. package/dist/compiling/services/ChildVerificationKeyService.d.ts +10 -0
  14. package/dist/compiling/services/ChildVerificationKeyService.d.ts.map +1 -0
  15. package/dist/compiling/services/ChildVerificationKeyService.js +27 -0
  16. package/dist/compiling/services/ChildVerificationKeyService.js.map +1 -0
  17. package/dist/config/ChildContainerCreatable.d.ts +5 -0
  18. package/dist/config/ChildContainerCreatable.d.ts.map +1 -0
  19. package/dist/config/ChildContainerCreatable.js +2 -0
  20. package/dist/config/ChildContainerCreatable.js.map +1 -0
  21. package/dist/config/ChildContainerProvider.d.ts +5 -0
  22. package/dist/config/ChildContainerProvider.d.ts.map +1 -0
  23. package/dist/config/ChildContainerProvider.js +2 -0
  24. package/dist/config/ChildContainerProvider.js.map +1 -0
  25. package/dist/config/ConfigurableModule.d.ts +6 -2
  26. package/dist/config/ConfigurableModule.d.ts.map +1 -1
  27. package/dist/config/ConfigurableModule.js +5 -0
  28. package/dist/config/ConfigurableModule.js.map +1 -0
  29. package/dist/config/ModuleContainer.d.ts +70 -17
  30. package/dist/config/ModuleContainer.d.ts.map +1 -1
  31. package/dist/config/ModuleContainer.js +164 -22
  32. package/dist/config/ModuleContainer.js.map +1 -0
  33. package/dist/config/Startable.d.ts +4 -0
  34. package/dist/config/Startable.d.ts.map +1 -0
  35. package/dist/config/Startable.js +2 -0
  36. package/dist/config/Startable.js.map +1 -0
  37. package/dist/config/injectAlias.d.ts +18 -0
  38. package/dist/config/injectAlias.d.ts.map +1 -0
  39. package/dist/config/injectAlias.js +47 -0
  40. package/dist/config/injectAlias.js.map +1 -0
  41. package/dist/dependencyFactory/DependencyFactory.d.ts +29 -0
  42. package/dist/dependencyFactory/DependencyFactory.d.ts.map +1 -0
  43. package/dist/dependencyFactory/DependencyFactory.js +2 -0
  44. package/dist/dependencyFactory/DependencyFactory.js.map +1 -0
  45. package/dist/dummyVerificationKey.d.ts +3 -0
  46. package/dist/dummyVerificationKey.d.ts.map +1 -0
  47. package/dist/dummyVerificationKey.js +8 -0
  48. package/dist/dummyVerificationKey.js.map +1 -0
  49. package/dist/events/EventEmitter.d.ts +19 -0
  50. package/dist/events/EventEmitter.d.ts.map +1 -0
  51. package/dist/events/EventEmitter.js +35 -0
  52. package/dist/events/EventEmitter.js.map +1 -0
  53. package/dist/events/EventEmitterProxy.d.ts +18 -0
  54. package/dist/events/EventEmitterProxy.d.ts.map +1 -0
  55. package/dist/events/EventEmitterProxy.js +35 -0
  56. package/dist/events/EventEmitterProxy.js.map +1 -0
  57. package/dist/events/EventEmittingComponent.d.ts +9 -0
  58. package/dist/events/EventEmittingComponent.d.ts.map +1 -0
  59. package/dist/events/EventEmittingComponent.js +2 -0
  60. package/dist/events/EventEmittingComponent.js.map +1 -0
  61. package/dist/events/ReplayingSingleUseEventEmitter.d.ts +17 -0
  62. package/dist/events/ReplayingSingleUseEventEmitter.d.ts.map +1 -0
  63. package/dist/events/ReplayingSingleUseEventEmitter.js +34 -0
  64. package/dist/events/ReplayingSingleUseEventEmitter.js.map +1 -0
  65. package/dist/index.d.ts +24 -1
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +25 -2
  68. package/dist/index.js.map +1 -0
  69. package/dist/log.d.ts +37 -0
  70. package/dist/log.d.ts.map +1 -0
  71. package/dist/log.js +114 -0
  72. package/dist/log.js.map +1 -0
  73. package/dist/trees/lmt/AbstractLinkedMerkleTree.d.ts +288 -0
  74. package/dist/trees/lmt/AbstractLinkedMerkleTree.d.ts.map +1 -0
  75. package/dist/trees/lmt/AbstractLinkedMerkleTree.js +22 -0
  76. package/dist/trees/lmt/AbstractLinkedMerkleTree.js.map +1 -0
  77. package/dist/trees/lmt/InMemoryLinkedLeafStore.d.ts +21 -0
  78. package/dist/trees/lmt/InMemoryLinkedLeafStore.d.ts.map +1 -0
  79. package/dist/trees/lmt/InMemoryLinkedLeafStore.js +26 -0
  80. package/dist/trees/lmt/InMemoryLinkedLeafStore.js.map +1 -0
  81. package/dist/trees/lmt/LinkedLeafStore.d.ts +16 -0
  82. package/dist/trees/lmt/LinkedLeafStore.d.ts.map +1 -0
  83. package/dist/trees/lmt/LinkedLeafStore.js +2 -0
  84. package/dist/trees/lmt/LinkedLeafStore.js.map +1 -0
  85. package/dist/trees/lmt/LinkedMerkleTree.d.ts +11 -0
  86. package/dist/trees/lmt/LinkedMerkleTree.d.ts.map +1 -0
  87. package/dist/trees/lmt/LinkedMerkleTree.js +241 -0
  88. package/dist/trees/lmt/LinkedMerkleTree.js.map +1 -0
  89. package/dist/trees/lmt/LinkedMerkleTreeCircuitOps.d.ts +113 -0
  90. package/dist/trees/lmt/LinkedMerkleTreeCircuitOps.d.ts.map +1 -0
  91. package/dist/trees/lmt/LinkedMerkleTreeCircuitOps.js +113 -0
  92. package/dist/trees/lmt/LinkedMerkleTreeCircuitOps.js.map +1 -0
  93. package/dist/trees/lmt/LinkedMerkleTreeTypes.d.ts +74 -0
  94. package/dist/trees/lmt/LinkedMerkleTreeTypes.d.ts.map +1 -0
  95. package/dist/trees/lmt/LinkedMerkleTreeTypes.js +50 -0
  96. package/dist/trees/lmt/LinkedMerkleTreeTypes.js.map +1 -0
  97. package/dist/trees/sparse/InMemoryMerkleTreeStorage.d.ts +11 -0
  98. package/dist/trees/sparse/InMemoryMerkleTreeStorage.d.ts.map +1 -0
  99. package/dist/trees/sparse/InMemoryMerkleTreeStorage.js +13 -0
  100. package/dist/trees/sparse/InMemoryMerkleTreeStorage.js.map +1 -0
  101. package/dist/trees/sparse/MerkleTreeStore.d.ts +5 -0
  102. package/dist/trees/sparse/MerkleTreeStore.d.ts.map +1 -0
  103. package/dist/trees/sparse/MerkleTreeStore.js +2 -0
  104. package/dist/trees/sparse/MerkleTreeStore.js.map +1 -0
  105. package/dist/trees/sparse/MockAsyncMerkleStore.d.ts +9 -0
  106. package/dist/trees/sparse/MockAsyncMerkleStore.d.ts.map +1 -0
  107. package/dist/trees/sparse/MockAsyncMerkleStore.js +20 -0
  108. package/dist/trees/sparse/MockAsyncMerkleStore.js.map +1 -0
  109. package/dist/trees/sparse/RollupMerkleTree.d.ts +157 -0
  110. package/dist/trees/sparse/RollupMerkleTree.d.ts.map +1 -0
  111. package/dist/trees/sparse/RollupMerkleTree.js +272 -0
  112. package/dist/trees/sparse/RollupMerkleTree.js.map +1 -0
  113. package/dist/types.d.ts +16 -0
  114. package/dist/types.d.ts.map +1 -1
  115. package/dist/types.js +12 -1
  116. package/dist/types.js.map +1 -0
  117. package/dist/utils.d.ts +62 -0
  118. package/dist/utils.d.ts.map +1 -1
  119. package/dist/utils.js +155 -0
  120. package/dist/utils.js.map +1 -0
  121. package/dist/zkProgrammable/ProvableMethodExecutionContext.d.ts +4 -3
  122. package/dist/zkProgrammable/ProvableMethodExecutionContext.d.ts.map +1 -1
  123. package/dist/zkProgrammable/ProvableMethodExecutionContext.js +2 -3
  124. package/dist/zkProgrammable/ProvableMethodExecutionContext.js.map +1 -0
  125. package/dist/zkProgrammable/ZkProgrammable.d.ts +15 -7
  126. package/dist/zkProgrammable/ZkProgrammable.d.ts.map +1 -1
  127. package/dist/zkProgrammable/ZkProgrammable.js +34 -15
  128. package/dist/zkProgrammable/ZkProgrammable.js.map +1 -0
  129. package/dist/zkProgrammable/provableMethod.d.ts +8 -5
  130. package/dist/zkProgrammable/provableMethod.d.ts.map +1 -1
  131. package/dist/zkProgrammable/provableMethod.js +15 -13
  132. package/dist/zkProgrammable/provableMethod.js.map +1 -0
  133. package/jest.config.cjs +12 -1
  134. package/package.json +8 -7
  135. package/src/compiling/AtomicCompileHelper.ts +62 -0
  136. package/src/compiling/CompilableModule.ts +6 -0
  137. package/src/compiling/CompileRegistry.ts +79 -0
  138. package/src/compiling/services/ChildVerificationKeyService.ts +26 -0
  139. package/src/config/ChildContainerCreatable.ts +5 -0
  140. package/src/config/ChildContainerProvider.ts +5 -0
  141. package/src/config/ConfigurableModule.ts +15 -2
  142. package/src/config/ModuleContainer.ts +287 -46
  143. package/src/config/Startable.ts +3 -0
  144. package/src/config/injectAlias.ts +70 -0
  145. package/src/dependencyFactory/DependencyFactory.ts +57 -0
  146. package/src/dummyVerificationKey.ts +10 -0
  147. package/src/events/EventEmitter.ts +61 -0
  148. package/src/events/EventEmitterProxy.ts +81 -0
  149. package/src/events/EventEmittingComponent.ts +11 -0
  150. package/src/events/ReplayingSingleUseEventEmitter.ts +42 -0
  151. package/src/index.ts +24 -2
  152. package/src/log.ts +143 -0
  153. package/src/trees/lmt/AbstractLinkedMerkleTree.ts +102 -0
  154. package/src/trees/lmt/InMemoryLinkedLeafStore.ts +42 -0
  155. package/src/trees/lmt/LinkedLeafStore.ts +13 -0
  156. package/src/trees/lmt/LinkedMerkleTree.ts +335 -0
  157. package/src/trees/lmt/LinkedMerkleTreeCircuitOps.ts +188 -0
  158. package/src/trees/lmt/LinkedMerkleTreeTypes.ts +53 -0
  159. package/src/trees/sparse/InMemoryMerkleTreeStorage.ts +17 -0
  160. package/src/trees/sparse/MerkleTreeStore.ts +5 -0
  161. package/src/trees/sparse/MockAsyncMerkleStore.ts +30 -0
  162. package/src/trees/sparse/RollupMerkleTree.ts +427 -0
  163. package/src/types.ts +43 -2
  164. package/src/utils.ts +287 -0
  165. package/src/zkProgrammable/ProvableMethodExecutionContext.ts +6 -6
  166. package/src/zkProgrammable/ZkProgrammable.ts +61 -29
  167. package/src/zkProgrammable/provableMethod.ts +38 -21
  168. package/test/config/ContainerEvents.test.ts +65 -0
  169. package/test/config/ModuleContainer.test.ts +146 -15
  170. package/test/config/injectAlias.test.ts +28 -0
  171. package/test/trees/LinkedMerkleTree.test.ts +124 -0
  172. package/test/trees/LinkedMerkleTreeCircuitOps.test.ts +147 -0
  173. package/test/trees/MerkleTree.test.ts +220 -0
  174. package/test/tsconfig.json +5 -2
  175. package/test/zkProgrammable/ZkProgrammable.test.ts +135 -114
  176. package/tsconfig.json +1 -1
  177. package/dist/Constants.d.ts +0 -4
  178. package/dist/Constants.d.ts.map +0 -1
  179. package/dist/Constants.js +0 -3
  180. package/dist/config/ConfigurationAggregator.d.ts +0 -10
  181. package/dist/config/ConfigurationAggregator.d.ts.map +0 -1
  182. package/dist/config/ConfigurationAggregator.js +0 -35
  183. package/dist/config/ConfigurationReceiver.d.ts +0 -25
  184. package/dist/config/ConfigurationReceiver.d.ts.map +0 -1
  185. package/dist/config/ConfigurationReceiver.js +0 -36
  186. package/dist/config/types.d.ts +0 -2
  187. package/dist/config/types.d.ts.map +0 -1
  188. package/dist/config/types.js +0 -1
  189. package/dist/model/MethodPublicInput.d.ts +0 -51
  190. package/dist/model/MethodPublicInput.d.ts.map +0 -1
  191. package/dist/model/MethodPublicInput.js +0 -11
  192. package/dist/model/Option.d.ts +0 -89
  193. package/dist/model/Option.d.ts.map +0 -1
  194. package/dist/model/Option.js +0 -86
  195. package/dist/model/Path.d.ts +0 -31
  196. package/dist/model/Path.d.ts.map +0 -1
  197. package/dist/model/Path.js +0 -44
  198. package/dist/model/StateTransition.d.ts +0 -85
  199. package/dist/model/StateTransition.d.ts.map +0 -1
  200. package/dist/model/StateTransition.js +0 -58
  201. package/dist/model/StateTransitionProvableBatch.d.ts +0 -56
  202. package/dist/model/StateTransitionProvableBatch.d.ts.map +0 -1
  203. package/dist/model/StateTransitionProvableBatch.js +0 -20
  204. package/dist/prover/block/BlockProver.d.ts +0 -199
  205. package/dist/prover/block/BlockProver.d.ts.map +0 -1
  206. package/dist/prover/block/BlockProver.js +0 -119
  207. package/dist/prover/block/BlockScopedModule.d.ts +0 -3
  208. package/dist/prover/block/BlockScopedModule.d.ts.map +0 -1
  209. package/dist/prover/block/BlockScopedModule.js +0 -6
  210. package/dist/prover/statetransition/StateTransitionProver.d.ts +0 -92
  211. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +0 -1
  212. package/dist/prover/statetransition/StateTransitionProver.js +0 -127
  213. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
  214. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
  215. package/dist/prover/statetransition/StateTransitionWitnessProvider.js +0 -17
  216. package/dist/src/model/Option.d.ts +0 -158
  217. package/dist/src/model/Option.d.ts.map +0 -1
  218. package/dist/src/model/Option.js +0 -53
  219. package/dist/src/model/Path.d.ts +0 -35
  220. package/dist/src/model/Path.d.ts.map +0 -1
  221. package/dist/src/model/Path.js +0 -51
  222. package/dist/src/model/StateTransition.d.ts +0 -201
  223. package/dist/src/model/StateTransition.d.ts.map +0 -1
  224. package/dist/src/model/StateTransition.js +0 -43
  225. package/dist/src/utils/PrefixedHashList.d.ts +0 -15
  226. package/dist/src/utils/PrefixedHashList.d.ts.map +0 -1
  227. package/dist/src/utils/PrefixedHashList.js +0 -28
  228. package/dist/src/utils/ProvableHashList.d.ts +0 -30
  229. package/dist/src/utils/ProvableHashList.d.ts.map +0 -1
  230. package/dist/src/utils/ProvableHashList.js +0 -43
  231. package/dist/utils/PrefixedHashList.d.ts +0 -14
  232. package/dist/utils/PrefixedHashList.d.ts.map +0 -1
  233. package/dist/utils/PrefixedHashList.js +0 -12
  234. package/dist/utils/PrefixedProvableHashList.d.ts +0 -8
  235. package/dist/utils/PrefixedProvableHashList.d.ts.map +0 -1
  236. package/dist/utils/PrefixedProvableHashList.js +0 -12
  237. package/dist/utils/ProvableHashList.d.ts +0 -26
  238. package/dist/utils/ProvableHashList.d.ts.map +0 -1
  239. package/dist/utils/ProvableHashList.js +0 -35
  240. package/dist/utils/Utils.d.ts +0 -22
  241. package/dist/utils/Utils.d.ts.map +0 -1
  242. package/dist/utils/Utils.js +0 -41
  243. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts +0 -26
  244. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts.map +0 -1
  245. package/dist/utils/merkletree/MemoryMerkleTreeStorage.js +0 -79
  246. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -143
  247. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  248. package/dist/utils/merkletree/RollupMerkleTree.js +0 -246
  249. package/tsconfig.test.json +0 -9
@@ -0,0 +1,62 @@
1
+ import {
2
+ AreProofsEnabled,
3
+ CompileArtifact,
4
+ MOCK_VERIFICATION_KEY,
5
+ } from "../zkProgrammable/ZkProgrammable";
6
+ import { isSubtypeOfName } from "../utils";
7
+ import { TypedClass } from "../types";
8
+ import { log } from "../log";
9
+
10
+ export type ArtifactRecord = Record<string, CompileArtifact>;
11
+
12
+ export type CompileTarget = {
13
+ name: string;
14
+ compile: () => Promise<CompileArtifact>;
15
+ };
16
+
17
+ export class AtomicCompileHelper {
18
+ public constructor(private readonly areProofsEnabled: AreProofsEnabled) {}
19
+
20
+ private compilationPromises: {
21
+ [key: string]: Promise<CompileArtifact>;
22
+ } = {};
23
+
24
+ public async compileContract(
25
+ contract: CompileTarget,
26
+ overrideProofsEnabled?: boolean
27
+ ): Promise<CompileArtifact> {
28
+ let newPromise = false;
29
+ const { name } = contract;
30
+ if (this.compilationPromises[name] === undefined) {
31
+ const proofsEnabled =
32
+ overrideProofsEnabled ?? this.areProofsEnabled.areProofsEnabled;
33
+
34
+ // We only care about proofs enabled here if it's a contract, because
35
+ // in all other cases, ZkProgrammable already handles this switch, and we
36
+ // want to preserve the artifact layout (which might be more than one
37
+ // entry for ZkProgrammables)
38
+ if (
39
+ proofsEnabled ||
40
+ !isSubtypeOfName(
41
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
42
+ contract as unknown as TypedClass<any>,
43
+ "SmartContract"
44
+ )
45
+ ) {
46
+ log.time(`Compiling ${name}`);
47
+ this.compilationPromises[name] = contract.compile();
48
+ newPromise = true;
49
+ } else {
50
+ log.debug(`Compiling ${name} - mock`);
51
+ this.compilationPromises[name] = Promise.resolve({
52
+ verificationKey: MOCK_VERIFICATION_KEY,
53
+ });
54
+ }
55
+ }
56
+ const result = await this.compilationPromises[name];
57
+ if (newPromise) {
58
+ log.timeEnd.info(`Compiling ${name}`);
59
+ }
60
+ return result;
61
+ }
62
+ }
@@ -0,0 +1,6 @@
1
+ import type { CompileRegistry } from "./CompileRegistry";
2
+ import type { ArtifactRecord } from "./AtomicCompileHelper";
3
+
4
+ export interface CompilableModule {
5
+ compile(registry: CompileRegistry): Promise<ArtifactRecord | void>;
6
+ }
@@ -0,0 +1,79 @@
1
+ import { inject, injectable, singleton } from "tsyringe";
2
+
3
+ import {
4
+ AreProofsEnabled,
5
+ CompileArtifact,
6
+ } from "../zkProgrammable/ZkProgrammable";
7
+
8
+ import {
9
+ ArtifactRecord,
10
+ AtomicCompileHelper,
11
+ CompileTarget,
12
+ } from "./AtomicCompileHelper";
13
+
14
+ /**
15
+ * The CompileRegistry compiles "compilable modules"
16
+ * (i.e. zkprograms, contracts or contractmodules)
17
+ * while making sure they don't get compiled twice in the same process in parallel.
18
+ */
19
+ @injectable()
20
+ @singleton()
21
+ export class CompileRegistry {
22
+ public constructor(
23
+ @inject("AreProofsEnabled")
24
+ private readonly areProofsEnabled: AreProofsEnabled
25
+ ) {
26
+ this.compiler = new AtomicCompileHelper(this.areProofsEnabled);
27
+ }
28
+
29
+ private compiler: AtomicCompileHelper;
30
+
31
+ private artifacts: ArtifactRecord = {};
32
+
33
+ private inForceProverBlock = false;
34
+
35
+ /**
36
+ * This function forces compilation even if the artifact itself is in the registry.
37
+ * Basically the statement is: The artifact along is not enough, we need to
38
+ * actually have the prover compiled.
39
+ * This is true for non-sideloaded circuit dependencies.
40
+ */
41
+ public async forceProverExists<R>(
42
+ f: (registry: CompileRegistry) => Promise<R>
43
+ ): Promise<R> {
44
+ this.inForceProverBlock = true;
45
+ const result = await f(this);
46
+ this.inForceProverBlock = false;
47
+ return result;
48
+ }
49
+
50
+ public async compile(target: CompileTarget, proverNeeded: boolean = true) {
51
+ if (this.artifacts[target.name] === undefined || this.inForceProverBlock) {
52
+ const artifact = await this.compiler.compileContract(target);
53
+ this.artifacts[target.name] = artifact;
54
+ return artifact;
55
+ }
56
+ return this.artifacts[target.name];
57
+ }
58
+
59
+ public getArtifact(name: string): CompileArtifact | undefined {
60
+ if (this.artifacts[name] === undefined) {
61
+ throw new Error(
62
+ `Artifact for ${name} not available, did you compile it via the CompileRegistry?`
63
+ );
64
+ }
65
+
66
+ return this.artifacts[name];
67
+ }
68
+
69
+ public addArtifactsRaw(artifacts: ArtifactRecord) {
70
+ this.artifacts = {
71
+ ...this.artifacts,
72
+ ...artifacts,
73
+ };
74
+ }
75
+
76
+ public getAllArtifacts() {
77
+ return this.artifacts;
78
+ }
79
+ }
@@ -0,0 +1,26 @@
1
+ import { injectable, Lifecycle, scoped } from "tsyringe";
2
+
3
+ import { CompileRegistry } from "../CompileRegistry";
4
+
5
+ @injectable()
6
+ @scoped(Lifecycle.ContainerScoped)
7
+ export class ChildVerificationKeyService {
8
+ private compileRegistry?: CompileRegistry;
9
+
10
+ public setCompileRegistry(registry: CompileRegistry) {
11
+ this.compileRegistry = registry;
12
+ }
13
+
14
+ public getVerificationKey(name: string) {
15
+ if (this.compileRegistry === undefined) {
16
+ throw new Error("CompileRegistry hasn't been set yet");
17
+ }
18
+ const artifact = this.compileRegistry.getArtifact(name);
19
+ if (artifact === undefined) {
20
+ throw new Error(
21
+ `Verification Key for child program ${name} not found in registry`
22
+ );
23
+ }
24
+ return artifact.verificationKey;
25
+ }
26
+ }
@@ -0,0 +1,5 @@
1
+ import { ChildContainerProvider } from "./ChildContainerProvider";
2
+
3
+ export interface ChildContainerCreatable {
4
+ create: (childContainerProvider: ChildContainerProvider) => void;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { DependencyContainer } from "tsyringe";
2
+
3
+ export interface ChildContainerProvider {
4
+ (): DependencyContainer;
5
+ }
@@ -1,3 +1,8 @@
1
+ import { noop } from "../utils";
2
+
3
+ import { ChildContainerProvider } from "./ChildContainerProvider";
4
+ import type { BaseModuleInstanceType } from "./ModuleContainer";
5
+
1
6
  const errors = {
2
7
  configNotSet: (moduleName: string) =>
3
8
  new Error(
@@ -6,7 +11,7 @@ const errors = {
6
11
  };
7
12
 
8
13
  // defines how presets can be provided, either a function or a record
9
- export type Preset<Config> = Config | ((...args: any[]) => Config);
14
+ export type Preset<Config> = Config | ((...args: unknown[]) => Config);
10
15
  export type Presets<Config> = Record<string, Preset<Config>>;
11
16
 
12
17
  // describes the interface of a configurable module
@@ -14,10 +19,14 @@ export interface Configurable<Config> {
14
19
  config: Config;
15
20
  }
16
21
 
22
+ export type NoConfig = Record<never, never>;
23
+
17
24
  /**
18
25
  * Used by various module sub-types that may need to be configured
19
26
  */
20
- export class ConfigurableModule<Config> implements Configurable<Config> {
27
+ export class ConfigurableModule<Config = NoConfig>
28
+ implements BaseModuleInstanceType
29
+ {
21
30
  /**
22
31
  * Store the config separately, so that we can apply additional
23
32
  * checks when retrieving it via the getter
@@ -36,6 +45,10 @@ export class ConfigurableModule<Config> implements Configurable<Config> {
36
45
  public set config(config: Config) {
37
46
  this.currentConfig = config;
38
47
  }
48
+
49
+ public create(childContainerProvider: ChildContainerProvider): void {
50
+ noop();
51
+ }
39
52
  }
40
53
 
41
54
  // Helps ensure that the target class implements static presets