@proto-kit/module 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 (110) hide show
  1. package/dist/factories/MethodIdFactory.d.ts +9 -0
  2. package/dist/factories/MethodIdFactory.d.ts.map +1 -0
  3. package/dist/factories/MethodIdFactory.js +12 -0
  4. package/dist/factories/MethodIdFactory.js.map +1 -0
  5. package/dist/index.d.ts +5 -7
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +6 -7
  8. package/dist/index.js.map +1 -0
  9. package/dist/messages/OutgoingMessages.d.ts +215 -0
  10. package/dist/messages/OutgoingMessages.d.ts.map +1 -0
  11. package/dist/messages/OutgoingMessages.js +66 -0
  12. package/dist/messages/OutgoingMessages.js.map +1 -0
  13. package/dist/method/MethodParameterEncoder.d.ts +26 -0
  14. package/dist/method/MethodParameterEncoder.d.ts.map +1 -0
  15. package/dist/method/MethodParameterEncoder.js +169 -0
  16. package/dist/method/MethodParameterEncoder.js.map +1 -0
  17. package/dist/method/runtimeMethod.d.ts +22 -5
  18. package/dist/method/runtimeMethod.d.ts.map +1 -1
  19. package/dist/method/runtimeMethod.js +79 -24
  20. package/dist/method/runtimeMethod.js.map +1 -0
  21. package/dist/module/decorator.js +1 -0
  22. package/dist/module/decorator.js.map +1 -0
  23. package/dist/runtime/MethodIdResolver.d.ts +20 -0
  24. package/dist/runtime/MethodIdResolver.d.ts.map +1 -0
  25. package/dist/runtime/MethodIdResolver.js +91 -0
  26. package/dist/runtime/MethodIdResolver.js.map +1 -0
  27. package/dist/runtime/Runtime.d.ts +22 -28
  28. package/dist/runtime/Runtime.d.ts.map +1 -1
  29. package/dist/runtime/Runtime.js +116 -70
  30. package/dist/runtime/Runtime.js.map +1 -0
  31. package/dist/runtime/RuntimeEnvironment.d.ts +10 -0
  32. package/dist/runtime/RuntimeEnvironment.d.ts.map +1 -0
  33. package/dist/runtime/RuntimeEnvironment.js +2 -0
  34. package/dist/runtime/RuntimeEnvironment.js.map +1 -0
  35. package/dist/runtime/RuntimeModule.d.ts +23 -14
  36. package/dist/runtime/RuntimeModule.d.ts.map +1 -1
  37. package/dist/runtime/RuntimeModule.js +47 -10
  38. package/dist/runtime/RuntimeModule.js.map +1 -0
  39. package/dist/state/InMemoryStateService.d.ts +11 -10
  40. package/dist/state/InMemoryStateService.d.ts.map +1 -1
  41. package/dist/state/InMemoryStateService.js +11 -8
  42. package/dist/state/InMemoryStateService.js.map +1 -0
  43. package/jest.config.cjs +12 -1
  44. package/package.json +10 -11
  45. package/src/factories/MethodIdFactory.ts +15 -0
  46. package/src/index.ts +5 -7
  47. package/src/messages/OutgoingMessages.ts +122 -0
  48. package/src/method/MethodParameterEncoder.ts +260 -0
  49. package/src/method/runtimeMethod.ts +146 -31
  50. package/src/runtime/MethodIdResolver.ts +108 -0
  51. package/src/runtime/Runtime.ts +191 -112
  52. package/src/runtime/RuntimeEnvironment.ts +16 -0
  53. package/src/runtime/RuntimeModule.ts +77 -27
  54. package/src/state/InMemoryStateService.ts +14 -18
  55. package/test/Runtime.test.ts +69 -36
  56. package/test/TestingRuntime.ts +43 -0
  57. package/test/messages/message.test.ts +42 -0
  58. package/test/method/MethodParameterEncoder.test.ts +121 -0
  59. package/test/method/runtimeMethod-fail.test.ts +50 -0
  60. package/{src/method/decorator.test.ts → test/method/runtimeMethod.test.ts} +3 -3
  61. package/test/modules/Admin.ts +4 -4
  62. package/test/modules/Balances.test.ts +92 -78
  63. package/test/modules/Balances.ts +19 -16
  64. package/test/modules/MethodIdResolver.test.ts +73 -0
  65. package/test/modules/State.test.ts +81 -0
  66. package/test/runtimeMethod.test.ts +192 -20
  67. package/test/tsconfig.json +7 -0
  68. package/tsconfig.json +2 -2
  69. package/dist/chain/Chain.d.ts +0 -109
  70. package/dist/chain/Chain.d.ts.map +0 -1
  71. package/dist/chain/Chain.js +0 -229
  72. package/dist/method/MethodExecutionContext.d.ts +0 -73
  73. package/dist/method/MethodExecutionContext.d.ts.map +0 -1
  74. package/dist/method/MethodExecutionContext.js +0 -112
  75. package/dist/method/MethodParameterDecoder.d.ts +0 -22
  76. package/dist/method/MethodParameterDecoder.d.ts.map +0 -1
  77. package/dist/method/MethodParameterDecoder.js +0 -33
  78. package/dist/method/RuntimeMethodExecutionContext.d.ts +0 -57
  79. package/dist/method/RuntimeMethodExecutionContext.d.ts.map +0 -1
  80. package/dist/method/RuntimeMethodExecutionContext.js +0 -92
  81. package/dist/method/assert.d.ts +0 -12
  82. package/dist/method/assert.d.ts.map +0 -1
  83. package/dist/method/assert.js +0 -23
  84. package/dist/method/decorator.d.ts +0 -45
  85. package/dist/method/decorator.d.ts.map +0 -1
  86. package/dist/method/decorator.js +0 -140
  87. package/dist/state/State.d.ts +0 -65
  88. package/dist/state/State.d.ts.map +0 -1
  89. package/dist/state/State.js +0 -114
  90. package/dist/state/StateMap.d.ts +0 -37
  91. package/dist/state/StateMap.d.ts.map +0 -1
  92. package/dist/state/StateMap.js +0 -56
  93. package/dist/state/StateServiceProvider.d.ts +0 -10
  94. package/dist/state/StateServiceProvider.d.ts.map +0 -1
  95. package/dist/state/StateServiceProvider.js +0 -34
  96. package/dist/state/decorator.d.ts +0 -7
  97. package/dist/state/decorator.d.ts.map +0 -1
  98. package/dist/state/decorator.js +0 -42
  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
@@ -0,0 +1,9 @@
1
+ import { MethodIdResolver } from "../runtime/MethodIdResolver";
2
+ export declare class MethodIdFactory {
3
+ static dependencies(): {
4
+ methodIdResolver: {
5
+ useClass: typeof MethodIdResolver;
6
+ };
7
+ };
8
+ }
9
+ //# sourceMappingURL=MethodIdFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodIdFactory.d.ts","sourceRoot":"","sources":["../../src/factories/MethodIdFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,qBAAa,eAAe;WACZ,YAAY;;;;;CAO3B"}
@@ -0,0 +1,12 @@
1
+ import { MethodIdResolver } from "../runtime/MethodIdResolver";
2
+ export class MethodIdFactory {
3
+ static dependencies() {
4
+ return {
5
+ methodIdResolver: {
6
+ useClass: MethodIdResolver,
7
+ },
8
+ };
9
+ }
10
+ }
11
+ MethodIdFactory;
12
+ //# sourceMappingURL=MethodIdFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodIdFactory.js","sourceRoot":"","sources":["../../src/factories/MethodIdFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,OAAO,eAAe;IACnB,MAAM,CAAC,YAAY;QACxB,OAAO;YACL,gBAAgB,EAAE;gBAChB,QAAQ,EAAE,gBAAgB;aAC3B;SACyB,CAAC;IAC/B,CAAC;CACF;AAED,eAA2C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,11 @@
1
- export * from "./method/RuntimeMethodExecutionContext";
2
- export * from "./method/assert";
3
1
  export * from "./method/runtimeMethod";
4
2
  export * from "./module/decorator";
5
3
  export * from "./runtime/RuntimeModule";
4
+ export * from "./runtime/RuntimeEnvironment";
6
5
  export * from "./runtime/Runtime";
7
6
  export * from "./state/InMemoryStateService";
8
- export * from "./state/State";
9
- export * from "./state/StateMap";
10
- export * from "./state/StateServiceProvider";
11
- export * from "./state/decorator";
12
- export * from "./method/MethodParameterDecoder";
7
+ export * from "./method/MethodParameterEncoder";
8
+ export * from "./runtime/MethodIdResolver";
9
+ export * from "./factories/MethodIdFactory";
10
+ export * from "./messages/OutgoingMessages";
13
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,11 @@
1
- export * from "./method/RuntimeMethodExecutionContext";
2
- export * from "./method/assert";
3
1
  export * from "./method/runtimeMethod";
4
2
  export * from "./module/decorator";
5
3
  export * from "./runtime/RuntimeModule";
4
+ export * from "./runtime/RuntimeEnvironment";
6
5
  export * from "./runtime/Runtime";
7
6
  export * from "./state/InMemoryStateService";
8
- export * from "./state/State";
9
- export * from "./state/StateMap";
10
- export * from "./state/StateServiceProvider";
11
- export * from "./state/decorator";
12
- export * from "./method/MethodParameterDecoder";
7
+ export * from "./method/MethodParameterEncoder";
8
+ export * from "./runtime/MethodIdResolver";
9
+ export * from "./factories/MethodIdFactory";
10
+ export * from "./messages/OutgoingMessages";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,215 @@
1
+ import { Field, FlexibleProvablePure, InferProvable } from "o1js";
2
+ import { OutgoingMessageKeyStruct, state as stateDecorator, WithPath, WithStateServiceProvider } from "@proto-kit/protocol";
3
+ import { StringKeyOf } from "@proto-kit/common";
4
+ export type OutgoingMessagesRecord = Record<string, FlexibleProvablePure<any>>;
5
+ export declare const outgoingMessage: typeof stateDecorator;
6
+ declare const OutgoingMessages_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider>;
7
+ export declare class OutgoingMessages<Messages extends OutgoingMessagesRecord> extends OutgoingMessages_base {
8
+ private readonly messages;
9
+ readonly eventTypes: Record<string, {
10
+ messageType: FlexibleProvablePure<{
11
+ messageType: Field;
12
+ value: any;
13
+ }>;
14
+ eventType: FlexibleProvablePure<{
15
+ key: OutgoingMessageKeyStruct;
16
+ value: any;
17
+ messageType: Field;
18
+ }>;
19
+ }>;
20
+ constructor(messages: Messages);
21
+ private counterState;
22
+ static getEventName(key: string): string;
23
+ computeEventTypes(): {
24
+ [k: string]: {
25
+ messageType: {
26
+ new (value: {
27
+ value: any;
28
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
29
+ }): {
30
+ value: any;
31
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
32
+ };
33
+ _isStruct: true;
34
+ toFields: (value: {
35
+ value: any;
36
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
37
+ }) => import("o1js/dist/node/lib/provable/field").Field[];
38
+ toAuxiliary: (value?: {
39
+ value: any;
40
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
41
+ } | undefined) => any[];
42
+ sizeInFields: () => number;
43
+ check: (value: {
44
+ value: any;
45
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
46
+ }) => void;
47
+ toValue: (x: {
48
+ value: any;
49
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
50
+ }) => {
51
+ value: any;
52
+ messageType: bigint;
53
+ };
54
+ fromValue: ((x: {
55
+ value: any;
56
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
57
+ } | {
58
+ value: any;
59
+ messageType: bigint;
60
+ }) => {
61
+ value: any;
62
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
63
+ }) & ((value: {
64
+ value: any;
65
+ messageType: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
66
+ }) => {
67
+ value: any;
68
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
69
+ });
70
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
71
+ value: any;
72
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
73
+ };
74
+ toInput: (x: {
75
+ value: any;
76
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
77
+ }) => {
78
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
79
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
80
+ };
81
+ toJSON: (x: {
82
+ value: any;
83
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
84
+ }) => {
85
+ value: any;
86
+ messageType: string;
87
+ };
88
+ fromJSON: (x: {
89
+ value: any;
90
+ messageType: string;
91
+ }) => {
92
+ value: any;
93
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
94
+ };
95
+ empty: () => {
96
+ value: any;
97
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
98
+ };
99
+ };
100
+ eventType: {
101
+ new (value: {
102
+ key: OutgoingMessageKeyStruct;
103
+ value: any;
104
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
105
+ }): {
106
+ key: OutgoingMessageKeyStruct;
107
+ value: any;
108
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
109
+ };
110
+ _isStruct: true;
111
+ toFields: (value: {
112
+ key: OutgoingMessageKeyStruct;
113
+ value: any;
114
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
115
+ }) => import("o1js/dist/node/lib/provable/field").Field[];
116
+ toAuxiliary: (value?: {
117
+ key: OutgoingMessageKeyStruct;
118
+ value: any;
119
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
120
+ } | undefined) => any[];
121
+ sizeInFields: () => number;
122
+ check: (value: {
123
+ key: OutgoingMessageKeyStruct;
124
+ value: any;
125
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
126
+ }) => void;
127
+ toValue: (x: {
128
+ key: OutgoingMessageKeyStruct;
129
+ value: any;
130
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
131
+ }) => {
132
+ key: {
133
+ index: bigint;
134
+ tokenId: bigint;
135
+ };
136
+ value: any;
137
+ messageType: bigint;
138
+ };
139
+ fromValue: ((x: {
140
+ key: OutgoingMessageKeyStruct;
141
+ value: any;
142
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
143
+ } | {
144
+ key: {
145
+ index: bigint;
146
+ tokenId: bigint;
147
+ };
148
+ value: any;
149
+ messageType: bigint;
150
+ }) => {
151
+ key: OutgoingMessageKeyStruct;
152
+ value: any;
153
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
154
+ }) & ((value: {
155
+ key: OutgoingMessageKeyStruct | {
156
+ index: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
157
+ tokenId: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
158
+ };
159
+ value: any;
160
+ messageType: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
161
+ }) => {
162
+ key: OutgoingMessageKeyStruct;
163
+ value: any;
164
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
165
+ });
166
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
167
+ key: OutgoingMessageKeyStruct;
168
+ value: any;
169
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
170
+ };
171
+ toInput: (x: {
172
+ key: OutgoingMessageKeyStruct;
173
+ value: any;
174
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
175
+ }) => {
176
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
177
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
178
+ };
179
+ toJSON: (x: {
180
+ key: OutgoingMessageKeyStruct;
181
+ value: any;
182
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
183
+ }) => {
184
+ key: {
185
+ index: string;
186
+ tokenId: string;
187
+ };
188
+ value: any;
189
+ messageType: string;
190
+ };
191
+ fromJSON: (x: {
192
+ key: {
193
+ index: string;
194
+ tokenId: string;
195
+ };
196
+ value: any;
197
+ messageType: string;
198
+ }) => {
199
+ key: OutgoingMessageKeyStruct;
200
+ value: any;
201
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
202
+ };
203
+ empty: () => {
204
+ key: OutgoingMessageKeyStruct;
205
+ value: any;
206
+ messageType: import("o1js/dist/node/lib/provable/field").Field;
207
+ };
208
+ };
209
+ };
210
+ };
211
+ private emitEvent;
212
+ emitMessage<Key extends StringKeyOf<Messages>>(key: Key, value: InferProvable<Messages[Key]>, tokenId?: Field): Promise<void>;
213
+ }
214
+ export {};
215
+ //# sourceMappingURL=OutgoingMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutgoingMessages.d.ts","sourceRoot":"","sources":["../../src/messages/OutgoingMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,oBAAoB,EACpB,aAAa,EAGd,MAAM,MAAM,CAAC;AACd,OAAO,EAEL,wBAAwB,EAGxB,KAAK,IAAI,cAAc,EAEvB,QAAQ,EACR,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAiB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG/D,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/E,eAAO,MAAM,eAAe,uBAAiB,CAAC;;AAE9C,qBAAa,gBAAgB,CAC3B,QAAQ,SAAS,sBAAsB,CACvC,SAAQ,qBAAyC;IAa9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAZ5C,SAAgB,UAAU,EAAE,MAAM,CAChC,MAAM,EACN;QACE,WAAW,EAAE,oBAAoB,CAAC;YAAE,WAAW,EAAE,KAAK,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,CAAC,CAAC;QACtE,SAAS,EAAE,oBAAoB,CAAC;YAC9B,GAAG,EAAE,wBAAwB,CAAC;YAC9B,KAAK,EAAE,GAAG,CAAC;YACX,WAAW,EAAE,KAAK,CAAC;SACpB,CAAC,CAAC;KACJ,CACF,CAAC;gBAEkC,QAAQ,EAAE,QAAQ;IAKtD,OAAO,CAAC,YAAY;WAON,YAAY,CAAC,GAAG,EAAE,MAAM;IAI/B,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyBxB,OAAO,CAAC,SAAS;IAaJ,WAAW,CAAC,GAAG,SAAS,WAAW,CAAC,QAAQ,CAAC,EACxD,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EACnC,OAAO,GAAE,KAAuB;CAuBnC"}
@@ -0,0 +1,66 @@
1
+ import { Field, Struct, TokenId, } from "o1js";
2
+ import { OutgoingMessageKeyStruct, PROTOKIT_FIELD_PREFIXES, RuntimeMethodExecutionContext, state as stateDecorator, StateMap, WithPath, WithStateServiceProvider, } from "@proto-kit/protocol";
3
+ // eslint-disable-next-line import/no-extraneous-dependencies
4
+ import { Mixin } from "ts-mixer";
5
+ import { prefixToField } from "@proto-kit/common";
6
+ import { container } from "tsyringe";
7
+ export const outgoingMessage = stateDecorator;
8
+ export class OutgoingMessages extends Mixin(WithPath, WithStateServiceProvider) {
9
+ constructor(messages) {
10
+ super();
11
+ this.messages = messages;
12
+ this.eventTypes = this.computeEventTypes();
13
+ }
14
+ counterState() {
15
+ const state = new StateMap(Field, Field);
16
+ state.path = PROTOKIT_FIELD_PREFIXES.OUTGOING_MESSAGE_COUNTER_PATH;
17
+ state.stateServiceProvider = this.stateServiceProvider;
18
+ return state;
19
+ }
20
+ static getEventName(key) {
21
+ return `outgoing-${key}`;
22
+ }
23
+ computeEventTypes() {
24
+ return Object.fromEntries(Object.entries(this.messages).map(([key, type]) => {
25
+ class OutgoingMessageEventStruct extends Struct({
26
+ key: OutgoingMessageKeyStruct,
27
+ value: type,
28
+ messageType: Field,
29
+ }) {
30
+ }
31
+ class OutgoingMessageStruct extends Struct({
32
+ value: type,
33
+ messageType: Field,
34
+ }) {
35
+ }
36
+ return [
37
+ OutgoingMessages.getEventName(key),
38
+ {
39
+ messageType: OutgoingMessageStruct,
40
+ eventType: OutgoingMessageEventStruct,
41
+ },
42
+ ];
43
+ }));
44
+ }
45
+ emitEvent(eventName, value) {
46
+ const outgoingMessageType = this.eventTypes[eventName].eventType;
47
+ return container
48
+ .resolve(RuntimeMethodExecutionContext)
49
+ .addEvent(outgoingMessageType, value, eventName);
50
+ }
51
+ async emitMessage(key, value, tokenId = TokenId.default) {
52
+ const eventName = OutgoingMessages.getEventName(key);
53
+ const stateMap = new StateMap(OutgoingMessageKeyStruct, this.eventTypes[eventName].messageType);
54
+ stateMap.path = PROTOKIT_FIELD_PREFIXES.OUTGOING_MESSAGE_BASE_PATH;
55
+ stateMap.stateServiceProvider = this.stateServiceProvider;
56
+ const counterState = this.counterState();
57
+ const counterOption = await counterState.get(tokenId);
58
+ const counter = counterOption.orElse(Field(0));
59
+ const messageKey = { index: counter, tokenId };
60
+ const messageType = prefixToField(key);
61
+ await counterState.set(tokenId, counter.add(1));
62
+ await stateMap.set(messageKey, { messageType, value });
63
+ this.emitEvent(eventName, { key: messageKey, value, messageType });
64
+ }
65
+ }
66
+ //# sourceMappingURL=OutgoingMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutgoingMessages.js","sourceRoot":"","sources":["../../src/messages/OutgoingMessages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Field, Proof, DynamicProof, FlexibleProvablePure } from "o1js";
2
+ import { ArgumentTypes } from "@proto-kit/common";
3
+ import type { RuntimeModule } from "../runtime/RuntimeModule";
4
+ type ArgumentType = FlexibleProvablePure<any> | typeof Proof<unknown, unknown> | typeof DynamicProof<unknown, unknown>;
5
+ type ArgTypeArray = ArgumentType[];
6
+ type ArgArray = ArgumentTypes[];
7
+ export declare function isFlexibleProvablePure(type: unknown): type is FlexibleProvablePure<unknown>;
8
+ export declare function checkArgsProvable(target: RuntimeModule<unknown>, methodName: string): ArgTypeArray;
9
+ export declare class MethodParameterEncoder {
10
+ private readonly types;
11
+ static fromMethod(target: RuntimeModule<unknown>, methodName: string): MethodParameterEncoder;
12
+ static fieldSize(type: ArgumentType): number | undefined;
13
+ constructor(types: ArgTypeArray);
14
+ decode(fields: Field[], auxiliary: string[]): Promise<ArgArray>;
15
+ /**
16
+ * Variant of encode() for provable code that skips the unprovable
17
+ * json encoding
18
+ */
19
+ encode(args: ArgumentTypes): {
20
+ fields: Field[];
21
+ auxiliary: string[];
22
+ };
23
+ fieldSize(): number;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=MethodParameterEncoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodParameterEncoder.d.ts","sourceRoot":"","sources":["../../src/method/MethodParameterEncoder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,KAAK,EAEL,YAAY,EACZ,oBAAoB,EACrB,MAAM,MAAM,CAAC;AACd,OAAO,EACL,aAAa,EAKd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAc9D,KAAK,YAAY,GACb,oBAAoB,CAAC,GAAG,CAAC,GACzB,OAAO,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,GAC9B,OAAO,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE1C,KAAK,YAAY,GAAG,YAAY,EAAE,CAAC;AAEnC,KAAK,QAAQ,GAAG,aAAa,EAAE,CAAC;AA2BhC,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAOvC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,UAAU,EAAE,MAAM,gBA8BnB;AAED,qBAAa,sBAAsB;IAkBd,OAAO,CAAC,QAAQ,CAAC,KAAK;WAjB3B,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM;WAM7D,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS;gBAW3B,KAAK,EAAE,YAAY;IAEhD,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0DtE;;;OAGG;IACI,MAAM,CAAC,IAAI,EAAE,aAAa;gBA8CnB,KAAK,EAAE;mBACJ,MAAM,EAAE;;IAelB,SAAS,IAAI,MAAM;CAK3B"}
@@ -0,0 +1,169 @@
1
+ /* eslint-disable @typescript-eslint/consistent-type-assertions */
2
+ import { Proof, Provable, DynamicProof, } from "o1js";
3
+ import { filterNonUndefined, } from "@proto-kit/common";
4
+ const errors = {
5
+ fieldLengthNotMatching: (expected, actual) => new Error(`Expected ${expected} field elements, got ${actual}`),
6
+ typeNotCompatible: (name, error) => new Error(`Cannot decode type ${name}, it has to be either a Struct, CircuitValue or built-in snarkyjs type.${error !== undefined ? `Caused by: ${error}` : ""}`),
7
+ };
8
+ function isProofType(type) {
9
+ return type.prototype instanceof Proof;
10
+ }
11
+ function isDynamicProofType(type) {
12
+ return (type.prototype instanceof DynamicProof);
13
+ }
14
+ function isProofBaseType(type) {
15
+ return isProofType(type) || isDynamicProofType(type);
16
+ }
17
+ function getAllPropertyNamesOfPrototypeChain(type) {
18
+ if (type === undefined || type === null) {
19
+ return [];
20
+ }
21
+ return Object.getOwnPropertyNames(type).concat(...getAllPropertyNamesOfPrototypeChain(Object.getPrototypeOf(type)));
22
+ }
23
+ export function isFlexibleProvablePure(type) {
24
+ // The required properties are defined on the prototype for Structs and CircuitValues
25
+ // but on the constructor function itself for Field and Bool
26
+ // For aliases like Balance in library, it can even be 2 steps upwards the prototype chain
27
+ const props = getAllPropertyNamesOfPrototypeChain(type);
28
+ const mandatory = ["toFields", "fromFields", "sizeInFields"];
29
+ return mandatory.every((prop) => props.includes(prop));
30
+ }
31
+ export function checkArgsProvable(target, methodName) {
32
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
33
+ const paramtypes = Reflect.getMetadata("design:paramtypes", target, methodName);
34
+ if (paramtypes === undefined) {
35
+ throw new Error(`Method with name ${methodName} doesn't exist on this module`);
36
+ }
37
+ const indizes = paramtypes
38
+ .map((type, index) => {
39
+ if (isProofBaseType(type) || isFlexibleProvablePure(type)) {
40
+ return undefined;
41
+ }
42
+ return `${index}`;
43
+ })
44
+ .filter(filterNonUndefined);
45
+ if (indizes.length > 0) {
46
+ const indexString = indizes.reduce((a, b) => `${a}, ${b}`);
47
+ throw new Error(`Not all arguments of method '${target.name}.${methodName}' are provable types or proofs (indizes: [${indexString}])`);
48
+ }
49
+ return paramtypes;
50
+ }
51
+ export class MethodParameterEncoder {
52
+ static fromMethod(target, methodName) {
53
+ const paramtypes = checkArgsProvable(target, methodName);
54
+ return new MethodParameterEncoder(paramtypes);
55
+ }
56
+ static fieldSize(type) {
57
+ if (isProofBaseType(type)) {
58
+ return ((MethodParameterEncoder.fieldSize(type.publicInputType) ?? 0) +
59
+ (MethodParameterEncoder.fieldSize(type.publicOutputType) ?? 0));
60
+ }
61
+ // as any, since we shouldn't be using this workaround in the first place
62
+ return type.sizeInFields();
63
+ }
64
+ constructor(types) {
65
+ this.types = types;
66
+ }
67
+ decode(fields, auxiliary) {
68
+ if (fields.length < this.fieldSize()) {
69
+ throw errors.fieldLengthNotMatching(this.fieldSize(), fields.length);
70
+ }
71
+ let stack = fields.slice();
72
+ const auxiliaryStack = auxiliary.slice();
73
+ return Promise.all(this.types.map((type) => {
74
+ const numberFieldsNeeded = MethodParameterEncoder.fieldSize(type) ?? -1;
75
+ if (numberFieldsNeeded === -1) {
76
+ throw errors.typeNotCompatible(type.constructor.name);
77
+ }
78
+ const structFields = stack.slice(0, numberFieldsNeeded);
79
+ stack = stack.slice(numberFieldsNeeded);
80
+ // Decode proof
81
+ if (isProofBaseType(type)) {
82
+ const auxiliaryData = auxiliaryStack.shift();
83
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
84
+ const proofData = JSON.parse(auxiliaryData);
85
+ const inputFieldSize = MethodParameterEncoder.fieldSize(type.publicInputType);
86
+ const input = structFields
87
+ .slice(0, inputFieldSize)
88
+ .map((x) => x.toString());
89
+ const output = structFields
90
+ .slice(inputFieldSize)
91
+ .map((x) => x.toString());
92
+ // fromJSON has incompatible signature for Proof and DynamicProof
93
+ if (isProofType(type)) {
94
+ return type.fromJSON({
95
+ ...proofData,
96
+ publicInput: input,
97
+ publicOutput: output,
98
+ });
99
+ }
100
+ if (isDynamicProofType(type)) {
101
+ return type.fromJSON({
102
+ ...proofData,
103
+ publicInput: input,
104
+ publicOutput: output,
105
+ });
106
+ }
107
+ }
108
+ return type.fromFields(structFields);
109
+ }));
110
+ }
111
+ /**
112
+ * Variant of encode() for provable code that skips the unprovable
113
+ * json encoding
114
+ */
115
+ encode(args) {
116
+ /**
117
+ * Use the type info obtained previously to convert
118
+ * the args passed to fields
119
+ */
120
+ return args
121
+ .map((argument, index) => {
122
+ if (argument instanceof Proof || argument instanceof DynamicProof) {
123
+ const argumentType = this.types[index];
124
+ const { publicOutputType, publicInputType } = argumentType;
125
+ const inputFields =
126
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
127
+ publicInputType?.toFields(argument.publicInput) ?? [];
128
+ const outputFields =
129
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
130
+ publicOutputType?.toFields(argument.publicOutput) ?? [];
131
+ let auxiliary = "";
132
+ // Has to be asProver, because this function will be called by runtimeMethod
133
+ // to transform the args into a Field[] to compute the argsHash
134
+ // In this case, the auxiliary might be empty, but it isn't used by that method anyways
135
+ Provable.asProver(() => {
136
+ const jsonProof = argument.toJSON();
137
+ auxiliary = JSON.stringify({
138
+ proof: jsonProof.proof,
139
+ maxProofsVerified: jsonProof.maxProofsVerified,
140
+ });
141
+ });
142
+ return {
143
+ fields: [...inputFields, ...outputFields],
144
+ auxiliary,
145
+ };
146
+ }
147
+ const argumentType = this.types[index];
148
+ return {
149
+ fields: argumentType.toFields(argument),
150
+ auxiliary: undefined,
151
+ };
152
+ })
153
+ .reduce((a, b) => {
154
+ return {
155
+ fields: [...a.fields, ...b.fields],
156
+ auxiliary: b.auxiliary !== undefined
157
+ ? [...a.auxiliary, b.auxiliary]
158
+ : a.auxiliary,
159
+ };
160
+ }, { fields: [], auxiliary: [] });
161
+ }
162
+ fieldSize() {
163
+ return this.types
164
+ .map((type) => MethodParameterEncoder.fieldSize(type) ?? 0)
165
+ .reduce((a, b) => a + b, 0);
166
+ }
167
+ }
168
+ /* eslint-enable @typescript-eslint/consistent-type-assertions */
169
+ //# sourceMappingURL=MethodParameterEncoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodParameterEncoder.js","sourceRoot":"","sources":["../../src/method/MethodParameterEncoder.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,25 @@
1
- import { StateTransition, MethodPublicOutput } from "@proto-kit/protocol";
1
+ import { Bool, FlexibleProvablePure } from "o1js";
2
+ import { ProvableStateTransition, MethodPublicOutput } from "@proto-kit/protocol";
3
+ import { ArgumentTypes } from "@proto-kit/common";
2
4
  import type { RuntimeModule } from "../runtime/RuntimeModule.js";
3
- export declare function toStateTransitionsHash(stateTransitions: StateTransition<any>[]): import("snarkyjs/dist/node/lib/field.js").Field;
4
- export type WrappedMethod = (...args: unknown[]) => MethodPublicOutput;
5
- export declare function toWrappedMethod(this: RuntimeModule<unknown>, methodName: string, moduleMethod: (...args: unknown[]) => unknown): WrappedMethod;
5
+ export declare function toStateTransitionsHash(stateTransitions: {
6
+ toProvable: () => ProvableStateTransition;
7
+ }[]): import("o1js/dist/node/lib/provable/field.js").Field;
8
+ export declare function toEventsHash(events: {
9
+ eventType: FlexibleProvablePure<any>;
10
+ event: any;
11
+ eventName: string;
12
+ condition: Bool;
13
+ }[]): import("o1js/dist/node/lib/provable/field.js").Field;
14
+ export type WrappedMethod = (...args: ArgumentTypes) => MethodPublicOutput;
15
+ export type AsyncWrappedMethod = (...args: ArgumentTypes) => Promise<MethodPublicOutput>;
16
+ export declare function toWrappedMethod(this: RuntimeModule<unknown>, methodName: string, moduleMethod: (...args: ArgumentTypes) => Promise<any>, options: {
17
+ invocationType: RuntimeMethodInvocationType;
18
+ }): AsyncWrappedMethod;
6
19
  export declare function combineMethodName(runtimeModuleName: string, methodName: string): string;
7
20
  export declare const runtimeMethodMetadataKey = "yab-method";
21
+ export declare const runtimeMethodNamesMetadataKey = "proto-kit-runtime-methods";
22
+ export declare const runtimeMethodTypeMetadataKey = "proto-kit-runtime-method-type";
8
23
  /**
9
24
  * Checks the metadata of the provided runtime module and its method,
10
25
  * to see if it has been decorated with @runtimeMethod()
@@ -14,5 +29,7 @@ export declare const runtimeMethodMetadataKey = "yab-method";
14
29
  * @returns - If the provided method name is a runtime method or not
15
30
  */
16
31
  export declare function isRuntimeMethod(target: RuntimeModule<unknown>, propertyKey: string): boolean;
17
- export declare function runtimeMethod(): (target: RuntimeModule<unknown>, methodName: string, descriptor: PropertyDescriptor) => void;
32
+ export type RuntimeMethodInvocationType = "SIGNATURE" | "INCOMING_MESSAGE";
33
+ export declare function runtimeMessage(): (target: RuntimeModule<unknown>, methodName: string, descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>) => void;
34
+ export declare function runtimeMethod(): (target: RuntimeModule<unknown>, methodName: string, descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>) => void;
18
35
  //# sourceMappingURL=runtimeMethod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeMethod.d.ts","sourceRoot":"","sources":["../../src/method/runtimeMethod.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EAGf,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAcjE,wBAAgB,sBAAsB,CAEpC,gBAAgB,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,mDAczC;AAGD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,kBAAkB,CAAC;AAEvE,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,iBAoC9C;AAED,wBAAgB,iBAAiB,CAC/B,iBAAiB,EAAE,MAAM,EACzB,UAAU,EAAE,MAAM,UAGnB;AAED,eAAO,MAAM,wBAAwB,eAAe,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,WAAW,EAAE,MAAM,WAKpB;AAED,wBAAgB,aAAa,aAEjB,cAAc,OAAO,CAAC,cAClB,MAAM,cACN,kBAAkB,UA2EjC"}
1
+ {"version":3,"file":"runtimeMethod.d.ts","sourceRoot":"","sources":["../../src/method/runtimeMethod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAS,oBAAoB,EAAY,MAAM,MAAM,CAAC;AAEnE,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAInB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAIL,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAwBjE,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE;IAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;CAAE,EAAE,wDAclE;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE;IACN,SAAS,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACrC,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACjB,EAAE,wDAOJ;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,aAAa,KAAK,kBAAkB,CAAC;AAC3E,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,IAAI,EAAE,aAAa,KACnB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,EACtD,OAAO,EAAE;IACP,cAAc,EAAE,2BAA2B,CAAC;CAC7C,GACA,kBAAkB,CA8EpB;AAED,wBAAgB,iBAAiB,CAC/B,iBAAiB,EAAE,MAAM,EACzB,UAAU,EAAE,MAAM,UAGnB;AAED,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,6BAA6B,8BAA8B,CAAC;AACzE,eAAO,MAAM,4BAA4B,kCAAkC,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,WAAW,EAAE,MAAM,WAKpB;AAED,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAwG3E,wBAAgB,cAAc,wIAI7B;AAED,wBAAgB,aAAa,wIAI5B"}