@tinycloud/node-sdk 2.11.0-beta.0 → 2.11.0-beta.10

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.
@@ -1,4 +1,4 @@
1
- import { ISessionStorage, PersistedSessionData, AutoSignStrategy, AutoRejectStrategy, CallbackStrategy, IUserAuthorization, ISigner, ISpaceCreationHandler, LocalNodeIdentityStore, IWasmBindings, ISessionManager, SiweConfig, Manifest, ComposedManifestRequest, ClientSession, TinyCloudSession, Extension, SignRequest, SignInOptions, Delegation, DelegatedResource, PermissionEntry, TelemetryConfig, IKVService, ISQLService, IDuckDbService, IHooksService, INotificationHandler, IENSResolver, AccountService, RegisterOwnerSharePolicyParams, OwnerSharePolicyRegistrationReceipt, ShareDeliveryAuthorizationReceipt, IDataVaultService, IEncryptionService, NetworkDescriptor, ISecretsService, ICapabilityKeyRegistry, DelegationManager, ISpaceService, ISpace, ISharingService, CreateDelegationParams, DelegationResult, DelegationRevocationReceipt, DelegationStatus, ResolvedDelegate, KeyProvider, JWK } from '@tinycloud/sdk-core';
1
+ import { ISessionStorage, PersistedSessionData, AutoSignStrategy, AutoRejectStrategy, CallbackStrategy, IUserAuthorization, ISigner, ISpaceCreationHandler, LocalNodeIdentityStore, IWasmBindings, ISessionManager, SiweConfig, Manifest, ComposedManifestRequest, ClientSession, TinyCloudSession, Extension, SignRequest, SignInOptions, CapabilityPresentationEnvelopeV1, Delegation, DelegatedResource, PermissionEntry, TelemetryConfig, IKVService, ISQLService, IDuckDbService, IHooksService, CreateOwnerDelegationParams as CreateOwnerDelegationParams$1, OwnerDelegationReceipt as OwnerDelegationReceipt$1, INotificationHandler, IENSResolver, AccountService, InvokeAnyFunction as InvokeAnyFunction$1, RegisterOwnerSharePolicyParams, OwnerSharePolicyRegistrationReceipt, ShareDeliveryAuthorizationReceipt, IDataVaultService, IEncryptionService, NetworkDescriptor, ISecretsService, ICapabilityKeyRegistry, DelegationManager, ISpaceService, ISpace, ISharingService, CreateDelegationParams, DelegationResult, DelegationRevocationReceipt, DelegationStatus, ResolvedDelegate, KeyProvider, JWK } from '@tinycloud/sdk-core';
2
2
  import { EventEmitter } from 'events';
3
3
  import { InvokeFunction, InvokeAnyFunction } from '@tinycloud/sdk-services';
4
4
 
@@ -195,9 +195,9 @@ interface NodeUserAuthorizationConfig {
195
195
  tinycloudRegistryUrl?: string | null;
196
196
  /** Fallback TinyCloud hosts. Default: hosted TinyCloud node. */
197
197
  tinycloudFallbackHosts?: string[] | null;
198
- /** Probe for a locally-running TinyCloud node before registry/fallback resolution. Default: true. */
198
+ /** Probe configured/registered local nodes before registry/fallback resolution. Default: true. */
199
199
  autoDiscoverLocalNode?: boolean;
200
- /** Local loopback node URL to probe. Default: http://127.0.0.1:8000. */
200
+ /** Local loopback node URL to probe. Omit to avoid probing loopback. */
201
201
  localNodeUrl?: string;
202
202
  /** Known `*.local.tinycloud.link` subdomain name, probed directly. */
203
203
  localLinkName?: string;
@@ -319,6 +319,12 @@ declare class NodeUserAuthorization implements IUserAuthorization {
319
319
  private _address?;
320
320
  private _chainId?;
321
321
  private _nodeFeatures;
322
+ /**
323
+ * `nodeId` from the `GET /info` performed during sign-in/restore, tagged with
324
+ * the host it came from. Callers that need the node DID (encryption-network
325
+ * admin invocations) reuse this instead of re-fetching `/info`.
326
+ */
327
+ private _nodeInfoIdentity?;
322
328
  private _lastActivationSkippedSpaceIds;
323
329
  constructor(config: NodeUserAuthorizationConfig);
324
330
  /**
@@ -387,6 +393,13 @@ declare class NodeUserAuthorization implements IUserAuthorization {
387
393
  private requireTinyCloudHosts;
388
394
  private get primaryTinyCloudHost();
389
395
  get nodeFeatures(): string[];
396
+ /**
397
+ * The node DID reported by `GET /info` for `host`, if the sign-in (or
398
+ * restore) that populated it targeted that same host. Returns `undefined`
399
+ * for any other host, and for nodes whose `/info` omits `nodeId`, so callers
400
+ * fall back to fetching it themselves rather than using a foreign node's DID.
401
+ */
402
+ nodeIdForHost(host: string): string | undefined;
390
403
  get lastActivationSkippedSpaceIds(): string[];
391
404
  /**
392
405
  * Compute the `abilities` map the WASM `prepareSession` call should
@@ -533,6 +546,153 @@ declare class NodeUserAuthorization implements IUserAuthorization {
533
546
  spaceId: string;
534
547
  verificationMethod: string;
535
548
  }, signature: string, keyId: string, jwk: Record<string, unknown>): Promise<ClientSession>;
549
+ /**
550
+ * End-to-end sign-in via OpenKey `authorizeTinyCloud()` (Sol CRITICAL-4).
551
+ *
552
+ * This is the production entry point that wires
553
+ * {@link prepareSessionForSigning} → OpenKey `authorizeTinyCloud()` →
554
+ * {@link signInWithOpenKeyResult} into one call. Consumers pass in a
555
+ * caller-provided `authorizeFn` (typically a thin wrapper around
556
+ * `openkey.authorizeTinyCloud()`) so this method has no direct
557
+ * dependency on the OpenKey SDK — it works with any transport that
558
+ * conforms to the versioned protocol.
559
+ *
560
+ * The `authorizeFn` MUST:
561
+ * 1. Send the prepared SIWE bytes to OpenKey.
562
+ * 2. Return the exact `TinyCloudAuthorizationResultV1` shape (with
563
+ * `signedMessage` — the bytes the signature actually verifies
564
+ * against — plus `selectedActionKeys` and `permissions`).
565
+ *
566
+ * NodeUserAuthorization then completes the session with `signedMessage`
567
+ * (never the prepared bytes), verifying the signature, the immutable
568
+ * SIWE fields, and every subset invariant enforced by
569
+ * {@link signInWithOpenKeyResult}. This preserves the exact-byte
570
+ * guarantee: if the user did NOT narrow, the returned `signedMessage`
571
+ * equals the prepared SIWE byte-for-byte; if the user narrowed, only
572
+ * the ReCap block differs and every immutable header field survives.
573
+ *
574
+ * Legacy exact-byte {@link signIn} callers are unaffected — this method
575
+ * is opt-in.
576
+ *
577
+ * @param authorizeFn Callback that invokes the versioned OpenKey
578
+ * `authorizeTinyCloud()` protocol and returns the result. Receives
579
+ * the prepared SIWE bytes plus a `host` hint the widget should bind
580
+ * into its /authorize-sign-prepare context.
581
+ * @param options Optional overrides for the OpenKey request.
582
+ */
583
+ signInWithOpenKey(authorizeFn: (input: {
584
+ protocolVersion: 1;
585
+ siwe: string;
586
+ jwk: Record<string, unknown>;
587
+ host?: string;
588
+ /**
589
+ * Sol MAJOR-3: OpenKey key ID (managed or external key) to sign
590
+ * with. When omitted, the OpenKey SDK falls back to the last
591
+ * connected key. Callers who want to bind the flow to a specific
592
+ * OpenKey key can override via options.openkeyKeyId; otherwise the
593
+ * bridge relies on the SDK's connected-key state.
594
+ */
595
+ keyId?: string;
596
+ /**
597
+ * Optional presentation envelope forwarded to the OpenKey widget.
598
+ * Built from this instance's `_manifest` when set. Display-only —
599
+ * the widget/server MUST NOT let it expand authority. The envelope
600
+ * carries `manifests` payloads plus a stable SHA-256 digest so the
601
+ * OpenKey server can origin-bind the browser origin against the
602
+ * app's well-known manifest.
603
+ */
604
+ presentation?: CapabilityPresentationEnvelopeV1;
605
+ }) => Promise<{
606
+ protocolVersion: 1;
607
+ address: string;
608
+ signature: string;
609
+ signedMessage: string;
610
+ selectedActionKeys: string[];
611
+ permissions: Array<{
612
+ service: string;
613
+ space: string;
614
+ path: string;
615
+ actions: string[];
616
+ }>;
617
+ }>, options?: {
618
+ host?: string;
619
+ openkeyKeyId?: string;
620
+ /**
621
+ * Optional caller-supplied reason string forwarded in the
622
+ * presentation envelope. Rendered as caller-supplied (never
623
+ * verified) in the widget.
624
+ */
625
+ reason?: string;
626
+ }): Promise<ClientSession>;
627
+ /**
628
+ * Build a `CapabilityPresentationEnvelopeV1` from `this._manifest`. The
629
+ * envelope is display-only — the OpenKey widget renders it under an
630
+ * honest trust label, and the server /authorize-sign-prepare route
631
+ * decides whether to upgrade the label to `origin-bound` by fetching
632
+ * the well-known manifest and comparing its digest to
633
+ * `manifestDigest`.
634
+ *
635
+ * Returns `undefined` when no manifest is set — the widget renders as
636
+ * "no manifest supplied" (unsigned).
637
+ *
638
+ * The digest is a deterministic SHA-256 over canonical JSON of the
639
+ * first manifest payload; OpenKey parses the fetched well-known manifest
640
+ * and applies the same canonicalization before comparing digests.
641
+ */
642
+ private buildPresentationEnvelope;
643
+ /**
644
+ * Complete sign-in with a versioned OpenKey authorization result.
645
+ *
646
+ * Where `signInWithPreparedSession` completes with a signature over the
647
+ * ORIGINAL prepared SIWE, this method completes with the SIWE bytes the
648
+ * OpenKey widget actually presented and signed (`signedMessage`). It
649
+ * exists because the versioned authorizeTinyCloud protocol lets the user
650
+ * narrow capabilities; the returned bytes may differ from the original
651
+ * request and are the only ones the signature actually verifies against.
652
+ *
653
+ * The `result` parameter is validated at the trust boundary via
654
+ * `validateAuthorizationResultV1` (in sdk-core). Callers should validate
655
+ * BEFORE calling this method so unknown/missing fields are rejected
656
+ * before any session state is created.
657
+ *
658
+ * Validation performed here (defence-in-depth: even a "valid" v1 payload
659
+ * must clear these checks before any session state is created):
660
+ * 1. `result.address` matches the local signer's address.
661
+ * 2. `result.signature` recovers to `result.address` when verified against
662
+ * `result.signedMessage`.
663
+ * 3. Every immutable SIWE header field (domain, address, URI, version,
664
+ * chainId, nonce, issuedAt) in the original prepared SIWE is preserved
665
+ * byte-for-byte in `result.signedMessage`. `statement` is NOT in this
666
+ * list because the WASM renders it from the ReCap contents; it MUST
667
+ * change when the ReCap is narrowed.
668
+ * 4. Every capability in `result.signedMessage`'s ReCap block was present
669
+ * in the original prepared SIWE — narrowing OK, broadening rejected.
670
+ * 5. Every `result.selectedActionKeys` entry corresponds to a
671
+ * (resource, action) pair in the returned SIWE.
672
+ */
673
+ signInWithOpenKeyResult(result: {
674
+ protocolVersion: 1;
675
+ address: string;
676
+ signature: string;
677
+ signedMessage: string;
678
+ selectedActionKeys: string[];
679
+ permissions: Array<{
680
+ service: string;
681
+ space: string;
682
+ path: string;
683
+ actions: string[];
684
+ }>;
685
+ }, prepared: {
686
+ /**
687
+ * The ORIGINAL SIWE the SDK produced via {@link prepareSessionForSigning}.
688
+ * Used as the source-of-truth reference for immutable-header and
689
+ * capability-subset comparison against `result.signedMessage`.
690
+ */
691
+ siwe: string;
692
+ jwk: Record<string, unknown>;
693
+ spaceId: string;
694
+ verificationMethod: string;
695
+ }, keyId: string, jwk: Record<string, unknown>): Promise<ClientSession>;
536
696
  /**
537
697
  * Clear persisted session data.
538
698
  */
@@ -856,19 +1016,9 @@ type SecretReadResult = {
856
1016
  } | {
857
1017
  status: "invalid_payload";
858
1018
  };
859
- interface CreateOwnerDelegationParams {
860
- readonly delegateDid: string;
861
- readonly spaceId: string;
862
- readonly path: string;
863
- readonly actions: readonly string[];
864
- readonly expiresAt: Date;
865
- }
866
- interface OwnerDelegationReceipt {
1019
+ type CreateOwnerDelegationParams = CreateOwnerDelegationParams$1;
1020
+ interface OwnerDelegationReceipt extends OwnerDelegationReceipt$1 {
867
1021
  readonly delegation: Delegation;
868
- /** Exact signed DAG-CBOR bytes submitted in the Authorization header. */
869
- readonly signedDagCbor: Uint8Array;
870
- /** Locally derived by the node WASM implementation; this is delegation identity. */
871
- readonly delegationCid: string;
872
1022
  readonly nodeReceipt: {
873
1023
  /** Raw /delegate response CID: a commit-event id, not delegation identity. */
874
1024
  readonly commitEventCid?: string;
@@ -897,9 +1047,9 @@ interface TinyCloudNodeConfig {
897
1047
  tinycloudRegistryUrl?: string | null;
898
1048
  /** Fallback TinyCloud hosts. Default: hosted TinyCloud node. */
899
1049
  tinycloudFallbackHosts?: string[] | null;
900
- /** Probe for a locally-running TinyCloud node before registry/fallback resolution. Default: true. */
1050
+ /** Probe configured/registered local nodes before registry/fallback resolution. Default: true. */
901
1051
  autoDiscoverLocalNode?: boolean;
902
- /** Local loopback node URL to probe. Default: http://127.0.0.1:8000. */
1052
+ /** Local loopback node URL to probe. Omit to avoid probing loopback. */
903
1053
  localNodeUrl?: string;
904
1054
  /** Known `*.local.tinycloud.link` subdomain name, probed directly. */
905
1055
  localLinkName?: string;
@@ -997,6 +1147,21 @@ interface RuntimePermissionGrantOptions {
997
1147
  /** Override expiry. ms-format string ("7d", "1h") or raw milliseconds. */
998
1148
  expiry?: string | number;
999
1149
  }
1150
+ interface EnsureEncryptionNetworkOptions {
1151
+ /**
1152
+ * Skip the `GET /encryption/networks/{id}` existence probe and go straight
1153
+ * to the create.
1154
+ *
1155
+ * The probe pays for itself only when the network already exists. On a
1156
+ * freshly bootstrapped account it is a guaranteed 404, so it costs a round
1157
+ * trip on the cold sign-in path and saves nothing. Creating without it is
1158
+ * safe: the server answers `409 Conflict` if the network is already there,
1159
+ * which {@link TinyCloudNode.createEncryptionNetwork} resolves by reading the
1160
+ * existing descriptor. Set this only when the caller knows the account was
1161
+ * just provisioned.
1162
+ */
1163
+ assumeMissing?: boolean;
1164
+ }
1000
1165
  /**
1001
1166
  * High-level TinyCloud API for Node.js environments.
1002
1167
  *
@@ -1008,6 +1173,23 @@ interface NodeDefaults {
1008
1173
  createWasmBindings: () => IWasmBindings;
1009
1174
  createSigner: (privateKey: string, chainId?: number) => ISigner;
1010
1175
  }
1176
+ /**
1177
+ * A bootstrap step that COMPLETED but did so in a degraded way — e.g. a KV
1178
+ * batch write that failed ambiguously and was recovered by per-space
1179
+ * reconciliation. Structured (not prose) so callers can branch on `kind` and
1180
+ * `code` without parsing messages (TC-361).
1181
+ */
1182
+ interface BootstrapWarning {
1183
+ /** The BootstrapStep.id that degraded, e.g. "account:seed-spaces"
1184
+ * (BootstrapStepBase.id — packages/bootstrap/src/index.ts:642-645). */
1185
+ stepId: string;
1186
+ /** What kind of degradation. Additive union; one member today. */
1187
+ kind: "batch-write-reconciled";
1188
+ /** ServiceError.code of the underlying failure that was recovered from. */
1189
+ code: string;
1190
+ /** Human-readable detail. Diagnostics only — never parse this. */
1191
+ message: string;
1192
+ }
1011
1193
  declare class TinyCloudNode {
1012
1194
  /** @internal Registered by importing @tinycloud/node-sdk (not /core) */
1013
1195
  private static nodeDefaults?;
@@ -1054,6 +1236,12 @@ declare class TinyCloudNode {
1054
1236
  * so this avoids re-parsing the recap on every registration.
1055
1237
  */
1056
1238
  private _recapOperationsCache?;
1239
+ /**
1240
+ * Owned space ids this sign-in has already confirmed are hosted. Consulted by
1241
+ * {@link ensureOwnedSpaceHostedById}; cleared on every {@link signIn} because
1242
+ * hosting is confirmed against the session that was active at the time.
1243
+ */
1244
+ private readonly confirmedHostedSpaceIds;
1057
1245
  /**
1058
1246
  * TinyCloudSession captured by {@link restoreSession} when there's no
1059
1247
  * auth-layer signer available (session-only mode used by OpenKey-backed
@@ -1061,6 +1249,7 @@ declare class TinyCloudNode {
1061
1249
  * {@link currentTinyCloudSession} as a fallback for `auth.tinyCloudSession`.
1062
1250
  */
1063
1251
  private _restoredTcSession?;
1252
+ private _activeServiceSession?;
1064
1253
  /**
1065
1254
  * True when the last signIn() detected an interactive signer and skipped
1066
1255
  * client-side bootstrap. Apps can read this to know whether bootstrap was
@@ -1071,7 +1260,10 @@ declare class TinyCloudNode {
1071
1260
  * Outcome of the last signIn()'s account-bootstrap attempt. `skipped` is
1072
1261
  * true when bootstrap did not complete (interactive signer, auto-sign
1073
1262
  * denied, or a bootstrap step failed); `reason` carries the cause so apps
1074
- * can surface a "finish account setup" call-to-action.
1263
+ * can surface a "finish account setup" call-to-action. `warnings` is
1264
+ * present when bootstrap completed, but one or more steps recovered from
1265
+ * an ambiguous failure (e.g. a KV batch write reconciled via per-space
1266
+ * fallback) — clean vs. recovered runs are otherwise byte-identical.
1075
1267
  */
1076
1268
  private _bootstrapStatus;
1077
1269
  /** Whether the last signIn() skipped client-side bootstrap because the
@@ -1081,6 +1273,7 @@ declare class TinyCloudNode {
1081
1273
  get bootstrapStatus(): {
1082
1274
  skipped: boolean;
1083
1275
  reason?: string;
1276
+ warnings?: BootstrapWarning[];
1084
1277
  };
1085
1278
  private get nodeFeatures();
1086
1279
  /** SIWE domain — uses config override or defaults to app.tinycloud.xyz */
@@ -1262,6 +1455,22 @@ declare class TinyCloudNode {
1262
1455
  private withAccountRegistryRetry;
1263
1456
  private requestedEncryptionNetworkIds;
1264
1457
  private ensureRequestedEncryptionNetworks;
1458
+ /**
1459
+ * Ensure one of this user's owned spaces is hosted, at most once per space
1460
+ * per sign-in.
1461
+ *
1462
+ * Account bootstrap funnels six calls through here (via
1463
+ * `AccountService.ensureAccountSpaceHosted`), and each one re-submits
1464
+ * `activateSessionWithHost` with the *primary* session. That session's recap
1465
+ * covers only `default` and `secrets`, so the account space appears in
1466
+ * neither `activated` nor `skipped` and the guard below returns immediately
1467
+ * — the repeat calls cannot change the outcome, they only cost round trips.
1468
+ *
1469
+ * The memo is per sign-in ({@link confirmedHostedSpaceIds} is cleared in
1470
+ * `signIn`) and only records confirmed successes. A wrong skip is
1471
+ * self-revealing: the next write to the space fails immediately and loudly
1472
+ * with `404 Space not found`.
1473
+ */
1265
1474
  private ensureOwnedSpaceHostedById;
1266
1475
  /**
1267
1476
  * Host one of this user's owned spaces by name (e.g. `"applications"`).
@@ -1409,6 +1618,16 @@ declare class TinyCloudNode {
1409
1618
  * rehydration set by {@link restoreSession} (session-only mode).
1410
1619
  */
1411
1620
  private currentTinyCloudSession;
1621
+ /**
1622
+ * Mint a multi-capability invocation through the established session key.
1623
+ * Callers receive only the signed headers; session key material remains
1624
+ * owned by the session manager and is never part of the caller contract.
1625
+ */
1626
+ invokeAny(entries: Parameters<InvokeAnyFunction$1>[1], facts?: Parameters<InvokeAnyFunction$1>[2]): ReturnType<InvokeAnyFunction$1>;
1627
+ /** Sign protocol bytes with the established in-memory session key. */
1628
+ signSessionBytes(bytes: Uint8Array): Promise<Uint8Array>;
1629
+ /** Bind a session-signed invocation to the canonical service audience. */
1630
+ bindInvocationAudience(authorization: string, audience: string): Promise<string>;
1412
1631
  /**
1413
1632
  * Connect a wallet to upgrade from session-only mode to wallet mode.
1414
1633
  *
@@ -1472,6 +1691,14 @@ declare class TinyCloudNode {
1472
1691
  */
1473
1692
  private requireEncryptionSession;
1474
1693
  private createEncryptionCrypto;
1694
+ /**
1695
+ * The node DID for {@link config.host}.
1696
+ *
1697
+ * Sign-in already performs `GET /info` for the protocol-version check, and
1698
+ * that response carries `nodeId`, so reuse it rather than fetching `/info` a
1699
+ * second time. Only a value recorded for this exact host qualifies; older
1700
+ * nodes that omit `nodeId` fall through to the fetch.
1701
+ */
1475
1702
  private fetchNodeId;
1476
1703
  private signRawNetworkAuthorization;
1477
1704
  private fetchEncryptionNetworkAt;
@@ -1528,6 +1755,7 @@ declare class TinyCloudNode {
1528
1755
  readonly recipientEmail: string;
1529
1756
  readonly shareUrl: string;
1530
1757
  readonly documentName: string;
1758
+ readonly idempotencyKey: string;
1531
1759
  readonly expiresAt: string;
1532
1760
  /** The enrolled receipt key from the node trust bundle. */
1533
1761
  readonly nodeProof: {
@@ -1596,7 +1824,13 @@ declare class TinyCloudNode {
1596
1824
  get encryption(): IEncryptionService;
1597
1825
  getEncryptionNetwork(nameOrNetworkId?: string): Promise<NetworkDescriptor | null>;
1598
1826
  createEncryptionNetwork(name?: string): Promise<NetworkDescriptor>;
1599
- ensureEncryptionNetwork(nameOrNetworkId?: string): Promise<NetworkDescriptor>;
1827
+ /**
1828
+ * Ensure an encryption network exists, creating it if necessary.
1829
+ *
1830
+ * @param nameOrNetworkId - Network name or full `urn:tinycloud:encryption:` id.
1831
+ * @param options - See {@link EnsureEncryptionNetworkOptions}.
1832
+ */
1833
+ ensureEncryptionNetwork(nameOrNetworkId?: string, options?: EnsureEncryptionNetworkOptions): Promise<NetworkDescriptor>;
1600
1834
  /**
1601
1835
  * App-facing secrets API backed by the `secrets` space vault.
1602
1836
  */
@@ -2178,4 +2412,4 @@ declare class WasmKeyProvider implements KeyProvider {
2178
2412
  */
2179
2413
  declare function createWasmKeyProvider(sessionManager: SessionManagerWithListing): WasmKeyProvider;
2180
2414
 
2181
- export { type AuthDelegationArtifact as A, type CreateOwnerDelegationParams as C, type DelegateToOptions as D, FileSessionStorage as F, MemorySessionStorage as M, type NodeEventEmitterStrategy as N, type OwnerDelegationReceipt as O, type PortableDelegation as P, type RestorableSession as R, type SecretPermissionHint as S, TinyCloudNode as T, UnsupportedSessionRestoreError as U, type ValidatedRuntimeDelegation as V, WasmKeyProvider as W, type AuthRequestArtifact as a, type DelegateToResult as b, DelegatedAccess as c, type DelegationAuthority as d, NodeUserAuthorization as e, type NodeUserAuthorizationConfig as f, type RuntimeDelegationActivator as g, type RuntimePermissionGrantOptions as h, type SecretReadInput as i, type SecretReadResult as j, type SignStrategy as k, type TinyCloudNodeConfig as l, type WasmKeyProviderConfig as m, activateValidatedRuntimeDelegation as n, createWasmKeyProvider as o, defaultSignStrategy as p, deserializeDelegation as q, grantAuthRequest as r, serializeDelegation as s };
2415
+ export { type AuthDelegationArtifact as A, type BootstrapWarning as B, type CreateOwnerDelegationParams as C, type DelegateToOptions as D, type EnsureEncryptionNetworkOptions as E, FileSessionStorage as F, MemorySessionStorage as M, type NodeEventEmitterStrategy as N, type OwnerDelegationReceipt as O, type PortableDelegation as P, type RestorableSession as R, type SecretPermissionHint as S, TinyCloudNode as T, UnsupportedSessionRestoreError as U, type ValidatedRuntimeDelegation as V, WasmKeyProvider as W, type AuthRequestArtifact as a, type DelegateToResult as b, DelegatedAccess as c, type DelegationAuthority as d, NodeUserAuthorization as e, type NodeUserAuthorizationConfig as f, type RuntimeDelegationActivator as g, type RuntimePermissionGrantOptions as h, type SecretReadInput as i, type SecretReadResult as j, type SignStrategy as k, type TinyCloudNodeConfig as l, type WasmKeyProviderConfig as m, activateValidatedRuntimeDelegation as n, createWasmKeyProvider as o, defaultSignStrategy as p, deserializeDelegation as q, grantAuthRequest as r, serializeDelegation as s };