@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 @@
1
+ {"version":3,"file":"effect-runtime.js","sourceRoot":"","sources":["../../src/utils/effect-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Browser-compatible hex encoding utilities.
3
+ *
4
+ * Replaces Node.js Buffer with standard Web APIs that work in both browser and Node.js 18+.
5
+ *
6
+ * @since 0.2.0
7
+ * @module
8
+ */
9
+ /**
10
+ * Convert a hex string to Uint8Array.
11
+ *
12
+ * @param hex - Hex string (with or without 0x prefix)
13
+ * @returns Uint8Array of bytes
14
+ * @throws Error if hex string is invalid
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const bytes = hexToBytes('deadbeef');
19
+ * // Uint8Array [222, 173, 190, 239]
20
+ * ```
21
+ */
22
+ export declare function hexToBytes(hex: string): Uint8Array;
23
+ /**
24
+ * Convert Uint8Array to hex string.
25
+ *
26
+ * @param bytes - Uint8Array to convert
27
+ * @returns Lowercase hex string (without 0x prefix)
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const hex = bytesToHex(new Uint8Array([222, 173, 190, 239]));
32
+ * // 'deadbeef'
33
+ * ```
34
+ */
35
+ export declare function bytesToHex(bytes: Uint8Array): string;
36
+ /**
37
+ * Convert base64 string to Uint8Array.
38
+ *
39
+ * @param base64 - Base64 encoded string
40
+ * @returns Uint8Array of bytes
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const bytes = base64ToBytes('3q2+7w==');
45
+ * // Uint8Array [222, 173, 190, 239]
46
+ * ```
47
+ */
48
+ export declare function base64ToBytes(base64: string): Uint8Array;
49
+ /**
50
+ * Convert Uint8Array to base64 string.
51
+ *
52
+ * @param bytes - Uint8Array to convert
53
+ * @returns Base64 encoded string
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const base64 = bytesToBase64(new Uint8Array([222, 173, 190, 239]));
58
+ * // '3q2+7w=='
59
+ * ```
60
+ */
61
+ export declare function bytesToBase64(bytes: Uint8Array): string;
62
+ //# sourceMappingURL=hex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../src/utils/hex.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAkBlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAQxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAKvD"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Browser-compatible hex encoding utilities.
3
+ *
4
+ * Replaces Node.js Buffer with standard Web APIs that work in both browser and Node.js 18+.
5
+ *
6
+ * @since 0.2.0
7
+ * @module
8
+ */
9
+ /**
10
+ * Convert a hex string to Uint8Array.
11
+ *
12
+ * @param hex - Hex string (with or without 0x prefix)
13
+ * @returns Uint8Array of bytes
14
+ * @throws Error if hex string is invalid
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const bytes = hexToBytes('deadbeef');
19
+ * // Uint8Array [222, 173, 190, 239]
20
+ * ```
21
+ */
22
+ export function hexToBytes(hex) {
23
+ // Remove 0x prefix if present
24
+ const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;
25
+ if (cleanHex.length % 2 !== 0) {
26
+ throw new Error('Invalid hex string: length must be even');
27
+ }
28
+ if (!/^[0-9a-fA-F]*$/.test(cleanHex)) {
29
+ throw new Error('Invalid hex string: contains non-hex characters');
30
+ }
31
+ const bytes = new Uint8Array(cleanHex.length / 2);
32
+ for (let i = 0; i < cleanHex.length; i += 2) {
33
+ bytes[i / 2] = parseInt(cleanHex.slice(i, i + 2), 16);
34
+ }
35
+ return bytes;
36
+ }
37
+ /**
38
+ * Convert Uint8Array to hex string.
39
+ *
40
+ * @param bytes - Uint8Array to convert
41
+ * @returns Lowercase hex string (without 0x prefix)
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const hex = bytesToHex(new Uint8Array([222, 173, 190, 239]));
46
+ * // 'deadbeef'
47
+ * ```
48
+ */
49
+ export function bytesToHex(bytes) {
50
+ return Array.from(bytes)
51
+ .map((b) => b.toString(16).padStart(2, '0'))
52
+ .join('');
53
+ }
54
+ /**
55
+ * Convert base64 string to Uint8Array.
56
+ *
57
+ * @param base64 - Base64 encoded string
58
+ * @returns Uint8Array of bytes
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const bytes = base64ToBytes('3q2+7w==');
63
+ * // Uint8Array [222, 173, 190, 239]
64
+ * ```
65
+ */
66
+ export function base64ToBytes(base64) {
67
+ // Use atob which is available in both browser and Node.js 18+
68
+ const binaryString = atob(base64);
69
+ const bytes = new Uint8Array(binaryString.length);
70
+ for (let i = 0; i < binaryString.length; i++) {
71
+ bytes[i] = binaryString.charCodeAt(i);
72
+ }
73
+ return bytes;
74
+ }
75
+ /**
76
+ * Convert Uint8Array to base64 string.
77
+ *
78
+ * @param bytes - Uint8Array to convert
79
+ * @returns Base64 encoded string
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const base64 = bytesToBase64(new Uint8Array([222, 173, 190, 239]));
84
+ * // '3q2+7w=='
85
+ * ```
86
+ */
87
+ export function bytesToBase64(bytes) {
88
+ const binaryString = Array.from(bytes)
89
+ .map((b) => String.fromCharCode(b))
90
+ .join('');
91
+ return btoa(binaryString);
92
+ }
93
+ //# sourceMappingURL=hex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.js","sourceRoot":"","sources":["../../src/utils/hex.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,8DAA8D;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SAClC,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Wallet connector for Lace wallet integration in browser.
3
+ *
4
+ * Connects to the Lace browser extension via DAppConnectorAPI v4.
5
+ * Provides dual API: Effect-based and Promise-based.
6
+ *
7
+ * @since 0.2.0
8
+ * @module
9
+ */
10
+ import { Context, Effect, Layer } from 'effect';
11
+ import { WalletError } from './errors.js';
12
+ /**
13
+ * Key material provider for proving.
14
+ */
15
+ export interface KeyMaterialProvider {
16
+ getZKIR(circuitKeyLocation: string): Promise<Uint8Array>;
17
+ getProverKey(circuitKeyLocation: string): Promise<Uint8Array>;
18
+ getVerifierKey(circuitKeyLocation: string): Promise<Uint8Array>;
19
+ }
20
+ /**
21
+ * Proving provider from wallet.
22
+ */
23
+ export interface ProvingProvider {
24
+ check(serializedPreimage: Uint8Array, keyLocation: string): Promise<(bigint | undefined)[]>;
25
+ prove(serializedPreimage: Uint8Array, keyLocation: string, overwriteBindingInput?: bigint): Promise<Uint8Array>;
26
+ }
27
+ /**
28
+ * Network configuration from wallet.
29
+ */
30
+ export interface Configuration {
31
+ indexerUri: string;
32
+ indexerWsUri: string;
33
+ proverServerUri?: string;
34
+ substrateNodeUri: string;
35
+ networkId: string;
36
+ }
37
+ /**
38
+ * Initial API for wallet connection.
39
+ */
40
+ export interface InitialAPI {
41
+ rdns: string;
42
+ name: string;
43
+ icon: string;
44
+ apiVersion: string;
45
+ connect: (networkId: string) => Promise<ConnectedAPI>;
46
+ }
47
+ /**
48
+ * Connected wallet API.
49
+ */
50
+ export interface ConnectedAPI {
51
+ getShieldedBalances(): Promise<Record<string, bigint>>;
52
+ getUnshieldedBalances(): Promise<Record<string, bigint>>;
53
+ getDustBalance(): Promise<{
54
+ cap: bigint;
55
+ balance: bigint;
56
+ }>;
57
+ getShieldedAddresses(): Promise<{
58
+ shieldedAddress: string;
59
+ shieldedCoinPublicKey: string;
60
+ shieldedEncryptionPublicKey: string;
61
+ }>;
62
+ getUnshieldedAddress(): Promise<{
63
+ unshieldedAddress: string;
64
+ }>;
65
+ getDustAddress(): Promise<{
66
+ dustAddress: string;
67
+ }>;
68
+ balanceUnsealedTransaction(tx: string): Promise<{
69
+ tx: string;
70
+ }>;
71
+ balanceSealedTransaction(tx: string): Promise<{
72
+ tx: string;
73
+ }>;
74
+ submitTransaction(tx: string): Promise<string>;
75
+ getProvingProvider(keyMaterialProvider: KeyMaterialProvider): Promise<ProvingProvider>;
76
+ getConfiguration(): Promise<Configuration>;
77
+ hintUsage(methodNames: string[]): Promise<void>;
78
+ }
79
+ declare global {
80
+ interface Window {
81
+ midnight?: {
82
+ mnLace?: InitialAPI;
83
+ [key: string]: InitialAPI | undefined;
84
+ };
85
+ }
86
+ }
87
+ /**
88
+ * Shielded addresses returned by wallet.
89
+ */
90
+ export interface ShieldedAddresses {
91
+ shieldedAddress: string;
92
+ shieldedCoinPublicKey: string;
93
+ shieldedEncryptionPublicKey: string;
94
+ }
95
+ /**
96
+ * Result of connecting to a wallet.
97
+ */
98
+ export interface WalletConnection {
99
+ wallet: ConnectedAPI;
100
+ config: Configuration;
101
+ addresses: ShieldedAddresses;
102
+ coinPublicKey: string;
103
+ encryptionPublicKey: string;
104
+ }
105
+ /**
106
+ * Effect-based interface for wallet connector.
107
+ */
108
+ export interface WalletConnectorEffect {
109
+ readonly connect: (networkId?: string) => Effect.Effect<WalletConnection, WalletError>;
110
+ readonly isAvailable: () => Effect.Effect<boolean, never>;
111
+ readonly disconnect: () => Effect.Effect<void, never>;
112
+ readonly getProvingProvider: (wallet: ConnectedAPI, zkConfigProvider: KeyMaterialProvider) => Effect.Effect<ProvingProvider, WalletError>;
113
+ }
114
+ declare function isAvailableEffect(): Effect.Effect<boolean, never>;
115
+ declare function connectEffect(networkId?: string): Effect.Effect<WalletConnection, WalletError>;
116
+ declare function disconnectEffect(): Effect.Effect<void, never>;
117
+ declare function getProvingProviderEffect(wallet: ConnectedAPI, zkConfigProvider: KeyMaterialProvider): Effect.Effect<ProvingProvider, WalletError>;
118
+ /**
119
+ * Effect-based API for wallet connector.
120
+ */
121
+ export declare const WalletConnectorEffectAPI: WalletConnectorEffect;
122
+ /**
123
+ * Check if running in browser with Lace wallet available.
124
+ */
125
+ export declare function isWalletAvailable(): boolean;
126
+ /**
127
+ * Connect to the Lace wallet in browser.
128
+ *
129
+ * @param networkId - Network to connect to (default: 'testnet')
130
+ * @returns WalletConnection with wallet API and keys
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * // Effect-based usage
135
+ * const connection = yield* Midday.WalletConnector.effect.connect('testnet');
136
+ *
137
+ * // Promise-based usage
138
+ * const connection = await Midday.connectWallet('testnet');
139
+ * ```
140
+ */
141
+ export declare function connectWallet(networkId?: string): Promise<WalletConnection>;
142
+ /**
143
+ * Get a proving provider from the connected wallet.
144
+ */
145
+ export declare function getWalletProvingProvider(wallet: ConnectedAPI, zkConfigProvider: KeyMaterialProvider): Promise<ProvingProvider>;
146
+ /**
147
+ * Disconnect from the wallet (if supported).
148
+ */
149
+ export declare function disconnectWallet(): Promise<void>;
150
+ /**
151
+ * Raw Effect APIs for advanced users.
152
+ *
153
+ * @since 0.2.0
154
+ * @category effect
155
+ */
156
+ export declare const effect: {
157
+ connect: typeof connectEffect;
158
+ isAvailable: typeof isAvailableEffect;
159
+ disconnect: typeof disconnectEffect;
160
+ getProvingProvider: typeof getProvingProviderEffect;
161
+ };
162
+ /**
163
+ * Service interface for WalletConnector operations.
164
+ *
165
+ * @since 0.2.0
166
+ * @category service
167
+ */
168
+ export interface WalletConnectorServiceImpl {
169
+ readonly connect: (networkId?: string) => Effect.Effect<WalletConnection, WalletError>;
170
+ readonly isAvailable: () => Effect.Effect<boolean, never>;
171
+ readonly disconnect: () => Effect.Effect<void, never>;
172
+ readonly getProvingProvider: (wallet: ConnectedAPI, zkConfigProvider: KeyMaterialProvider) => Effect.Effect<ProvingProvider, WalletError>;
173
+ }
174
+ declare const WalletConnectorService_base: Context.TagClass<WalletConnectorService, "WalletConnectorService", WalletConnectorServiceImpl>;
175
+ /**
176
+ * Context.Tag for WalletConnectorService dependency injection.
177
+ *
178
+ * @since 0.2.0
179
+ * @category service
180
+ */
181
+ export declare class WalletConnectorService extends WalletConnectorService_base {
182
+ }
183
+ /**
184
+ * Live Layer for WalletConnectorService.
185
+ *
186
+ * @since 0.2.0
187
+ * @category layer
188
+ */
189
+ export declare const WalletConnectorLive: Layer.Layer<WalletConnectorService>;
190
+ export {};
191
+ //# sourceMappingURL=connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/wallet/connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Wallet connector for Lace wallet integration in browser.
3
+ *
4
+ * Connects to the Lace browser extension via DAppConnectorAPI v4.
5
+ * Provides dual API: Effect-based and Promise-based.
6
+ *
7
+ * @since 0.2.0
8
+ * @module
9
+ */
10
+ import { Context, Effect, Layer } from 'effect';
11
+ import { WalletError } from './errors.js';
12
+ import { runEffect, runEffectPromise } from '../utils/effect-runtime.js';
13
+ // =============================================================================
14
+ // Effect API
15
+ // =============================================================================
16
+ function isAvailableEffect() {
17
+ return Effect.sync(() => typeof window !== 'undefined' && !!window.midnight?.mnLace);
18
+ }
19
+ function waitForWalletEffect(timeout = 5000) {
20
+ return Effect.tryPromise({
21
+ try: async () => {
22
+ const start = Date.now();
23
+ while (Date.now() - start < timeout) {
24
+ if (window.midnight?.mnLace) {
25
+ return window.midnight.mnLace;
26
+ }
27
+ await new Promise((resolve) => setTimeout(resolve, 100));
28
+ }
29
+ throw new Error('Lace wallet not found. Please install the Lace browser extension.');
30
+ },
31
+ catch: (cause) => new WalletError({
32
+ cause,
33
+ message: `Wallet not available: ${cause instanceof Error ? cause.message : String(cause)}`,
34
+ }),
35
+ });
36
+ }
37
+ function isVersionCompatible(version, required) {
38
+ const [major] = version.split('.').map(Number);
39
+ const [requiredMajor] = required.split('.').map(Number);
40
+ return major >= requiredMajor;
41
+ }
42
+ function connectEffect(networkId = 'testnet') {
43
+ return Effect.gen(function* () {
44
+ if (typeof window === 'undefined') {
45
+ return yield* Effect.fail(new WalletError({
46
+ cause: new Error('Browser environment required'),
47
+ message: 'connectWallet() can only be used in browser environment',
48
+ }));
49
+ }
50
+ const connector = yield* waitForWalletEffect();
51
+ if (!isVersionCompatible(connector.apiVersion, '4.0')) {
52
+ return yield* Effect.fail(new WalletError({
53
+ cause: new Error('Incompatible API version'),
54
+ message: `Incompatible wallet API version: ${connector.apiVersion}. Requires 4.x or higher. Please update Lace.`,
55
+ }));
56
+ }
57
+ const wallet = yield* Effect.tryPromise({
58
+ try: () => connector.connect(networkId),
59
+ catch: (cause) => new WalletError({
60
+ cause,
61
+ message: `Failed to connect to wallet: ${cause instanceof Error ? cause.message : String(cause)}`,
62
+ }),
63
+ });
64
+ const config = yield* Effect.tryPromise({
65
+ try: () => wallet.getConfiguration(),
66
+ catch: (cause) => new WalletError({
67
+ cause,
68
+ message: `Failed to get wallet configuration: ${cause instanceof Error ? cause.message : String(cause)}`,
69
+ }),
70
+ });
71
+ const addresses = yield* Effect.tryPromise({
72
+ try: () => wallet.getShieldedAddresses(),
73
+ catch: (cause) => new WalletError({
74
+ cause,
75
+ message: `Failed to get wallet addresses: ${cause instanceof Error ? cause.message : String(cause)}`,
76
+ }),
77
+ });
78
+ return {
79
+ wallet,
80
+ config,
81
+ addresses,
82
+ coinPublicKey: addresses.shieldedCoinPublicKey,
83
+ encryptionPublicKey: addresses.shieldedEncryptionPublicKey,
84
+ };
85
+ });
86
+ }
87
+ function disconnectEffect() {
88
+ // Currently Lace doesn't expose a disconnect API
89
+ return Effect.void;
90
+ }
91
+ function getProvingProviderEffect(wallet, zkConfigProvider) {
92
+ return Effect.tryPromise({
93
+ try: () => wallet.getProvingProvider(zkConfigProvider),
94
+ catch: (cause) => new WalletError({
95
+ cause,
96
+ message: `Failed to get proving provider: ${cause instanceof Error ? cause.message : String(cause)}`,
97
+ }),
98
+ });
99
+ }
100
+ /**
101
+ * Effect-based API for wallet connector.
102
+ */
103
+ export const WalletConnectorEffectAPI = {
104
+ connect: connectEffect,
105
+ isAvailable: isAvailableEffect,
106
+ disconnect: disconnectEffect,
107
+ getProvingProvider: getProvingProviderEffect,
108
+ };
109
+ // =============================================================================
110
+ // Promise API (backwards compatible)
111
+ // =============================================================================
112
+ /**
113
+ * Check if running in browser with Lace wallet available.
114
+ */
115
+ export function isWalletAvailable() {
116
+ return runEffect(isAvailableEffect());
117
+ }
118
+ /**
119
+ * Connect to the Lace wallet in browser.
120
+ *
121
+ * @param networkId - Network to connect to (default: 'testnet')
122
+ * @returns WalletConnection with wallet API and keys
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * // Effect-based usage
127
+ * const connection = yield* Midday.WalletConnector.effect.connect('testnet');
128
+ *
129
+ * // Promise-based usage
130
+ * const connection = await Midday.connectWallet('testnet');
131
+ * ```
132
+ */
133
+ export async function connectWallet(networkId = 'testnet') {
134
+ return runEffectPromise(connectEffect(networkId));
135
+ }
136
+ /**
137
+ * Get a proving provider from the connected wallet.
138
+ */
139
+ export async function getWalletProvingProvider(wallet, zkConfigProvider) {
140
+ return runEffectPromise(getProvingProviderEffect(wallet, zkConfigProvider));
141
+ }
142
+ /**
143
+ * Disconnect from the wallet (if supported).
144
+ */
145
+ export async function disconnectWallet() {
146
+ return runEffectPromise(disconnectEffect());
147
+ }
148
+ /**
149
+ * Raw Effect APIs for advanced users.
150
+ *
151
+ * @since 0.2.0
152
+ * @category effect
153
+ */
154
+ export const effect = {
155
+ connect: connectEffect,
156
+ isAvailable: isAvailableEffect,
157
+ disconnect: disconnectEffect,
158
+ getProvingProvider: getProvingProviderEffect,
159
+ };
160
+ /**
161
+ * Context.Tag for WalletConnectorService dependency injection.
162
+ *
163
+ * @since 0.2.0
164
+ * @category service
165
+ */
166
+ export class WalletConnectorService extends Context.Tag('WalletConnectorService')() {
167
+ }
168
+ // =============================================================================
169
+ // Effect DI - Live Layer
170
+ // =============================================================================
171
+ /**
172
+ * Live Layer for WalletConnectorService.
173
+ *
174
+ * @since 0.2.0
175
+ * @category layer
176
+ */
177
+ export const WalletConnectorLive = Layer.succeed(WalletConnectorService, {
178
+ connect: connectEffect,
179
+ isAvailable: isAvailableEffect,
180
+ disconnect: disconnectEffect,
181
+ getProvingProvider: getProvingProviderEffect,
182
+ });
183
+ //# sourceMappingURL=connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/wallet/connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAyGzE,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,SAAS,iBAAiB;IACxB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB,IAAI;IACjD,OAAO,MAAM,CAAC,UAAU,CAAC;QACvB,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;gBACpC,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;oBAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChC,CAAC;gBACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC;YACd,KAAK;YACL,OAAO,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SAC3F,CAAC;KACL,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,QAAgB;IAC5D,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,KAAK,IAAI,aAAa,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,YAAoB,SAAS;IAClD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,WAAW,CAAC;gBACd,KAAK,EAAE,IAAI,KAAK,CAAC,8BAA8B,CAAC;gBAChD,OAAO,EAAE,yDAAyD;aACnE,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAAC;QAE/C,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,WAAW,CAAC;gBACd,KAAK,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC;gBAC5C,OAAO,EAAE,oCAAoC,SAAS,CAAC,UAAU,+CAA+C;aACjH,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;YACtC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;YACvC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC;gBACd,KAAK;gBACL,OAAO,EAAE,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAClG,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;YACtC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACpC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC;gBACd,KAAK;gBACL,OAAO,EAAE,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACzG,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;YACzC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE;YACxC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC;gBACd,KAAK;gBACL,OAAO,EAAE,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACrG,CAAC;SACL,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,MAAM;YACN,SAAS;YACT,aAAa,EAAE,SAAS,CAAC,qBAAqB;YAC9C,mBAAmB,EAAE,SAAS,CAAC,2BAA2B;SAC3D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB;IACvB,iDAAiD;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAoB,EAAE,gBAAqC;IAC3F,OAAO,MAAM,CAAC,UAAU,CAAC;QACvB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;QACtD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,WAAW,CAAC;YACd,KAAK;YACL,OAAO,EAAE,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACrG,CAAC;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA0B;IAC7D,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,iBAAiB;IAC9B,UAAU,EAAE,gBAAgB;IAC5B,kBAAkB,EAAE,wBAAwB;CAC7C,CAAC;AAEF,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,YAAoB,SAAS;IAC/D,OAAO,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAoB,EACpB,gBAAqC;IAErC,OAAO,gBAAgB,CAAC,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,iBAAiB;IAC9B,UAAU,EAAE,gBAAgB;IAC5B,kBAAkB,EAAE,wBAAwB;CAC7C,CAAC;AAsBF;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAG9E;CAAG;AAEN,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE;IAC5G,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,iBAAiB;IAC9B,UAAU,EAAE,gBAAgB;IAC5B,kBAAkB,EAAE,wBAAwB;CAC7C,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Wallet-related error types.
3
+ *
4
+ * @since 0.3.0
5
+ * @module
6
+ */
7
+ declare const WalletError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
8
+ readonly _tag: "WalletError";
9
+ } & Readonly<A>;
10
+ /**
11
+ * Error during wallet initialization or synchronization.
12
+ *
13
+ * @since 0.3.0
14
+ * @category errors
15
+ */
16
+ export declare class WalletError extends WalletError_base<{
17
+ readonly cause: unknown;
18
+ readonly message: string;
19
+ }> {
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/wallet/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;AAIH;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Wallet-related error types.
3
+ *
4
+ * @since 0.3.0
5
+ * @module
6
+ */
7
+ import { Data } from 'effect';
8
+ /**
9
+ * Error during wallet initialization or synchronization.
10
+ *
11
+ * @since 0.3.0
12
+ * @category errors
13
+ */
14
+ export class WalletError extends Data.TaggedError('WalletError') {
15
+ }
16
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/wallet/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAG7D;CAAG"}