cantonjs 0.2.0 → 0.3.0

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 (117) hide show
  1. package/README.md +149 -59
  2. package/dist/cjs/auth/index.d.ts +2 -0
  3. package/dist/cjs/auth/index.d.ts.map +1 -0
  4. package/dist/cjs/auth/index.js +3 -0
  5. package/dist/cjs/auth/index.js.map +1 -0
  6. package/dist/cjs/auth/types.d.ts +27 -0
  7. package/dist/cjs/auth/types.d.ts.map +1 -0
  8. package/dist/cjs/auth/types.js +3 -0
  9. package/dist/cjs/auth/types.js.map +1 -0
  10. package/dist/cjs/chains/definitions.d.ts +5 -11
  11. package/dist/cjs/chains/definitions.d.ts.map +1 -1
  12. package/dist/cjs/chains/definitions.js +59 -13
  13. package/dist/cjs/chains/definitions.js.map +1 -1
  14. package/dist/cjs/chains/index.d.ts +2 -1
  15. package/dist/cjs/chains/index.d.ts.map +1 -1
  16. package/dist/cjs/chains/index.js +19 -6
  17. package/dist/cjs/chains/index.js.map +1 -1
  18. package/dist/cjs/chains/presets.d.ts +59 -0
  19. package/dist/cjs/chains/presets.d.ts.map +1 -0
  20. package/dist/cjs/chains/presets.js +55 -0
  21. package/dist/cjs/chains/presets.js.map +1 -0
  22. package/dist/cjs/errors/auth.d.ts +6 -0
  23. package/dist/cjs/errors/auth.d.ts.map +1 -1
  24. package/dist/cjs/errors/auth.js +17 -1
  25. package/dist/cjs/errors/auth.js.map +1 -1
  26. package/dist/cjs/errors/index.d.ts +1 -1
  27. package/dist/cjs/errors/index.d.ts.map +1 -1
  28. package/dist/cjs/errors/index.js +2 -1
  29. package/dist/cjs/errors/index.js.map +1 -1
  30. package/dist/cjs/index.d.ts +5 -4
  31. package/dist/cjs/index.d.ts.map +1 -1
  32. package/dist/cjs/index.js +9 -6
  33. package/dist/cjs/index.js.map +1 -1
  34. package/dist/cjs/testing/setupSandbox.d.ts +11 -1
  35. package/dist/cjs/testing/setupSandbox.d.ts.map +1 -1
  36. package/dist/cjs/testing/setupSandbox.js +25 -13
  37. package/dist/cjs/testing/setupSandbox.js.map +1 -1
  38. package/dist/cjs/transport/grpc.d.ts +2 -4
  39. package/dist/cjs/transport/grpc.d.ts.map +1 -1
  40. package/dist/cjs/transport/grpc.js +28 -16
  41. package/dist/cjs/transport/grpc.js.map +1 -1
  42. package/dist/cjs/transport/index.d.ts +1 -1
  43. package/dist/cjs/transport/index.d.ts.map +1 -1
  44. package/dist/cjs/transport/json-api.d.ts +1 -1
  45. package/dist/cjs/transport/json-api.d.ts.map +1 -1
  46. package/dist/cjs/transport/json-api.js +19 -5
  47. package/dist/cjs/transport/json-api.js.map +1 -1
  48. package/dist/cjs/transport/types.d.ts +13 -3
  49. package/dist/cjs/transport/types.d.ts.map +1 -1
  50. package/dist/cjs/transport/types.js +40 -0
  51. package/dist/cjs/transport/types.js.map +1 -1
  52. package/dist/esm/auth/index.d.ts +2 -0
  53. package/dist/esm/auth/index.d.ts.map +1 -0
  54. package/dist/esm/auth/index.js +2 -0
  55. package/dist/esm/auth/index.js.map +1 -0
  56. package/dist/esm/auth/types.d.ts +27 -0
  57. package/dist/esm/auth/types.d.ts.map +1 -0
  58. package/dist/esm/auth/types.js +2 -0
  59. package/dist/esm/auth/types.js.map +1 -0
  60. package/dist/esm/chains/definitions.d.ts +5 -11
  61. package/dist/esm/chains/definitions.d.ts.map +1 -1
  62. package/dist/esm/chains/definitions.js +59 -13
  63. package/dist/esm/chains/definitions.js.map +1 -1
  64. package/dist/esm/chains/index.d.ts +2 -1
  65. package/dist/esm/chains/index.d.ts.map +1 -1
  66. package/dist/esm/chains/index.js +2 -1
  67. package/dist/esm/chains/index.js.map +1 -1
  68. package/dist/esm/chains/presets.d.ts +59 -0
  69. package/dist/esm/chains/presets.d.ts.map +1 -0
  70. package/dist/esm/chains/presets.js +51 -0
  71. package/dist/esm/chains/presets.js.map +1 -0
  72. package/dist/esm/errors/auth.d.ts +6 -0
  73. package/dist/esm/errors/auth.d.ts.map +1 -1
  74. package/dist/esm/errors/auth.js +15 -0
  75. package/dist/esm/errors/auth.js.map +1 -1
  76. package/dist/esm/errors/index.d.ts +1 -1
  77. package/dist/esm/errors/index.d.ts.map +1 -1
  78. package/dist/esm/errors/index.js +1 -1
  79. package/dist/esm/errors/index.js.map +1 -1
  80. package/dist/esm/index.d.ts +5 -4
  81. package/dist/esm/index.d.ts.map +1 -1
  82. package/dist/esm/index.js +2 -2
  83. package/dist/esm/index.js.map +1 -1
  84. package/dist/esm/testing/setupSandbox.d.ts +11 -1
  85. package/dist/esm/testing/setupSandbox.d.ts.map +1 -1
  86. package/dist/esm/testing/setupSandbox.js +25 -14
  87. package/dist/esm/testing/setupSandbox.js.map +1 -1
  88. package/dist/esm/transport/grpc.d.ts +2 -4
  89. package/dist/esm/transport/grpc.d.ts.map +1 -1
  90. package/dist/esm/transport/grpc.js +28 -16
  91. package/dist/esm/transport/grpc.js.map +1 -1
  92. package/dist/esm/transport/index.d.ts +1 -1
  93. package/dist/esm/transport/index.d.ts.map +1 -1
  94. package/dist/esm/transport/json-api.d.ts +1 -1
  95. package/dist/esm/transport/json-api.d.ts.map +1 -1
  96. package/dist/esm/transport/json-api.js +19 -5
  97. package/dist/esm/transport/json-api.js.map +1 -1
  98. package/dist/esm/transport/types.d.ts +13 -3
  99. package/dist/esm/transport/types.d.ts.map +1 -1
  100. package/dist/esm/transport/types.js +38 -1
  101. package/dist/esm/transport/types.js.map +1 -1
  102. package/dist/tsconfig.build.tsbuildinfo +1 -1
  103. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  104. package/package.json +12 -2
  105. package/src/auth/index.ts +7 -0
  106. package/src/auth/types.ts +30 -0
  107. package/src/chains/definitions.ts +77 -22
  108. package/src/chains/index.ts +2 -1
  109. package/src/chains/presets.ts +121 -0
  110. package/src/errors/auth.ts +16 -0
  111. package/src/errors/index.ts +1 -1
  112. package/src/index.ts +34 -7
  113. package/src/testing/setupSandbox.ts +45 -17
  114. package/src/transport/grpc.ts +33 -19
  115. package/src/transport/index.ts +7 -1
  116. package/src/transport/json-api.ts +24 -7
  117. package/src/transport/types.ts +63 -3
package/README.md CHANGED
@@ -20,12 +20,15 @@ cantonjs is a modern, type-safe TypeScript library for the [Canton Network](http
20
20
 
21
21
  **Companion CLI:** [cantonctl](https://github.com/merged-one/cantonctl) ("Hardhat for Canton")
22
22
 
23
+ Development policy: the included runtime surface is gated at 100% statements, branches, functions, and lines, and every coverage exclusion or inline `v8 ignore` must be justified in [`EXCLUSIONS.md`](./EXCLUSIONS.md).
24
+
23
25
  ## Features
24
26
 
25
27
  - **Function exports, not classes** — tree-shakeable, ESM + CJS dual build
26
28
  - **Type-safe codegen** — generate TypeScript from Daml DAR files
27
29
  - **Real-time streaming** — AsyncIterator WebSocket streams with auto-reconnect
28
30
  - **React hooks** — TanStack Query-powered hooks via [cantonjs-react](#cantonjs-react)
31
+ - **Splice ecosystem packages** — public Scan, Validator ANS, Token Standard, and wallet-boundary integrations
29
32
  - **First-class testing** — mock transports, recording transports, Canton sandbox fixtures
30
33
  - **Structured errors** — error codes, recovery hints, traversable cause chains
31
34
  - **Zero runtime dependencies** — transports are injected, not bundled
@@ -36,6 +39,36 @@ cantonjs is a modern, type-safe TypeScript library for the [Canton Network](http
36
39
  npm install cantonjs
37
40
  ```
38
41
 
42
+ ## Package Map
43
+
44
+ The repo is now split into a stable Canton core plus focused Splice add-on packages.
45
+
46
+ | Package | Stability | Purpose |
47
+ | ------- | --------- | ------- |
48
+ | `cantonjs` | GA | Canton Ledger API V2 clients, transports, chains, streaming, errors, and codegen runtime types |
49
+ | `cantonjs-codegen` | GA | DAR-to-TypeScript code generation |
50
+ | `cantonjs-react` | GA | React hooks for participant-private ledger data |
51
+ | `cantonjs-splice-scan` | GA | Public Scan reads for DSO metadata, update history, and public ANS lookups |
52
+ | `cantonjs-splice-validator` | GA + legacy compatibility | Validator ANS, filtered GA Scan Proxy reads, and legacy wallet compatibility flows |
53
+ | `cantonjs-splice-interfaces` | GA | Stable Splice Daml interface descriptors and generated types |
54
+ | `cantonjs-splice-token-standard` | GA | Ledger-centric CIP-0056 helpers for new token transfer and allocation flows |
55
+ | `cantonjs-wallet-adapters` | Experimental | CIP-0103 wallet boundary adapters for browser and SDK interop |
56
+
57
+ ## Stability Tiers
58
+
59
+ - **GA**: Covered by the normal semver promise for the pinned release line.
60
+ - **Legacy compatibility**: Still supported for existing integrations, but not the recommended starting point for new work.
61
+ - **Experimental**: May break in minor releases while the upstream surface is still moving.
62
+
63
+ Current compatibility target:
64
+
65
+ - **Canton GA line:** `3.4.x`
66
+ - **Splice GA line:** `0.5.x`
67
+ - **Vendored Splice artifacts:** `0.5.17`
68
+ - **Legacy wallet note:** `createLegacyWalletClient()` exists for old `wallet-external` flows, but new transfer flows should use `cantonjs-splice-token-standard`.
69
+
70
+ See [compatibility policy](./docs/compatibility.md) and [migration notes](./docs/MIGRATING_TO_SPLICE_SUPPORT.md).
71
+
39
72
  ## Quick Start
40
73
 
41
74
  ```typescript
@@ -60,17 +93,35 @@ const created = await client.createContract('#my-pkg:Main:Asset', {
60
93
  })
61
94
 
62
95
  // 4. Exercise a choice
63
- const tx = await client.exerciseChoice(
64
- '#my-pkg:Main:Asset',
65
- created.contractId,
66
- 'Transfer',
67
- { newOwner: 'Bob' },
68
- )
96
+ const tx = await client.exerciseChoice('#my-pkg:Main:Asset', created.contractId, 'Transfer', {
97
+ newOwner: 'Bob',
98
+ })
69
99
 
70
100
  // 5. Query active contracts
71
101
  const contracts = await client.queryContracts('#my-pkg:Main:Asset')
72
102
  ```
73
103
 
104
+ Static bearer tokens remain supported. For request-scoped auth, provide an async token or session provider:
105
+
106
+ ```typescript
107
+ import { createLedgerClient, jsonApi, type AuthProvider } from 'cantonjs'
108
+
109
+ const auth: AuthProvider = async ({ request }) => {
110
+ if (request.path.startsWith('/v2/state/')) return undefined
111
+ return await getFreshJwtForAudience('participant')
112
+ }
113
+
114
+ const transport = jsonApi({
115
+ url: 'http://localhost:7575',
116
+ auth,
117
+ })
118
+
119
+ const client = createLedgerClient({
120
+ transport,
121
+ actAs: 'Alice::1234',
122
+ })
123
+ ```
124
+
74
125
  ## Streaming
75
126
 
76
127
  Subscribe to real-time updates with auto-reconnect and offset tracking:
@@ -96,25 +147,53 @@ Import only what you need for smaller bundles:
96
147
  import { createLedgerClient } from 'cantonjs/ledger'
97
148
  import { createAdminClient } from 'cantonjs/admin'
98
149
  import { createTestClient } from 'cantonjs/testing'
99
- import { localNet, devNet, testNet, mainNet } from 'cantonjs/chains'
150
+ import { localNet, devNet, testNet, mainNet, withChainOverrides } from 'cantonjs/chains'
100
151
  import type { TemplateDescriptor, InferPayload } from 'cantonjs/codegen'
101
152
  ```
102
153
 
154
+ ## Network Presets
155
+
156
+ Built-in public presets are discovery-first. They carry public Scan discovery metadata, auth audience hints, and the pinned Splice release line, but they do not commit operator-specific participant or validator URLs.
157
+
158
+ Layer concrete deployment settings on top:
159
+
160
+ ```typescript
161
+ import { devNet, withChainOverrides } from 'cantonjs/chains'
162
+
163
+ const chain = withChainOverrides(devNet, {
164
+ participant: {
165
+ jsonApiUrl: process.env.CANTON_JSON_API_URL,
166
+ },
167
+ scan: {
168
+ url: process.env.SPLICE_SCAN_URL,
169
+ },
170
+ validator: {
171
+ apiBaseUrl: process.env.SPLICE_VALIDATOR_URL,
172
+ },
173
+ })
174
+ ```
175
+
176
+ `chain.scan.discoveryRoot` remains available when you need to resolve a live public Scan deployment from operator documentation first.
177
+
103
178
  ## Clients
104
179
 
105
- | Client | Purpose |
106
- |--------|---------|
107
- | `createLedgerClient()` | Party-scoped contract operations (create, exercise, query, stream) |
108
- | `createAdminClient()` | Node administration (parties, users, packages, IDP) |
109
- | `createTestClient()` | Sandbox testing (time control, party allocation, sandbox lifecycle) |
180
+ | Client | Purpose |
181
+ | ---------------------- | ------------------------------------------------------------------- |
182
+ | `createLedgerClient()` | Party-scoped contract operations (create, exercise, query, stream) |
183
+ | `createAdminClient()` | Node administration (parties, users, packages, IDP) |
184
+ | `createTestClient()` | Sandbox testing (time control, party allocation, sandbox lifecycle) |
110
185
 
111
186
  ## Transports
112
187
 
113
- | Transport | Description |
114
- |-----------|-------------|
115
- | `jsonApi({ url, token })` | HTTP transport for Canton JSON API V2 |
116
- | `grpc({ grpcTransport, token })` | gRPC via injected ConnectRPC client |
117
- | `fallback({ transports })` | Failover across multiple transports |
188
+ | Transport | Description |
189
+ | ---------------------------------- | ------------------------------------------------------------------------------------- |
190
+ | `jsonApi({ url, token })` | HTTP transport for Canton JSON API V2 with static bearer auth |
191
+ | `jsonApi({ url, auth })` | HTTP transport with async per-request token lookup |
192
+ | `jsonApi({ url, session })` | HTTP transport with async per-request token and header injection |
193
+ | `grpc({ grpcTransport, token })` | gRPC via injected ConnectRPC client with static bearer auth |
194
+ | `grpc({ grpcTransport, auth })` | gRPC via injected ConnectRPC client with async per-request token lookup |
195
+ | `grpc({ grpcTransport, session })` | gRPC via injected ConnectRPC client with async per-request token and header injection |
196
+ | `fallback({ transports })` | Failover across multiple transports |
118
197
 
119
198
  ## Error Handling
120
199
 
@@ -133,14 +212,14 @@ try {
133
212
  }
134
213
  ```
135
214
 
136
- | Range | Domain |
137
- |-------|--------|
215
+ | Range | Domain |
216
+ | ------ | ------------------------------------------- |
138
217
  | CJ1xxx | Transport (connection, HTTP, gRPC, timeout) |
139
- | CJ2xxx | Authentication (JWT, token lifecycle) |
140
- | CJ3xxx | Ledger (command rejection, authorization) |
141
- | CJ4xxx | Admin (party, user, package management) |
142
- | CJ5xxx | Streaming (WebSocket, reconnection) |
143
- | CJ6xxx | Codegen (type mismatch, generation) |
218
+ | CJ2xxx | Authentication (JWT, token lifecycle) |
219
+ | CJ3xxx | Ledger (command rejection, authorization) |
220
+ | CJ4xxx | Admin (party, user, package management) |
221
+ | CJ5xxx | Streaming (WebSocket, reconnection) |
222
+ | CJ6xxx | Codegen (type mismatch, generation) |
144
223
 
145
224
  ## Packages
146
225
 
@@ -151,7 +230,7 @@ Generate TypeScript types from Daml DAR files:
151
230
  ```bash
152
231
  npm install --save-dev cantonjs-codegen
153
232
 
154
- cantonjs-codegen --dar ./model.dar --output ./src/generated
233
+ npx cantonjs-codegen --dar ./model.dar --output ./src/generated
155
234
  ```
156
235
 
157
236
  Records become type aliases, variants become discriminated unions, templates become companion const objects with `templateId` and choices. See [packages/cantonjs-codegen](./packages/cantonjs-codegen/).
@@ -165,8 +244,14 @@ npm install cantonjs-react @tanstack/react-query
165
244
  ```
166
245
 
167
246
  ```tsx
247
+ import { createLedgerClient, jsonApi } from 'cantonjs'
168
248
  import { CantonProvider, useContracts, useCreateContract } from 'cantonjs-react'
169
249
 
250
+ const client = createLedgerClient({
251
+ transport: jsonApi({ url: 'http://localhost:7575', token: 'your-jwt-token' }),
252
+ actAs: 'Alice::1234',
253
+ })
254
+
170
255
  function App() {
171
256
  return (
172
257
  <CantonProvider client={client}>
@@ -188,14 +273,12 @@ function AssetList() {
188
273
 
189
274
  return (
190
275
  <div>
191
- <button onClick={() => create({ createArguments: { owner: 'Alice', value: 100 } })}>
276
+ <button onClick={() => create({ createArguments: { owner: 'Alice', value: '100' } })}>
192
277
  Create
193
278
  </button>
194
279
  <ul>
195
- {assets?.map(c => (
196
- <li key={c.createdEvent.contractId}>
197
- {JSON.stringify(c.createdEvent.createArgument)}
198
- </li>
280
+ {assets?.map((c) => (
281
+ <li key={c.createdEvent.contractId}>{JSON.stringify(c.createdEvent.createArgument)}</li>
199
282
  ))}
200
283
  </ul>
201
284
  </div>
@@ -205,11 +288,21 @@ function AssetList() {
205
288
 
206
289
  See [packages/cantonjs-react](./packages/cantonjs-react/).
207
290
 
291
+ `cantonjs-react` stays focused on participant-private ledger state. For public Splice data, use TanStack Query directly with `cantonjs-splice-scan`; see [docs/examples/react.md](./docs/examples/react.md).
292
+
293
+ ### Splice Packages
294
+
295
+ - `cantonjs-splice-scan` &mdash; GA public Scan reads for DSO metadata, updates, and public ANS lookups. Experimental Scan routes stay behind `cantonjs-splice-scan/experimental`. See [docs/guide/scan.md](./docs/guide/scan.md).
296
+ - `cantonjs-splice-validator` &mdash; GA validator ANS plus the filtered GA Scan Proxy subset. `createLegacyWalletClient()` is legacy compatibility only and is not recommended for new transfer flows. See [docs/guide/validator-ans.md](./docs/guide/validator-ans.md).
297
+ - `cantonjs-splice-token-standard` and `cantonjs-splice-interfaces` &mdash; GA stable CIP-0056 descriptors and ledger-centric helpers for new transfer and allocation flows. See [docs/guide/token-standard.md](./docs/guide/token-standard.md).
298
+ - `cantonjs-wallet-adapters` &mdash; experimental CIP-0103 wallet boundary adapters for browser and SDK interop. See [docs/guide/wallet-adapters.md](./docs/guide/wallet-adapters.md).
299
+
208
300
  ## Testing
209
301
 
210
302
  cantonjs provides first-class testing utilities. No `vi.mock()` needed &mdash; all dependencies are injected:
211
303
 
212
304
  ```typescript
305
+ import { createLedgerClient } from 'cantonjs'
213
306
  import { createMockTransport } from 'cantonjs/testing'
214
307
 
215
308
  const transport = createMockTransport({
@@ -225,31 +318,29 @@ Integration testing with a real Canton sandbox:
225
318
  ```typescript
226
319
  import { setupCantonSandbox } from 'cantonjs/testing'
227
320
 
228
- const sandbox = setupCantonSandbox({
229
- cantonctlPath: 'cantonctl',
230
- })
321
+ const sandbox = await setupCantonSandbox()
231
322
  // sandbox.client is a fully configured TestClient
232
323
  ```
233
324
 
234
325
  ## Canton Concepts
235
326
 
236
- | Concept | Description |
237
- |---------|-------------|
238
- | **Party** | Identity unit (not an address), permissions via JWT |
239
- | **Template** | Daml contract definition (`packageId:moduleName:entityName`) |
240
- | **Choice** | Operation on a contract (like a function call) |
241
- | **ContractId** | Unique UTXO-style identifier for a contract instance |
242
- | **DAR** | Daml Archive &mdash; the deployment artifact |
243
- | **Synchronizer** | Consensus domain for transaction ordering |
327
+ | Concept | Description |
328
+ | ---------------- | ------------------------------------------------------------ |
329
+ | **Party** | Identity unit (not an address), permissions via JWT |
330
+ | **Template** | Daml contract definition (`packageId:moduleName:entityName`) |
331
+ | **Choice** | Operation on a contract (like a function call) |
332
+ | **ContractId** | Unique UTXO-style identifier for a contract instance |
333
+ | **DAR** | Daml Archive &mdash; the deployment artifact |
334
+ | **Synchronizer** | Consensus domain for transaction ordering |
244
335
 
245
336
  ## Bundle Size
246
337
 
247
338
  cantonjs is designed for minimal footprint:
248
339
 
249
- | Entry Point | Size (minified + brotli) |
250
- |-------------|--------------------------|
251
- | `cantonjs` | 5.08 KB |
252
- | `cantonjs/ledger` | 1.1 KB |
340
+ | Entry Point | Size (minified + brotli) |
341
+ | ----------------- | ------------------------ |
342
+ | `cantonjs` | 5.78 kB |
343
+ | `cantonjs/ledger` | 1.1 KB |
253
344
 
254
345
  ## Requirements
255
346
 
@@ -263,16 +354,15 @@ git clone https://github.com/merged-one/cantonjs.git
263
354
  cd cantonjs
264
355
  npm install
265
356
 
266
- npm test # Run tests (192 core tests)
357
+ npm test # Run root tests
358
+ npm run test:coverage # Enforced root coverage gate
359
+ npm run test:coverage:all # Root + package coverage gates
360
+ npm run verify:ci:pr # Full PR validation suite
267
361
  npm run typecheck # Type-check
268
362
  npm run lint # Lint
269
363
  npm run build # Build ESM + CJS + types
270
364
  npm run size # Bundle size audit
271
365
  npm run docs:dev # Start docs dev server
272
-
273
- # Packages
274
- cd packages/cantonjs-codegen && npm test # 29 codegen tests
275
- cd packages/cantonjs-react && npm test # 16 React tests
276
366
  ```
277
367
 
278
368
  ## Contributing
@@ -283,16 +373,16 @@ See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup, coding conventio
283
373
 
284
374
  Design decisions are documented as Architecture Decision Records (ADRs):
285
375
 
286
- | ADR | Topic |
287
- |-----|-------|
376
+ | ADR | Topic |
377
+ | ------------------------------------------------------ | -------------------------------- |
288
378
  | [0001](./docs/adr/0001-typescript-function-exports.md) | TypeScript with function exports |
289
- | [0002](./docs/adr/0002-transport-abstraction.md) | Transport abstraction |
290
- | [0003](./docs/adr/0003-party-scoped-clients.md) | Party-scoped client architecture |
291
- | [0004](./docs/adr/0004-structured-error-model.md) | Structured error model |
292
- | [0005](./docs/adr/0005-streaming-architecture.md) | Streaming architecture |
293
- | [0006](./docs/adr/0006-testing-strategy.md) | Testing strategy |
294
- | [0007](./docs/adr/0007-codegen-architecture.md) | Codegen architecture |
295
- | [0008](./docs/adr/0008-react-integration.md) | React integration |
379
+ | [0002](./docs/adr/0002-transport-abstraction.md) | Transport abstraction |
380
+ | [0003](./docs/adr/0003-party-scoped-clients.md) | Party-scoped client architecture |
381
+ | [0004](./docs/adr/0004-structured-error-model.md) | Structured error model |
382
+ | [0005](./docs/adr/0005-streaming-architecture.md) | Streaming architecture |
383
+ | [0006](./docs/adr/0006-testing-strategy.md) | Testing strategy |
384
+ | [0007](./docs/adr/0007-codegen-architecture.md) | Codegen architecture |
385
+ | [0008](./docs/adr/0008-react-integration.md) | React integration |
296
386
 
297
387
  ## Related
298
388
 
@@ -0,0 +1,2 @@
1
+ export type { MaybePromise, AuthContext, AuthSession, AuthProvider, SessionProvider, } from './types.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ export type MaybePromise<T> = T | Promise<T>;
2
+ /** Request metadata exposed to auth/session providers. */
3
+ export type AuthContext = {
4
+ /** Transport type making the request, e.g. json-api or grpc. */
5
+ readonly transport: string;
6
+ /** Base URL for the target Canton endpoint. */
7
+ readonly url: string;
8
+ /** HTTP-style request metadata for the current transport call. */
9
+ readonly request: {
10
+ readonly method: 'GET' | 'POST' | 'PATCH' | 'DELETE';
11
+ readonly path: string;
12
+ readonly headers?: Readonly<Record<string, string>>;
13
+ readonly signal?: AbortSignal;
14
+ };
15
+ };
16
+ /** A resolved auth session for a single request. */
17
+ export type AuthSession = {
18
+ /** Bearer token to attach as Authorization header. */
19
+ readonly token?: string;
20
+ /** Additional headers to attach for the current request. */
21
+ readonly headers?: Readonly<Record<string, string>>;
22
+ };
23
+ /** Per-request bearer token provider. */
24
+ export type AuthProvider = (context: AuthContext) => MaybePromise<string | undefined>;
25
+ /** Per-request session provider for auth headers and bearer tokens. */
26
+ export type SessionProvider = (context: AuthContext) => MaybePromise<AuthSession | undefined>;
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/auth/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAE5C,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG;IACxB,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;QACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAC9B,CAAA;CACF,CAAA;AAED,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG;IACxB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACpD,CAAA;AAED,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AAErF,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,YAAY,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/auth/types.ts"],"names":[],"mappings":""}
@@ -1,18 +1,12 @@
1
1
  /**
2
2
  * Canton network chain definitions.
3
3
  *
4
- * Pre-configured connection details for Canton network environments.
5
- * Similar to viem's chain definitions (mainnet, sepolia, etc.).
4
+ * Public environments default to discovery-first metadata. Consumers can
5
+ * layer in deployment-specific participant, Scan, or validator URLs with
6
+ * `withChainOverrides()` without committing operator-specific endpoints.
6
7
  */
7
- export type CantonChain = {
8
- readonly id: string;
9
- readonly name: string;
10
- readonly network: 'localnet' | 'devnet' | 'testnet' | 'mainnet';
11
- readonly jsonApiUrl?: string;
12
- readonly grpcUrl?: string;
13
- readonly scanUrl?: string;
14
- readonly resetCycle?: string;
15
- };
8
+ import { type CantonChain } from './presets.js';
9
+ export type { CantonAuthAudienceHints, CantonChain, CantonChainOverrides, CantonChainPresetInput, CantonNetwork, CantonParticipantEndpoints, CantonScanEndpoints, CantonSpliceMetadata, CantonValidatorEndpoints, } from './presets.js';
16
10
  export declare const localNet: CantonChain;
17
11
  export declare const devNet: CantonChain;
18
12
  export declare const testNet: CantonChain;
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/chains/definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,WAMtB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,WAKpB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,WAIrB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,WAIrB,CAAA"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/chains/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAElE,YAAY,EACV,uBAAuB,EACvB,WAAW,EACX,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,cAAc,CAAA;AAWrB,eAAO,MAAM,QAAQ,EAAE,WAWrB,CAAA;AAEF,eAAO,MAAM,MAAM,EAAE,WAiBnB,CAAA;AAEF,eAAO,MAAM,OAAO,EAAE,WAiBpB,CAAA;AAEF,eAAO,MAAM,OAAO,EAAE,WAepB,CAAA"}
@@ -2,32 +2,78 @@
2
2
  /**
3
3
  * Canton network chain definitions.
4
4
  *
5
- * Pre-configured connection details for Canton network environments.
6
- * Similar to viem's chain definitions (mainnet, sepolia, etc.).
5
+ * Public environments default to discovery-first metadata. Consumers can
6
+ * layer in deployment-specific participant, Scan, or validator URLs with
7
+ * `withChainOverrides()` without committing operator-specific endpoints.
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
10
  exports.mainNet = exports.testNet = exports.devNet = exports.localNet = void 0;
10
- exports.localNet = {
11
+ const presets_js_1 = require("./presets.js");
12
+ const SPLICE_DISCOVERY_ROOT = 'https://docs.global.canton.network.sync.global';
13
+ const SPLICE_RELEASE_LINE = '0.5';
14
+ const PARTICIPANT_AUDIENCE_HINT = 'https://daml.com/participant/jwt/aud/participant/<participant-id>';
15
+ const PUBLIC_SCAN_AUDIENCE_HINT = 'Public Scan is often anonymous; if a token is required, use the operator-published audience.';
16
+ const VALIDATOR_AUDIENCE_HINT = 'Validator API audiences are operator-specific and should come from your validator or wallet provider.';
17
+ exports.localNet = (0, presets_js_1.defineChainPreset)({
11
18
  id: 'canton-localnet',
12
19
  name: 'Canton LocalNet',
13
20
  network: 'localnet',
14
- jsonApiUrl: 'http://localhost:7575',
15
- grpcUrl: 'http://localhost:6865',
16
- };
17
- exports.devNet = {
21
+ participant: {
22
+ jsonApiUrl: 'http://localhost:7575',
23
+ grpcUrl: 'http://localhost:6865',
24
+ },
25
+ authAudiences: {
26
+ participant: PARTICIPANT_AUDIENCE_HINT,
27
+ },
28
+ });
29
+ exports.devNet = (0, presets_js_1.defineChainPreset)({
18
30
  id: 'canton-devnet',
19
31
  name: 'Canton DevNet',
20
32
  network: 'devnet',
21
- resetCycle: 'Every 3 months',
22
- };
23
- exports.testNet = {
33
+ scan: {
34
+ discoveryRoot: SPLICE_DISCOVERY_ROOT,
35
+ },
36
+ authAudiences: {
37
+ participant: PARTICIPANT_AUDIENCE_HINT,
38
+ scan: PUBLIC_SCAN_AUDIENCE_HINT,
39
+ validator: VALIDATOR_AUDIENCE_HINT,
40
+ },
41
+ splice: {
42
+ releaseLine: SPLICE_RELEASE_LINE,
43
+ resetCycleNote: 'Public dev deployments may reset during release-line rollovers or operator maintenance.',
44
+ },
45
+ });
46
+ exports.testNet = (0, presets_js_1.defineChainPreset)({
24
47
  id: 'canton-testnet',
25
48
  name: 'Canton TestNet',
26
49
  network: 'testnet',
27
- };
28
- exports.mainNet = {
50
+ scan: {
51
+ discoveryRoot: SPLICE_DISCOVERY_ROOT,
52
+ },
53
+ authAudiences: {
54
+ participant: PARTICIPANT_AUDIENCE_HINT,
55
+ scan: PUBLIC_SCAN_AUDIENCE_HINT,
56
+ validator: VALIDATOR_AUDIENCE_HINT,
57
+ },
58
+ splice: {
59
+ releaseLine: SPLICE_RELEASE_LINE,
60
+ resetCycleNote: 'Treat public test environments as resettable and resolve live endpoints from operator docs.',
61
+ },
62
+ });
63
+ exports.mainNet = (0, presets_js_1.defineChainPreset)({
29
64
  id: 'canton-mainnet',
30
65
  name: 'Canton MainNet',
31
66
  network: 'mainnet',
32
- };
67
+ scan: {
68
+ discoveryRoot: SPLICE_DISCOVERY_ROOT,
69
+ },
70
+ authAudiences: {
71
+ participant: PARTICIPANT_AUDIENCE_HINT,
72
+ scan: PUBLIC_SCAN_AUDIENCE_HINT,
73
+ validator: VALIDATOR_AUDIENCE_HINT,
74
+ },
75
+ splice: {
76
+ releaseLine: SPLICE_RELEASE_LINE,
77
+ },
78
+ });
33
79
  //# sourceMappingURL=definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/chains/definitions.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAYU,QAAA,QAAQ,GAAgB;IACnC,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,uBAAuB;IACnC,OAAO,EAAE,uBAAuB;CACjC,CAAA;AAEY,QAAA,MAAM,GAAgB;IACjC,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,gBAAgB;CAC7B,CAAA;AAEY,QAAA,OAAO,GAAgB;IAClC,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,SAAS;CACnB,CAAA;AAEY,QAAA,OAAO,GAAgB;IAClC,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,SAAS;CACnB,CAAA"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/chains/definitions.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,6CAAkE;AAclE,MAAM,qBAAqB,GAAG,gDAAgD,CAAA;AAC9E,MAAM,mBAAmB,GAAG,KAAK,CAAA;AACjC,MAAM,yBAAyB,GAC7B,mEAAmE,CAAA;AACrE,MAAM,yBAAyB,GAC7B,8FAA8F,CAAA;AAChG,MAAM,uBAAuB,GAC3B,uGAAuG,CAAA;AAE5F,QAAA,QAAQ,GAAgB,IAAA,8BAAiB,EAAC;IACrD,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,UAAU;IACnB,WAAW,EAAE;QACX,UAAU,EAAE,uBAAuB;QACnC,OAAO,EAAE,uBAAuB;KACjC;IACD,aAAa,EAAE;QACb,WAAW,EAAE,yBAAyB;KACvC;CACF,CAAC,CAAA;AAEW,QAAA,MAAM,GAAgB,IAAA,8BAAiB,EAAC;IACnD,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE;QACJ,aAAa,EAAE,qBAAqB;KACrC;IACD,aAAa,EAAE;QACb,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,yBAAyB;QAC/B,SAAS,EAAE,uBAAuB;KACnC;IACD,MAAM,EAAE;QACN,WAAW,EAAE,mBAAmB;QAChC,cAAc,EACZ,yFAAyF;KAC5F;CACF,CAAC,CAAA;AAEW,QAAA,OAAO,GAAgB,IAAA,8BAAiB,EAAC;IACpD,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE;QACJ,aAAa,EAAE,qBAAqB;KACrC;IACD,aAAa,EAAE;QACb,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,yBAAyB;QAC/B,SAAS,EAAE,uBAAuB;KACnC;IACD,MAAM,EAAE;QACN,WAAW,EAAE,mBAAmB;QAChC,cAAc,EACZ,6FAA6F;KAChG;CACF,CAAC,CAAA;AAEW,QAAA,OAAO,GAAgB,IAAA,8BAAiB,EAAC;IACpD,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE;QACJ,aAAa,EAAE,qBAAqB;KACrC;IACD,aAAa,EAAE;QACb,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,yBAAyB;QAC/B,SAAS,EAAE,uBAAuB;KACnC;IACD,MAAM,EAAE;QACN,WAAW,EAAE,mBAAmB;KACjC;CACF,CAAC,CAAA"}
@@ -1,2 +1,3 @@
1
- export { localNet, devNet, testNet, mainNet, type CantonChain } from './definitions.js';
1
+ export * from './definitions.js';
2
+ export { defineChainPreset, withChainOverrides } from './presets.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chains/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chains/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA"}
@@ -1,9 +1,22 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mainNet = exports.testNet = exports.devNet = exports.localNet = void 0;
4
- var definitions_js_1 = require("./definitions.js");
5
- Object.defineProperty(exports, "localNet", { enumerable: true, get: function () { return definitions_js_1.localNet; } });
6
- Object.defineProperty(exports, "devNet", { enumerable: true, get: function () { return definitions_js_1.devNet; } });
7
- Object.defineProperty(exports, "testNet", { enumerable: true, get: function () { return definitions_js_1.testNet; } });
8
- Object.defineProperty(exports, "mainNet", { enumerable: true, get: function () { return definitions_js_1.mainNet; } });
17
+ exports.withChainOverrides = exports.defineChainPreset = void 0;
18
+ __exportStar(require("./definitions.js"), exports);
19
+ var presets_js_1 = require("./presets.js");
20
+ Object.defineProperty(exports, "defineChainPreset", { enumerable: true, get: function () { return presets_js_1.defineChainPreset; } });
21
+ Object.defineProperty(exports, "withChainOverrides", { enumerable: true, get: function () { return presets_js_1.withChainOverrides; } });
9
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chains/index.ts"],"names":[],"mappings":";;;AAAA,mDAAuF;AAA9E,0GAAA,QAAQ,OAAA;AAAE,wGAAA,MAAM,OAAA;AAAE,yGAAA,OAAO,OAAA;AAAE,yGAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chains/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,2CAAoE;AAA3D,+GAAA,iBAAiB,OAAA;AAAE,gHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,59 @@
1
+ export type CantonNetwork = 'localnet' | 'devnet' | 'testnet' | 'mainnet';
2
+ export type CantonParticipantEndpoints = {
3
+ readonly jsonApiUrl?: string;
4
+ readonly grpcUrl?: string;
5
+ };
6
+ export type CantonScanEndpoints = {
7
+ readonly url?: string;
8
+ readonly discoveryRoot?: string;
9
+ };
10
+ export type CantonValidatorEndpoints = {
11
+ readonly apiBaseUrl?: string;
12
+ readonly scanProxyBaseUrl?: string;
13
+ };
14
+ export type CantonAuthAudienceHints = {
15
+ readonly participant?: string;
16
+ readonly scan?: string;
17
+ readonly validator?: string;
18
+ };
19
+ export type CantonSpliceMetadata = {
20
+ readonly releaseLine?: string;
21
+ readonly resetCycleNote?: string;
22
+ };
23
+ export type CantonChain = {
24
+ readonly id: string;
25
+ readonly name: string;
26
+ readonly network: CantonNetwork;
27
+ readonly participant: CantonParticipantEndpoints;
28
+ readonly scan: CantonScanEndpoints;
29
+ readonly validator: CantonValidatorEndpoints;
30
+ readonly authAudiences: CantonAuthAudienceHints;
31
+ readonly splice: CantonSpliceMetadata;
32
+ readonly jsonApiUrl?: string;
33
+ readonly grpcUrl?: string;
34
+ readonly scanUrl?: string;
35
+ readonly validatorApiUrl?: string;
36
+ readonly scanProxyUrl?: string;
37
+ readonly resetCycle?: string;
38
+ };
39
+ export type CantonChainPresetInput = {
40
+ readonly id: string;
41
+ readonly name: string;
42
+ readonly network: CantonNetwork;
43
+ readonly participant?: CantonParticipantEndpoints;
44
+ readonly scan?: CantonScanEndpoints;
45
+ readonly validator?: CantonValidatorEndpoints;
46
+ readonly authAudiences?: CantonAuthAudienceHints;
47
+ readonly splice?: CantonSpliceMetadata;
48
+ };
49
+ export type CantonChainOverrides = {
50
+ readonly name?: string;
51
+ readonly participant?: Partial<CantonParticipantEndpoints>;
52
+ readonly scan?: Partial<CantonScanEndpoints>;
53
+ readonly validator?: Partial<CantonValidatorEndpoints>;
54
+ readonly authAudiences?: Partial<CantonAuthAudienceHints>;
55
+ readonly splice?: Partial<CantonSpliceMetadata>;
56
+ };
57
+ export declare function defineChainPreset(input: CantonChainPresetInput): CantonChain;
58
+ export declare function withChainOverrides(chain: CantonChain, overrides?: CantonChainOverrides): CantonChain;
59
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/chains/presets.ts"],"names":[],"mappings":"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"}