@no-witness-labs/midday-sdk 0.2.0 → 0.2.2

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 (66) hide show
  1. package/README.md +145 -78
  2. package/dist/Client.d.ts +542 -70
  3. package/dist/Client.d.ts.map +1 -1
  4. package/dist/Client.js +608 -143
  5. package/dist/Client.js.map +1 -1
  6. package/dist/Config.d.ts +83 -1
  7. package/dist/Config.d.ts.map +1 -1
  8. package/dist/Config.js +72 -15
  9. package/dist/Config.js.map +1 -1
  10. package/dist/Providers.d.ts +99 -9
  11. package/dist/Providers.d.ts.map +1 -1
  12. package/dist/Providers.js +142 -39
  13. package/dist/Providers.js.map +1 -1
  14. package/dist/Wallet.d.ts +88 -1
  15. package/dist/Wallet.d.ts.map +1 -1
  16. package/dist/Wallet.js +162 -51
  17. package/dist/Wallet.js.map +1 -1
  18. package/dist/index.d.ts +63 -7
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +68 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/providers/HttpZkConfigProvider.d.ts +229 -0
  23. package/dist/providers/HttpZkConfigProvider.d.ts.map +1 -0
  24. package/dist/providers/HttpZkConfigProvider.js +275 -0
  25. package/dist/providers/HttpZkConfigProvider.js.map +1 -0
  26. package/dist/providers/IndexedDBPrivateStateProvider.d.ts +270 -0
  27. package/dist/providers/IndexedDBPrivateStateProvider.d.ts.map +1 -0
  28. package/dist/providers/IndexedDBPrivateStateProvider.js +513 -0
  29. package/dist/providers/IndexedDBPrivateStateProvider.js.map +1 -0
  30. package/dist/providers/errors.d.ts +50 -0
  31. package/dist/providers/errors.d.ts.map +1 -0
  32. package/dist/providers/errors.js +32 -0
  33. package/dist/providers/errors.js.map +1 -0
  34. package/dist/sdk/Type.d.ts +91 -0
  35. package/dist/sdk/Type.d.ts.map +1 -0
  36. package/dist/sdk/Type.js +8 -0
  37. package/dist/sdk/Type.js.map +1 -0
  38. package/dist/utils/address.d.ts +56 -0
  39. package/dist/utils/address.d.ts.map +1 -0
  40. package/dist/utils/address.js +135 -0
  41. package/dist/utils/address.js.map +1 -0
  42. package/dist/utils/coin.d.ts +55 -0
  43. package/dist/utils/coin.d.ts.map +1 -0
  44. package/dist/utils/coin.js +84 -0
  45. package/dist/utils/coin.js.map +1 -0
  46. package/dist/utils/effect-runtime.d.ts +66 -0
  47. package/dist/utils/effect-runtime.d.ts.map +1 -0
  48. package/dist/utils/effect-runtime.js +147 -0
  49. package/dist/utils/effect-runtime.js.map +1 -0
  50. package/dist/utils/hex.d.ts +62 -0
  51. package/dist/utils/hex.d.ts.map +1 -0
  52. package/dist/utils/hex.js +93 -0
  53. package/dist/utils/hex.js.map +1 -0
  54. package/dist/wallet/connector.d.ts +191 -0
  55. package/dist/wallet/connector.d.ts.map +1 -0
  56. package/dist/wallet/connector.js +183 -0
  57. package/dist/wallet/connector.js.map +1 -0
  58. package/dist/wallet/errors.d.ts +22 -0
  59. package/dist/wallet/errors.d.ts.map +1 -0
  60. package/dist/wallet/errors.js +16 -0
  61. package/dist/wallet/errors.js.map +1 -0
  62. package/dist/wallet/provider.d.ts +102 -0
  63. package/dist/wallet/provider.d.ts.map +1 -0
  64. package/dist/wallet/provider.js +139 -0
  65. package/dist/wallet/provider.js.map +1 -0
  66. package/package.json +10 -5
@@ -0,0 +1,229 @@
1
+ /**
2
+ * HTTP-based ZK configuration provider.
3
+ *
4
+ * ## API Design
5
+ *
6
+ * This module uses a **module-function pattern**:
7
+ *
8
+ * - **Stateless**: Functions operate on HttpZkConfigProvider data
9
+ * - **Module functions**: `HttpZkConfigProvider.getZKIR(provider, circuitId)`
10
+ * - **Data-oriented**: Provider is plain data, not an instance with methods
11
+ *
12
+ * ### Usage Patterns
13
+ *
14
+ * ```typescript
15
+ * // Promise user
16
+ * const provider = HttpZkConfigProvider.make('https://cdn.example.com/zk');
17
+ * const zkir = await HttpZkConfigProvider.getZKIR(provider, 'increment');
18
+ *
19
+ * // Effect user
20
+ * const provider = HttpZkConfigProvider.make('https://cdn.example.com/zk');
21
+ * const zkir = yield* HttpZkConfigProvider.effect.getZKIR(provider, 'increment');
22
+ * ```
23
+ *
24
+ * @since 0.2.0
25
+ * @module
26
+ */
27
+ import { Context, Effect, Layer } from 'effect';
28
+ import { ZKConfigProvider, type ProverKey, type VerifierKey, type ZKIR } from '@midnight-ntwrk/midnight-js-types';
29
+ import { ZkConfigError } from './errors.js';
30
+ /**
31
+ * ZK configuration loaded from HTTP endpoints.
32
+ *
33
+ * @since 0.2.0
34
+ * @category model
35
+ */
36
+ export interface ZkConfig {
37
+ /** Zero-knowledge intermediate representation */
38
+ zkir: ZKIR;
39
+ /** Prover key bytes */
40
+ proverKey: ProverKey;
41
+ /** Verifier key bytes */
42
+ verifierKey: VerifierKey;
43
+ }
44
+ /**
45
+ * Represents an HTTP ZK config provider.
46
+ *
47
+ * This is plain data - use module functions to operate on it.
48
+ *
49
+ * @since 0.2.0
50
+ * @category model
51
+ */
52
+ export interface HttpZkConfigProviderData {
53
+ /** Base URL for ZK artifacts */
54
+ readonly baseUrl: string;
55
+ /** Fetch function to use */
56
+ readonly fetchFn: typeof fetch;
57
+ /** Internal cache for loaded configs */
58
+ readonly cache: Map<string, ZkConfig>;
59
+ }
60
+ declare function getZKIREffect(provider: HttpZkConfigProviderData, circuitId: string): Effect.Effect<ZKIR, ZkConfigError>;
61
+ declare function getProverKeyEffect(provider: HttpZkConfigProviderData, circuitId: string): Effect.Effect<ProverKey, ZkConfigError>;
62
+ declare function getVerifierKeyEffect(provider: HttpZkConfigProviderData, circuitId: string): Effect.Effect<VerifierKey, ZkConfigError>;
63
+ /**
64
+ * Create a new HTTP ZK config provider.
65
+ *
66
+ * @param baseUrl - Base URL for ZK artifacts (without trailing slash)
67
+ * @param fetchFn - Optional custom fetch function (defaults to global fetch)
68
+ * @returns HttpZkConfigProviderData
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const provider = HttpZkConfigProvider.make('https://cdn.example.com/contracts/counter');
73
+ * ```
74
+ *
75
+ * @since 0.2.0
76
+ * @category constructors
77
+ */
78
+ export declare function make(baseUrl: string, fetchFn?: typeof fetch): HttpZkConfigProviderData;
79
+ /**
80
+ * Get the ZKIR for a circuit.
81
+ *
82
+ * @param provider - The provider data
83
+ * @param circuitId - Circuit identifier
84
+ * @returns ZKIR bytes
85
+ *
86
+ * @since 0.2.0
87
+ * @category operations
88
+ */
89
+ export declare function getZKIR(provider: HttpZkConfigProviderData, circuitId: string): Promise<ZKIR>;
90
+ /**
91
+ * Get the prover key for a circuit.
92
+ *
93
+ * @param provider - The provider data
94
+ * @param circuitId - Circuit identifier
95
+ * @returns Prover key bytes
96
+ *
97
+ * @since 0.2.0
98
+ * @category operations
99
+ */
100
+ export declare function getProverKey(provider: HttpZkConfigProviderData, circuitId: string): Promise<ProverKey>;
101
+ /**
102
+ * Get the verifier key for a circuit.
103
+ *
104
+ * @param provider - The provider data
105
+ * @param circuitId - Circuit identifier
106
+ * @returns Verifier key bytes
107
+ *
108
+ * @since 0.2.0
109
+ * @category operations
110
+ */
111
+ export declare function getVerifierKey(provider: HttpZkConfigProviderData, circuitId: string): Promise<VerifierKey>;
112
+ /**
113
+ * Clear the cache for a specific circuit or all circuits.
114
+ *
115
+ * @param provider - The provider data
116
+ * @param circuitId - Optional circuit ID to clear (clears all if not provided)
117
+ *
118
+ * @since 0.2.0
119
+ * @category utilities
120
+ */
121
+ export declare function clearCache(provider: HttpZkConfigProviderData, circuitId?: string): void;
122
+ /**
123
+ * Raw Effect APIs for advanced users.
124
+ *
125
+ * @since 0.2.0
126
+ * @category effect
127
+ */
128
+ export declare const effect: {
129
+ getZKIR: typeof getZKIREffect;
130
+ getProverKey: typeof getProverKeyEffect;
131
+ getVerifierKey: typeof getVerifierKeyEffect;
132
+ };
133
+ /**
134
+ * HTTP-based ZK configuration provider class.
135
+ *
136
+ * This class wraps the module functions to provide compatibility with
137
+ * the midnight-js ZKConfigProvider interface.
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * const zkConfig = new HttpZkConfigProvider('https://cdn.example.com/contracts/counter');
142
+ *
143
+ * // Use with midnight-js
144
+ * const client = await Client.create({
145
+ * zkConfigProvider: zkConfig,
146
+ * // ...
147
+ * });
148
+ * ```
149
+ *
150
+ * @since 0.2.0
151
+ * @category constructors
152
+ */
153
+ export declare class HttpZkConfigProvider<K extends string = string> extends ZKConfigProvider<K> {
154
+ private readonly data;
155
+ /**
156
+ * Create a new HTTP ZK config provider.
157
+ *
158
+ * @param baseUrl - Base URL for ZK artifacts (without trailing slash)
159
+ * @param fetchFn - Optional custom fetch function (defaults to global fetch)
160
+ */
161
+ constructor(baseUrl: string, fetchFn?: typeof fetch);
162
+ /**
163
+ * Get the ZKIR for a circuit.
164
+ */
165
+ getZKIR(circuitId: K): Promise<ZKIR>;
166
+ /**
167
+ * Get the prover key for a circuit.
168
+ */
169
+ getProverKey(circuitId: K): Promise<ProverKey>;
170
+ /**
171
+ * Get the verifier key for a circuit.
172
+ */
173
+ getVerifierKey(circuitId: K): Promise<VerifierKey>;
174
+ /**
175
+ * Clear the cache for a specific circuit or all circuits.
176
+ */
177
+ clearCache(circuitId?: K): void;
178
+ /**
179
+ * Raw Effect APIs for advanced users.
180
+ *
181
+ * @since 0.2.0
182
+ * @category effect
183
+ */
184
+ readonly effect: {
185
+ getZKIR: (circuitId: K) => Effect.Effect<ZKIR, ZkConfigError, never>;
186
+ getProverKey: (circuitId: K) => Effect.Effect<ProverKey, ZkConfigError, never>;
187
+ getVerifierKey: (circuitId: K) => Effect.Effect<VerifierKey, ZkConfigError, never>;
188
+ };
189
+ }
190
+ /**
191
+ * Service interface for ZkConfig operations.
192
+ *
193
+ * @since 0.2.0
194
+ * @category service
195
+ */
196
+ export interface ZkConfigServiceImpl {
197
+ readonly getZKIR: (provider: HttpZkConfigProviderData, circuitId: string) => Effect.Effect<ZKIR, ZkConfigError>;
198
+ readonly getProverKey: (provider: HttpZkConfigProviderData, circuitId: string) => Effect.Effect<ProverKey, ZkConfigError>;
199
+ readonly getVerifierKey: (provider: HttpZkConfigProviderData, circuitId: string) => Effect.Effect<VerifierKey, ZkConfigError>;
200
+ }
201
+ declare const ZkConfigService_base: Context.TagClass<ZkConfigService, "ZkConfigService", ZkConfigServiceImpl>;
202
+ /**
203
+ * Context.Tag for ZkConfigService dependency injection.
204
+ *
205
+ * @since 0.2.0
206
+ * @category service
207
+ */
208
+ export declare class ZkConfigService extends ZkConfigService_base {
209
+ }
210
+ /**
211
+ * Live Layer for ZkConfigService.
212
+ *
213
+ * @since 0.2.0
214
+ * @category layer
215
+ */
216
+ export declare const ZkConfigLive: Layer.Layer<ZkConfigService>;
217
+ declare const ZkConfigProviderService_base: Context.TagClass<ZkConfigProviderService, "ZkConfigProviderService", ZKConfigProvider<string>>;
218
+ /**
219
+ * ZK configuration provider service for dependency injection.
220
+ *
221
+ * This tag allows injecting a ZKConfigProvider instance.
222
+ *
223
+ * @since 0.3.0
224
+ * @category services
225
+ */
226
+ export declare class ZkConfigProviderService extends ZkConfigProviderService_base {
227
+ }
228
+ export {};
229
+ //# sourceMappingURL=HttpZkConfigProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpZkConfigProvider.d.ts","sourceRoot":"","sources":["../../src/providers/HttpZkConfigProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,275 @@
1
+ /**
2
+ * HTTP-based ZK configuration provider.
3
+ *
4
+ * ## API Design
5
+ *
6
+ * This module uses a **module-function pattern**:
7
+ *
8
+ * - **Stateless**: Functions operate on HttpZkConfigProvider data
9
+ * - **Module functions**: `HttpZkConfigProvider.getZKIR(provider, circuitId)`
10
+ * - **Data-oriented**: Provider is plain data, not an instance with methods
11
+ *
12
+ * ### Usage Patterns
13
+ *
14
+ * ```typescript
15
+ * // Promise user
16
+ * const provider = HttpZkConfigProvider.make('https://cdn.example.com/zk');
17
+ * const zkir = await HttpZkConfigProvider.getZKIR(provider, 'increment');
18
+ *
19
+ * // Effect user
20
+ * const provider = HttpZkConfigProvider.make('https://cdn.example.com/zk');
21
+ * const zkir = yield* HttpZkConfigProvider.effect.getZKIR(provider, 'increment');
22
+ * ```
23
+ *
24
+ * @since 0.2.0
25
+ * @module
26
+ */
27
+ import { Context, Effect, Layer } from 'effect';
28
+ import { ZKConfigProvider, createProverKey, createVerifierKey, createZKIR, } from '@midnight-ntwrk/midnight-js-types';
29
+ import { ZkConfigError } from './errors.js';
30
+ import { runEffectPromise } from '../utils/effect-runtime.js';
31
+ // =============================================================================
32
+ // Internal Effect Implementations
33
+ // =============================================================================
34
+ function fetchBytesEffect(provider, url) {
35
+ return Effect.tryPromise({
36
+ try: async () => {
37
+ const response = await provider.fetchFn(url);
38
+ if (!response.ok) {
39
+ throw new Error(`HTTP ${response.status} ${response.statusText}`);
40
+ }
41
+ const buffer = await response.arrayBuffer();
42
+ return new Uint8Array(buffer);
43
+ },
44
+ catch: (cause) => new ZkConfigError({
45
+ cause,
46
+ message: `Failed to fetch ZK config from ${url}: ${cause instanceof Error ? cause.message : String(cause)}`,
47
+ }),
48
+ });
49
+ }
50
+ function getZKIREffect(provider, circuitId) {
51
+ return Effect.gen(function* () {
52
+ const cached = provider.cache.get(circuitId);
53
+ if (cached) {
54
+ return cached.zkir;
55
+ }
56
+ const bytes = yield* fetchBytesEffect(provider, `${provider.baseUrl}/${circuitId}/zkir`);
57
+ return createZKIR(bytes);
58
+ });
59
+ }
60
+ function getProverKeyEffect(provider, circuitId) {
61
+ return Effect.gen(function* () {
62
+ const cached = provider.cache.get(circuitId);
63
+ if (cached) {
64
+ return cached.proverKey;
65
+ }
66
+ const bytes = yield* fetchBytesEffect(provider, `${provider.baseUrl}/${circuitId}/prover-key`);
67
+ return createProverKey(bytes);
68
+ });
69
+ }
70
+ function getVerifierKeyEffect(provider, circuitId) {
71
+ return Effect.gen(function* () {
72
+ const cached = provider.cache.get(circuitId);
73
+ if (cached) {
74
+ return cached.verifierKey;
75
+ }
76
+ const bytes = yield* fetchBytesEffect(provider, `${provider.baseUrl}/${circuitId}/verifier-key`);
77
+ return createVerifierKey(bytes);
78
+ });
79
+ }
80
+ // =============================================================================
81
+ // Promise API
82
+ // =============================================================================
83
+ /**
84
+ * Create a new HTTP ZK config provider.
85
+ *
86
+ * @param baseUrl - Base URL for ZK artifacts (without trailing slash)
87
+ * @param fetchFn - Optional custom fetch function (defaults to global fetch)
88
+ * @returns HttpZkConfigProviderData
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const provider = HttpZkConfigProvider.make('https://cdn.example.com/contracts/counter');
93
+ * ```
94
+ *
95
+ * @since 0.2.0
96
+ * @category constructors
97
+ */
98
+ export function make(baseUrl, fetchFn) {
99
+ return {
100
+ baseUrl: baseUrl.replace(/\/$/, ''),
101
+ fetchFn: fetchFn ?? fetch,
102
+ cache: new Map(),
103
+ };
104
+ }
105
+ /**
106
+ * Get the ZKIR for a circuit.
107
+ *
108
+ * @param provider - The provider data
109
+ * @param circuitId - Circuit identifier
110
+ * @returns ZKIR bytes
111
+ *
112
+ * @since 0.2.0
113
+ * @category operations
114
+ */
115
+ export async function getZKIR(provider, circuitId) {
116
+ return runEffectPromise(getZKIREffect(provider, circuitId));
117
+ }
118
+ /**
119
+ * Get the prover key for a circuit.
120
+ *
121
+ * @param provider - The provider data
122
+ * @param circuitId - Circuit identifier
123
+ * @returns Prover key bytes
124
+ *
125
+ * @since 0.2.0
126
+ * @category operations
127
+ */
128
+ export async function getProverKey(provider, circuitId) {
129
+ return runEffectPromise(getProverKeyEffect(provider, circuitId));
130
+ }
131
+ /**
132
+ * Get the verifier key for a circuit.
133
+ *
134
+ * @param provider - The provider data
135
+ * @param circuitId - Circuit identifier
136
+ * @returns Verifier key bytes
137
+ *
138
+ * @since 0.2.0
139
+ * @category operations
140
+ */
141
+ export async function getVerifierKey(provider, circuitId) {
142
+ return runEffectPromise(getVerifierKeyEffect(provider, circuitId));
143
+ }
144
+ /**
145
+ * Clear the cache for a specific circuit or all circuits.
146
+ *
147
+ * @param provider - The provider data
148
+ * @param circuitId - Optional circuit ID to clear (clears all if not provided)
149
+ *
150
+ * @since 0.2.0
151
+ * @category utilities
152
+ */
153
+ export function clearCache(provider, circuitId) {
154
+ if (circuitId) {
155
+ provider.cache.delete(circuitId);
156
+ }
157
+ else {
158
+ provider.cache.clear();
159
+ }
160
+ }
161
+ /**
162
+ * Raw Effect APIs for advanced users.
163
+ *
164
+ * @since 0.2.0
165
+ * @category effect
166
+ */
167
+ export const effect = {
168
+ getZKIR: getZKIREffect,
169
+ getProverKey: getProverKeyEffect,
170
+ getVerifierKey: getVerifierKeyEffect,
171
+ };
172
+ // =============================================================================
173
+ // ZKConfigProvider Wrapper Class (for midnight-js compatibility)
174
+ // =============================================================================
175
+ /**
176
+ * HTTP-based ZK configuration provider class.
177
+ *
178
+ * This class wraps the module functions to provide compatibility with
179
+ * the midnight-js ZKConfigProvider interface.
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * const zkConfig = new HttpZkConfigProvider('https://cdn.example.com/contracts/counter');
184
+ *
185
+ * // Use with midnight-js
186
+ * const client = await Client.create({
187
+ * zkConfigProvider: zkConfig,
188
+ * // ...
189
+ * });
190
+ * ```
191
+ *
192
+ * @since 0.2.0
193
+ * @category constructors
194
+ */
195
+ export class HttpZkConfigProvider extends ZKConfigProvider {
196
+ data;
197
+ /**
198
+ * Create a new HTTP ZK config provider.
199
+ *
200
+ * @param baseUrl - Base URL for ZK artifacts (without trailing slash)
201
+ * @param fetchFn - Optional custom fetch function (defaults to global fetch)
202
+ */
203
+ constructor(baseUrl, fetchFn) {
204
+ super();
205
+ this.data = make(baseUrl, fetchFn);
206
+ }
207
+ /**
208
+ * Get the ZKIR for a circuit.
209
+ */
210
+ async getZKIR(circuitId) {
211
+ return getZKIR(this.data, circuitId);
212
+ }
213
+ /**
214
+ * Get the prover key for a circuit.
215
+ */
216
+ async getProverKey(circuitId) {
217
+ return getProverKey(this.data, circuitId);
218
+ }
219
+ /**
220
+ * Get the verifier key for a circuit.
221
+ */
222
+ async getVerifierKey(circuitId) {
223
+ return getVerifierKey(this.data, circuitId);
224
+ }
225
+ /**
226
+ * Clear the cache for a specific circuit or all circuits.
227
+ */
228
+ clearCache(circuitId) {
229
+ clearCache(this.data, circuitId);
230
+ }
231
+ /**
232
+ * Raw Effect APIs for advanced users.
233
+ *
234
+ * @since 0.2.0
235
+ * @category effect
236
+ */
237
+ effect = {
238
+ getZKIR: (circuitId) => getZKIREffect(this.data, circuitId),
239
+ getProverKey: (circuitId) => getProverKeyEffect(this.data, circuitId),
240
+ getVerifierKey: (circuitId) => getVerifierKeyEffect(this.data, circuitId),
241
+ };
242
+ }
243
+ /**
244
+ * Context.Tag for ZkConfigService dependency injection.
245
+ *
246
+ * @since 0.2.0
247
+ * @category service
248
+ */
249
+ export class ZkConfigService extends Context.Tag('ZkConfigService')() {
250
+ }
251
+ // =============================================================================
252
+ // Effect DI - Live Layer
253
+ // =============================================================================
254
+ /**
255
+ * Live Layer for ZkConfigService.
256
+ *
257
+ * @since 0.2.0
258
+ * @category layer
259
+ */
260
+ export const ZkConfigLive = Layer.succeed(ZkConfigService, {
261
+ getZKIR: getZKIREffect,
262
+ getProverKey: getProverKeyEffect,
263
+ getVerifierKey: getVerifierKeyEffect,
264
+ });
265
+ /**
266
+ * ZK configuration provider service for dependency injection.
267
+ *
268
+ * This tag allows injecting a ZKConfigProvider instance.
269
+ *
270
+ * @since 0.3.0
271
+ * @category services
272
+ */
273
+ export class ZkConfigProviderService extends Context.Tag('ZkConfigProviderService')() {
274
+ }
275
+ //# sourceMappingURL=HttpZkConfigProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpZkConfigProvider.js","sourceRoot":"","sources":["../../src/providers/HttpZkConfigProvider.ts"],"names":[],"mappings":"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"}