@no-witness-labs/midday-sdk 0.2.4 → 0.2.6

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 +60 -82
  2. package/dist/Client.d.ts +290 -340
  3. package/dist/Client.d.ts.map +1 -1
  4. package/dist/Client.js +318 -359
  5. package/dist/Client.js.map +1 -1
  6. package/dist/Config.d.ts +2 -57
  7. package/dist/Config.d.ts.map +1 -1
  8. package/dist/Config.js +1 -47
  9. package/dist/Config.js.map +1 -1
  10. package/dist/Hash.d.ts +126 -0
  11. package/dist/Hash.d.ts.map +1 -0
  12. package/dist/Hash.js +146 -0
  13. package/dist/Hash.js.map +1 -0
  14. package/dist/PrivateState.d.ts +9 -0
  15. package/dist/PrivateState.d.ts.map +1 -0
  16. package/dist/PrivateState.js +9 -0
  17. package/dist/PrivateState.js.map +1 -0
  18. package/dist/Providers.d.ts +42 -63
  19. package/dist/Providers.d.ts.map +1 -1
  20. package/dist/Providers.js +34 -62
  21. package/dist/Providers.js.map +1 -1
  22. package/dist/Runtime.d.ts +8 -0
  23. package/dist/Runtime.d.ts.map +1 -0
  24. package/dist/Runtime.js +8 -0
  25. package/dist/Runtime.js.map +1 -0
  26. package/dist/Wallet.d.ts +1 -1
  27. package/dist/Wallet.d.ts.map +1 -1
  28. package/dist/Wallet.js +2 -0
  29. package/dist/Wallet.js.map +1 -1
  30. package/dist/ZkConfig.d.ts +80 -0
  31. package/dist/ZkConfig.d.ts.map +1 -0
  32. package/dist/ZkConfig.js +85 -0
  33. package/dist/ZkConfig.js.map +1 -0
  34. package/dist/devnet/Cluster.d.ts +0 -9
  35. package/dist/devnet/Cluster.d.ts.map +1 -1
  36. package/dist/devnet/Cluster.js +0 -13
  37. package/dist/devnet/Cluster.js.map +1 -1
  38. package/dist/devnet/index.d.ts +9 -8
  39. package/dist/devnet/index.d.ts.map +1 -1
  40. package/dist/devnet/index.js +9 -8
  41. package/dist/devnet/index.js.map +1 -1
  42. package/dist/index.d.ts +30 -47
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +33 -52
  45. package/dist/index.js.map +1 -1
  46. package/dist/providers/HttpZkConfigProvider.d.ts +8 -6
  47. package/dist/providers/HttpZkConfigProvider.d.ts.map +1 -1
  48. package/dist/providers/HttpZkConfigProvider.js +8 -6
  49. package/dist/providers/HttpZkConfigProvider.js.map +1 -1
  50. package/dist/providers/IndexedDBPrivateStateProvider.d.ts +8 -8
  51. package/dist/providers/IndexedDBPrivateStateProvider.js +8 -8
  52. package/dist/utils/index.d.ts +9 -0
  53. package/dist/utils/index.d.ts.map +1 -0
  54. package/dist/utils/index.js +9 -0
  55. package/dist/utils/index.js.map +1 -0
  56. package/dist/wallet/connector.d.ts +1 -1
  57. package/dist/wallet/connector.js +1 -1
  58. package/dist/wallet/index.d.ts +15 -0
  59. package/dist/wallet/index.d.ts.map +1 -0
  60. package/dist/wallet/index.js +18 -0
  61. package/dist/wallet/index.js.map +1 -0
  62. package/package.json +1 -1
  63. package/dist/sdk/Type.d.ts +0 -91
  64. package/dist/sdk/Type.d.ts.map +0 -1
  65. package/dist/sdk/Type.js +0 -8
  66. package/dist/sdk/Type.js.map +0 -1
package/README.md CHANGED
@@ -10,7 +10,7 @@ pnpm add @no-witness-labs/midday-sdk
10
10
 
11
11
  ## Quick Start
12
12
 
13
- ### Promise API (Non-Effect Users)
13
+ ### Promise API
14
14
 
15
15
  ```typescript
16
16
  import * as Midday from '@no-witness-labs/midday-sdk';
@@ -18,25 +18,24 @@ import * as Midday from '@no-witness-labs/midday-sdk';
18
18
  // Create client
19
19
  const client = await Midday.Client.create({
20
20
  networkConfig: Midday.Config.NETWORKS.local,
21
- zkConfigProvider: new Midday.HttpZkConfigProvider('http://localhost:3000/zk'),
22
- privateStateProvider: Midday.inMemoryPrivateStateProvider(),
21
+ zkConfigProvider: zkConfig,
22
+ privateStateProvider: Midday.PrivateState.inMemoryPrivateStateProvider(),
23
23
  });
24
24
 
25
25
  // Load and deploy a contract
26
- const builder = await Midday.Client.contractFrom(client, {
27
- module: await import('./contracts/counter/index.js'),
28
- });
29
- const contract = await Midday.ContractBuilder.deploy(builder);
26
+ const contract = await client.loadContract({ module });
27
+ await contract.deploy();
28
+ console.log(`Deployed at: ${contract.address}`);
30
29
 
31
30
  // Call contract actions
32
- await Midday.Contract.call(contract, 'increment');
31
+ await contract.call('increment');
33
32
 
34
33
  // Read state
35
- const state = await Midday.Contract.ledgerState(contract);
34
+ const state = await contract.ledgerState();
36
35
  console.log(state.counter);
37
36
  ```
38
37
 
39
- ### Effect API (Pure Effect Users)
38
+ ### Effect API
40
39
 
41
40
  ```typescript
42
41
  import * as Midday from '@no-witness-labs/midday-sdk';
@@ -45,21 +44,19 @@ import { Effect } from 'effect';
45
44
  const program = Effect.gen(function* () {
46
45
  const client = yield* Midday.Client.effect.create({
47
46
  networkConfig: Midday.Config.NETWORKS.local,
48
- zkConfigProvider: new Midday.HttpZkConfigProvider('http://localhost:3000/zk'),
49
- privateStateProvider: Midday.inMemoryPrivateStateProvider(),
47
+ zkConfigProvider: zkConfig,
48
+ privateStateProvider: Midday.PrivateState.inMemoryPrivateStateProvider(),
50
49
  });
51
50
 
52
- const builder = yield* Midday.Client.effect.contractFrom(client, {
53
- module: await import('./contracts/counter/index.js'),
54
- });
51
+ const contract = yield* client.effect.loadContract({ module });
52
+ yield* contract.effect.deploy();
53
+ yield* contract.effect.call('increment');
54
+ const state = yield* contract.effect.ledgerState();
55
55
 
56
- const contract = yield* Midday.ContractBuilder.effect.deploy(builder);
57
- const result = yield* Midday.Contract.effect.call(contract, 'increment');
58
-
59
- return result;
56
+ return state;
60
57
  });
61
58
 
62
- const result = await Midday.runEffectPromise(program);
59
+ const result = await Midday.Runtime.runEffectPromise(program);
63
60
  ```
64
61
 
65
62
  ### Effect DI (Dependency Injection)
@@ -68,35 +65,21 @@ const result = await Midday.runEffectPromise(program);
68
65
  import * as Midday from '@no-witness-labs/midday-sdk';
69
66
  import { Effect, Layer } from 'effect';
70
67
 
71
- const program = Effect.gen(function* () {
72
- const clientService = yield* Midday.ClientService;
73
- const contractBuilderService = yield* Midday.ContractBuilderService;
74
- const contractService = yield* Midday.ContractService;
75
-
76
- const client = yield* clientService.create({
77
- networkConfig: Midday.Config.NETWORKS.local,
78
- zkConfigProvider: new Midday.HttpZkConfigProvider('http://localhost:3000/zk'),
79
- privateStateProvider: Midday.inMemoryPrivateStateProvider(),
80
- });
81
-
82
- const builder = yield* clientService.contractFrom(client, {
83
- module: await import('./contracts/counter/index.js'),
84
- });
85
-
86
- const contract = yield* contractBuilderService.deploy(builder);
87
- const result = yield* contractService.call(contract, 'increment');
88
-
89
- return result;
68
+ const ClientLayer = Midday.Client.layer({
69
+ networkConfig: Midday.Config.NETWORKS.local,
70
+ zkConfigProvider: zkConfig,
71
+ privateStateProvider: Midday.PrivateState.inMemoryPrivateStateProvider(),
90
72
  });
91
73
 
92
- // Compose layers
93
- const MainLive = Layer.mergeAll(
94
- Midday.ClientLive,
95
- Midday.ContractBuilderLive,
96
- Midday.ContractLive,
97
- );
74
+ const program = Effect.gen(function* () {
75
+ const client = yield* Midday.MiddayClientService;
76
+ const contract = yield* client.effect.loadContract({ module });
77
+ yield* contract.effect.deploy();
78
+ yield* contract.effect.call('increment');
79
+ return yield* contract.effect.ledgerState();
80
+ });
98
81
 
99
- const result = await Effect.runPromise(program.pipe(Effect.provide(MainLive)));
82
+ const result = await Effect.runPromise(program.pipe(Effect.provide(ClientLayer)));
100
83
  ```
101
84
 
102
85
  ## Browser Usage (Lace Wallet)
@@ -105,20 +88,18 @@ const result = await Effect.runPromise(program.pipe(Effect.provide(MainLive)));
105
88
  import * as Midday from '@no-witness-labs/midday-sdk';
106
89
 
107
90
  // Connect to Lace wallet
108
- const connection = await Midday.connectWallet('testnet');
91
+ const connection = await Midday.BrowserWallet.connectWallet('testnet');
109
92
 
110
93
  // Create client from wallet connection
111
94
  const client = await Midday.Client.fromWallet(connection, {
112
- zkConfigProvider: new Midday.HttpZkConfigProvider('https://cdn.example.com/zk'),
113
- privateStateProvider: Midday.indexedDBPrivateStateProvider({ privateStateStoreName: 'my-app' }),
95
+ zkConfigProvider: new Midday.Providers.HttpZkConfigProvider('https://cdn.example.com/zk'),
96
+ privateStateProvider: Midday.PrivateState.indexedDBPrivateStateProvider({ privateStateStoreName: 'my-app' }),
114
97
  });
115
98
 
116
- // Use contract
117
- const builder = await Midday.Client.contractFrom(client, {
118
- module: await import('./contracts/counter/index.js'),
119
- });
120
- const contract = await Midday.ContractBuilder.deploy(builder);
121
- await Midday.Contract.call(contract, 'increment');
99
+ // Load and deploy contract
100
+ const contract = await client.loadContract({ module });
101
+ await contract.deploy();
102
+ await contract.call('increment');
122
103
  ```
123
104
 
124
105
  ## Configuration
@@ -158,38 +139,34 @@ const client = await Midday.Client.create({
158
139
  ### Deploy a New Contract
159
140
 
160
141
  ```typescript
161
- const builder = await Midday.Client.contractFrom(client, {
162
- module: await import('./contracts/my-contract/index.js'),
163
- });
164
- const contract = await Midday.ContractBuilder.deploy(builder);
142
+ const contract = await client.loadContract({ module });
143
+ await contract.deploy();
165
144
  console.log(`Deployed at: ${contract.address}`);
166
145
  ```
167
146
 
168
147
  ### Join an Existing Contract
169
148
 
170
149
  ```typescript
171
- const builder = await Midday.Client.contractFrom(client, {
172
- module: await import('./contracts/my-contract/index.js'),
173
- });
174
- const contract = await Midday.ContractBuilder.join(builder, { address: contractAddress });
150
+ const contract = await client.loadContract({ module });
151
+ await contract.join(contractAddress);
175
152
  ```
176
153
 
177
154
  ### With Witnesses
178
155
 
179
156
  ```typescript
180
- const builder = await Midday.Client.contractFrom(client, {
181
- module: await import('./contracts/my-contract/index.js'),
157
+ const contract = await client.loadContract({
158
+ module,
182
159
  witnesses: {
183
160
  my_witness_function: myImplementation,
184
161
  },
185
162
  });
186
- const contract = await Midday.ContractBuilder.deploy(builder);
163
+ await contract.deploy();
187
164
  ```
188
165
 
189
166
  ### Call Actions
190
167
 
191
168
  ```typescript
192
- const result = await Midday.Contract.call(contract, 'increment');
169
+ const result = await contract.call('increment');
193
170
  console.log(`TX Hash: ${result.txHash}`);
194
171
  console.log(`Block: ${result.blockHeight}`);
195
172
  ```
@@ -198,33 +175,34 @@ console.log(`Block: ${result.blockHeight}`);
198
175
 
199
176
  ```typescript
200
177
  // Parsed state via ledger
201
- const state = await Midday.Contract.ledgerState(contract);
202
-
203
- // Raw state
204
- const rawState = await Midday.Contract.state(contract);
178
+ const state = await contract.ledgerState();
205
179
 
206
180
  // State at specific block
207
- const historicalState = await Midday.Contract.ledgerStateAt(contract, blockHeight);
181
+ const historicalState = await contract.ledgerStateAt(blockHeight);
208
182
  ```
209
183
 
210
184
  ## API Reference
211
185
 
212
- ### Modules
186
+ ### Namespaces
213
187
 
214
- - `Midday.Client` - High-level client for contract interactions
215
- - `Midday.ContractBuilder` - Contract deployment and joining
216
- - `Midday.Contract` - Contract operations (call, state)
188
+ - `Midday.Client` - Client creation and contract loading
189
+ - `Midday.Client.create(config)` - Create a new client (Promise)
190
+ - `Midday.Client.effect.create(config)` - Create a new client (Effect)
191
+ - `Midday.Client.fromWallet(connection, config)` - Create client from wallet (browser)
217
192
  - `Midday.Config` - Network configuration utilities
218
193
  - `Midday.Wallet` - Wallet initialization and management
194
+ - `Midday.BrowserWallet` - Browser wallet connection (Lace)
219
195
  - `Midday.Providers` - Low-level provider setup
196
+ - `Midday.PrivateState` - Private state providers
197
+ - `Midday.Hash` - Cryptographic hash utilities
198
+ - `Midday.Runtime` - Effect runtime utilities
220
199
 
221
200
  ### Services (Effect DI)
222
201
 
223
202
  | Service | Layer | Description |
224
203
  |---------|-------|-------------|
225
- | `ClientService` | `ClientLive` | Client creation and contract loading |
226
- | `ContractBuilderService` | `ContractBuilderLive` | Contract deployment and joining |
227
- | `ContractService` | `ContractLive` | Contract operations |
204
+ | `MiddayClientService` | `Client.layer(config)` | Pre-initialized client |
205
+ | `ClientService` | `ClientLive` | Client factory |
228
206
  | `WalletService` | `WalletLive` | Wallet initialization |
229
207
  | `ProvidersService` | `ProvidersLive` | Provider setup |
230
208
  | `ZkConfigService` | `ZkConfigLive` | ZK configuration loading |
@@ -237,9 +215,9 @@ const historicalState = await Midday.Contract.ledgerStateAt(contract, blockHeigh
237
215
  ```typescript
238
216
  import type {
239
217
  ClientConfig,
240
- MidnightClient,
241
- ContractBuilder,
242
- ConnectedContract,
218
+ MiddayClient,
219
+ Contract,
220
+ ContractState,
243
221
  CallResult,
244
222
  NetworkConfig,
245
223
  WalletContext,