@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.
- package/README.md +145 -78
- package/dist/Client.d.ts +542 -70
- package/dist/Client.d.ts.map +1 -1
- package/dist/Client.js +608 -143
- package/dist/Client.js.map +1 -1
- package/dist/Config.d.ts +83 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +72 -15
- package/dist/Config.js.map +1 -1
- package/dist/Providers.d.ts +99 -9
- package/dist/Providers.d.ts.map +1 -1
- package/dist/Providers.js +142 -39
- package/dist/Providers.js.map +1 -1
- package/dist/Wallet.d.ts +88 -1
- package/dist/Wallet.d.ts.map +1 -1
- package/dist/Wallet.js +162 -51
- package/dist/Wallet.js.map +1 -1
- package/dist/index.d.ts +63 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -4
- package/dist/index.js.map +1 -1
- package/dist/providers/HttpZkConfigProvider.d.ts +229 -0
- package/dist/providers/HttpZkConfigProvider.d.ts.map +1 -0
- package/dist/providers/HttpZkConfigProvider.js +275 -0
- package/dist/providers/HttpZkConfigProvider.js.map +1 -0
- package/dist/providers/IndexedDBPrivateStateProvider.d.ts +270 -0
- package/dist/providers/IndexedDBPrivateStateProvider.d.ts.map +1 -0
- package/dist/providers/IndexedDBPrivateStateProvider.js +513 -0
- package/dist/providers/IndexedDBPrivateStateProvider.js.map +1 -0
- package/dist/providers/errors.d.ts +50 -0
- package/dist/providers/errors.d.ts.map +1 -0
- package/dist/providers/errors.js +32 -0
- package/dist/providers/errors.js.map +1 -0
- package/dist/sdk/Type.d.ts +91 -0
- package/dist/sdk/Type.d.ts.map +1 -0
- package/dist/sdk/Type.js +8 -0
- package/dist/sdk/Type.js.map +1 -0
- package/dist/utils/address.d.ts +56 -0
- package/dist/utils/address.d.ts.map +1 -0
- package/dist/utils/address.js +135 -0
- package/dist/utils/address.js.map +1 -0
- package/dist/utils/coin.d.ts +55 -0
- package/dist/utils/coin.d.ts.map +1 -0
- package/dist/utils/coin.js +84 -0
- package/dist/utils/coin.js.map +1 -0
- package/dist/utils/effect-runtime.d.ts +66 -0
- package/dist/utils/effect-runtime.d.ts.map +1 -0
- package/dist/utils/effect-runtime.js +147 -0
- package/dist/utils/effect-runtime.js.map +1 -0
- package/dist/utils/hex.d.ts +62 -0
- package/dist/utils/hex.d.ts.map +1 -0
- package/dist/utils/hex.js +93 -0
- package/dist/utils/hex.js.map +1 -0
- package/dist/wallet/connector.d.ts +191 -0
- package/dist/wallet/connector.d.ts.map +1 -0
- package/dist/wallet/connector.js +183 -0
- package/dist/wallet/connector.js.map +1 -0
- package/dist/wallet/errors.d.ts +22 -0
- package/dist/wallet/errors.d.ts.map +1 -0
- package/dist/wallet/errors.js +16 -0
- package/dist/wallet/errors.js.map +1 -0
- package/dist/wallet/provider.d.ts +102 -0
- package/dist/wallet/provider.d.ts.map +1 -0
- package/dist/wallet/provider.js +139 -0
- package/dist/wallet/provider.js.map +1 -0
- package/package.json +10 -5
package/README.md
CHANGED
|
@@ -10,75 +10,147 @@ pnpm add @no-witness-labs/midday-sdk
|
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
13
|
+
### Promise API (Non-Effect Users)
|
|
14
|
+
|
|
13
15
|
```typescript
|
|
14
16
|
import * as Midday from '@no-witness-labs/midday-sdk';
|
|
15
17
|
|
|
16
|
-
// Create client
|
|
17
|
-
const client = await Midday.Client.create(
|
|
18
|
+
// Create client
|
|
19
|
+
const client = await Midday.Client.create({
|
|
20
|
+
networkConfig: Midday.Config.NETWORKS.local,
|
|
21
|
+
zkConfigProvider: new Midday.HttpZkConfigProvider('http://localhost:3000/zk'),
|
|
22
|
+
privateStateProvider: Midday.inMemoryPrivateStateProvider(),
|
|
23
|
+
});
|
|
18
24
|
|
|
19
25
|
// Load and deploy a contract
|
|
20
|
-
const
|
|
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);
|
|
21
30
|
|
|
22
31
|
// Call contract actions
|
|
23
|
-
await
|
|
32
|
+
await Midday.Contract.call(contract, 'increment');
|
|
24
33
|
|
|
25
34
|
// Read state
|
|
26
|
-
const state = await
|
|
35
|
+
const state = await Midday.Contract.ledgerState(contract);
|
|
27
36
|
console.log(state.counter);
|
|
28
37
|
```
|
|
29
38
|
|
|
30
|
-
|
|
39
|
+
### Effect API (Pure Effect Users)
|
|
31
40
|
|
|
32
|
-
|
|
41
|
+
```typescript
|
|
42
|
+
import * as Midday from '@no-witness-labs/midday-sdk';
|
|
43
|
+
import { Effect } from 'effect';
|
|
44
|
+
|
|
45
|
+
const program = Effect.gen(function* () {
|
|
46
|
+
const client = yield* Midday.Client.effect.create({
|
|
47
|
+
networkConfig: Midday.Config.NETWORKS.local,
|
|
48
|
+
zkConfigProvider: new Midday.HttpZkConfigProvider('http://localhost:3000/zk'),
|
|
49
|
+
privateStateProvider: Midday.inMemoryPrivateStateProvider(),
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
const builder = yield* Midday.Client.effect.contractFrom(client, {
|
|
53
|
+
module: await import('./contracts/counter/index.js'),
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const contract = yield* Midday.ContractBuilder.effect.deploy(builder);
|
|
57
|
+
const result = yield* Midday.Contract.effect.call(contract, 'increment');
|
|
58
|
+
|
|
59
|
+
return result;
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
const result = await Midday.runEffectPromise(program);
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Effect DI (Dependency Injection)
|
|
33
66
|
|
|
34
67
|
```typescript
|
|
35
|
-
|
|
36
|
-
|
|
68
|
+
import * as Midday from '@no-witness-labs/midday-sdk';
|
|
69
|
+
import { Effect, Layer } from 'effect';
|
|
37
70
|
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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;
|
|
48
90
|
});
|
|
49
91
|
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
92
|
+
// Compose layers
|
|
93
|
+
const MainLive = Layer.mergeAll(
|
|
94
|
+
Midday.ClientLive,
|
|
95
|
+
Midday.ContractBuilderLive,
|
|
96
|
+
Midday.ContractLive,
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
const result = await Effect.runPromise(program.pipe(Effect.provide(MainLive)));
|
|
56
100
|
```
|
|
57
101
|
|
|
58
|
-
|
|
102
|
+
## Browser Usage (Lace Wallet)
|
|
59
103
|
|
|
60
104
|
```typescript
|
|
61
|
-
|
|
62
|
-
const client = await Midday.Client.create();
|
|
105
|
+
import * as Midday from '@no-witness-labs/midday-sdk';
|
|
63
106
|
|
|
64
|
-
//
|
|
65
|
-
const
|
|
66
|
-
|
|
107
|
+
// Connect to Lace wallet
|
|
108
|
+
const connection = await Midday.connectWallet('testnet');
|
|
109
|
+
|
|
110
|
+
// Create client from wallet connection
|
|
111
|
+
const client = await Midday.Client.fromWallet(connection, {
|
|
112
|
+
zkConfigProvider: new Midday.HttpZkConfigProvider('https://cdn.example.com/zk'),
|
|
113
|
+
privateStateProvider: Midday.indexedDBPrivateStateProvider({ privateStateStoreName: 'my-app' }),
|
|
67
114
|
});
|
|
115
|
+
|
|
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');
|
|
68
122
|
```
|
|
69
123
|
|
|
70
|
-
|
|
124
|
+
## Configuration
|
|
125
|
+
|
|
126
|
+
### Network Configuration
|
|
71
127
|
|
|
72
128
|
```typescript
|
|
129
|
+
// Local network
|
|
73
130
|
const client = await Midday.Client.create({
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
password: 'secure-password',
|
|
77
|
-
},
|
|
131
|
+
networkConfig: Midday.Config.NETWORKS.local,
|
|
132
|
+
// ...
|
|
78
133
|
});
|
|
79
134
|
|
|
80
|
-
//
|
|
81
|
-
|
|
135
|
+
// Testnet
|
|
136
|
+
const client = await Midday.Client.create({
|
|
137
|
+
networkConfig: Midday.Config.NETWORKS.testnet,
|
|
138
|
+
seed: 'your-64-char-hex-seed',
|
|
139
|
+
// ...
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Custom network
|
|
143
|
+
const client = await Midday.Client.create({
|
|
144
|
+
networkConfig: {
|
|
145
|
+
networkId: 'testnet',
|
|
146
|
+
indexer: 'https://indexer.testnet.midnight.network/graphql',
|
|
147
|
+
indexerWS: 'wss://indexer.testnet.midnight.network/graphql/ws',
|
|
148
|
+
node: 'wss://node.testnet.midnight.network',
|
|
149
|
+
proofServer: 'https://proof.testnet.midnight.network',
|
|
150
|
+
},
|
|
151
|
+
seed: 'your-64-char-hex-seed',
|
|
152
|
+
// ...
|
|
153
|
+
});
|
|
82
154
|
```
|
|
83
155
|
|
|
84
156
|
## Contract Operations
|
|
@@ -86,48 +158,38 @@ const client = await Midday.Client.create({
|
|
|
86
158
|
### Deploy a New Contract
|
|
87
159
|
|
|
88
160
|
```typescript
|
|
89
|
-
const
|
|
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);
|
|
90
165
|
console.log(`Deployed at: ${contract.address}`);
|
|
91
166
|
```
|
|
92
167
|
|
|
93
168
|
### Join an Existing Contract
|
|
94
169
|
|
|
95
170
|
```typescript
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
```typescript
|
|
102
|
-
// Relative to cwd (default)
|
|
103
|
-
await client.contractFrom('build/my-contract');
|
|
104
|
-
|
|
105
|
-
// Relative to project root (finds package.json)
|
|
106
|
-
await client.contractFrom('build/my-contract', { from: 'project' });
|
|
107
|
-
|
|
108
|
-
// Relative to current file
|
|
109
|
-
await client.contractFrom('../build/my-contract', { from: import.meta.url });
|
|
110
|
-
|
|
111
|
-
// Absolute path
|
|
112
|
-
await client.contractFrom('/absolute/path/to/build/my-contract');
|
|
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 });
|
|
113
175
|
```
|
|
114
176
|
|
|
115
177
|
### With Witnesses
|
|
116
178
|
|
|
117
179
|
```typescript
|
|
118
|
-
const
|
|
119
|
-
await
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
180
|
+
const builder = await Midday.Client.contractFrom(client, {
|
|
181
|
+
module: await import('./contracts/my-contract/index.js'),
|
|
182
|
+
witnesses: {
|
|
183
|
+
my_witness_function: myImplementation,
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
const contract = await Midday.ContractBuilder.deploy(builder);
|
|
125
187
|
```
|
|
126
188
|
|
|
127
189
|
### Call Actions
|
|
128
190
|
|
|
129
191
|
```typescript
|
|
130
|
-
const result = await
|
|
192
|
+
const result = await Midday.Contract.call(contract, 'increment');
|
|
131
193
|
console.log(`TX Hash: ${result.txHash}`);
|
|
132
194
|
console.log(`Block: ${result.blockHeight}`);
|
|
133
195
|
```
|
|
@@ -136,35 +198,40 @@ console.log(`Block: ${result.blockHeight}`);
|
|
|
136
198
|
|
|
137
199
|
```typescript
|
|
138
200
|
// Parsed state via ledger
|
|
139
|
-
const state = await
|
|
201
|
+
const state = await Midday.Contract.ledgerState(contract);
|
|
140
202
|
|
|
141
203
|
// Raw state
|
|
142
|
-
const rawState = await
|
|
204
|
+
const rawState = await Midday.Contract.state(contract);
|
|
143
205
|
|
|
144
206
|
// State at specific block
|
|
145
|
-
const historicalState = await
|
|
207
|
+
const historicalState = await Midday.Contract.ledgerStateAt(contract, blockHeight);
|
|
146
208
|
```
|
|
147
209
|
|
|
148
|
-
## Environment Variables
|
|
149
|
-
|
|
150
|
-
| Variable | Description |
|
|
151
|
-
|----------|-------------|
|
|
152
|
-
| `MIDNIGHT_INDEXER` | Indexer GraphQL HTTP endpoint |
|
|
153
|
-
| `MIDNIGHT_INDEXER_WS` | Indexer GraphQL WebSocket endpoint |
|
|
154
|
-
| `MIDNIGHT_NODE` | Node WebSocket endpoint |
|
|
155
|
-
| `MIDNIGHT_PROOF_SERVER` | Proof server HTTP endpoint |
|
|
156
|
-
| `MIDNIGHT_NETWORK_ID` | Network ID (e.g., 'undeployed', 'testnet') |
|
|
157
|
-
| `MIDNIGHT_STORAGE_PASSWORD` | Private state storage password |
|
|
158
|
-
|
|
159
210
|
## API Reference
|
|
160
211
|
|
|
161
212
|
### Modules
|
|
162
213
|
|
|
163
214
|
- `Midday.Client` - High-level client for contract interactions
|
|
215
|
+
- `Midday.ContractBuilder` - Contract deployment and joining
|
|
216
|
+
- `Midday.Contract` - Contract operations (call, state)
|
|
164
217
|
- `Midday.Config` - Network configuration utilities
|
|
165
218
|
- `Midday.Wallet` - Wallet initialization and management
|
|
166
219
|
- `Midday.Providers` - Low-level provider setup
|
|
167
220
|
|
|
221
|
+
### Services (Effect DI)
|
|
222
|
+
|
|
223
|
+
| Service | Layer | Description |
|
|
224
|
+
|---------|-------|-------------|
|
|
225
|
+
| `ClientService` | `ClientLive` | Client creation and contract loading |
|
|
226
|
+
| `ContractBuilderService` | `ContractBuilderLive` | Contract deployment and joining |
|
|
227
|
+
| `ContractService` | `ContractLive` | Contract operations |
|
|
228
|
+
| `WalletService` | `WalletLive` | Wallet initialization |
|
|
229
|
+
| `ProvidersService` | `ProvidersLive` | Provider setup |
|
|
230
|
+
| `ZkConfigService` | `ZkConfigLive` | ZK configuration loading |
|
|
231
|
+
| `PrivateStateService` | `PrivateStateLive` | Private state management |
|
|
232
|
+
| `WalletConnectorService` | `WalletConnectorLive` | Browser wallet connection |
|
|
233
|
+
| `WalletProviderService` | `WalletProviderLive` | Wallet provider operations |
|
|
234
|
+
|
|
168
235
|
### Types
|
|
169
236
|
|
|
170
237
|
```typescript
|