@lionden/network 0.1.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 (55) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +23 -0
  3. package/dist/accounts.d.ts +12 -0
  4. package/dist/accounts.d.ts.map +1 -0
  5. package/dist/accounts.js +38 -0
  6. package/dist/accounts.js.map +1 -0
  7. package/dist/connection.d.ts +121 -0
  8. package/dist/connection.d.ts.map +1 -0
  9. package/dist/connection.js +1064 -0
  10. package/dist/connection.js.map +1 -0
  11. package/dist/devnode-backend.d.ts +53 -0
  12. package/dist/devnode-backend.d.ts.map +1 -0
  13. package/dist/devnode-backend.js +121 -0
  14. package/dist/devnode-backend.js.map +1 -0
  15. package/dist/devnode-manager.d.ts +130 -0
  16. package/dist/devnode-manager.d.ts.map +1 -0
  17. package/dist/devnode-manager.js +546 -0
  18. package/dist/devnode-manager.js.map +1 -0
  19. package/dist/execution-key-cache.d.ts +71 -0
  20. package/dist/execution-key-cache.d.ts.map +1 -0
  21. package/dist/execution-key-cache.js +286 -0
  22. package/dist/execution-key-cache.js.map +1 -0
  23. package/dist/file-io.d.ts +2 -0
  24. package/dist/file-io.d.ts.map +1 -0
  25. package/dist/file-io.js +9 -0
  26. package/dist/file-io.js.map +1 -0
  27. package/dist/index.d.ts +12 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +11 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/named-account-manager.d.ts +40 -0
  32. package/dist/named-account-manager.d.ts.map +1 -0
  33. package/dist/named-account-manager.js +116 -0
  34. package/dist/named-account-manager.js.map +1 -0
  35. package/dist/network-manager.d.ts +36 -0
  36. package/dist/network-manager.d.ts.map +1 -0
  37. package/dist/network-manager.js +226 -0
  38. package/dist/network-manager.js.map +1 -0
  39. package/dist/sdk-adapter.d.ts +271 -0
  40. package/dist/sdk-adapter.d.ts.map +1 -0
  41. package/dist/sdk-adapter.js +997 -0
  42. package/dist/sdk-adapter.js.map +1 -0
  43. package/dist/sdk-diagnostics.d.ts +113 -0
  44. package/dist/sdk-diagnostics.d.ts.map +1 -0
  45. package/dist/sdk-diagnostics.js +241 -0
  46. package/dist/sdk-diagnostics.js.map +1 -0
  47. package/dist/transition-selector.d.ts +15 -0
  48. package/dist/transition-selector.d.ts.map +1 -0
  49. package/dist/transition-selector.js +45 -0
  50. package/dist/transition-selector.js.map +1 -0
  51. package/dist/types.d.ts +484 -0
  52. package/dist/types.d.ts.map +1 -0
  53. package/dist/types.js +129 -0
  54. package/dist/types.js.map +1 -0
  55. package/package.json +35 -0
@@ -0,0 +1,226 @@
1
+ /**
2
+ * NetworkManagerImpl — manages connections to Aleo networks.
3
+ *
4
+ * Injected into lre.network by @lionden/plugin-network.
5
+ * Contract wrappers call execute(), getMappingValue(), and storage query helpers on this object.
6
+ */
7
+ import { DEVNODE_ACCOUNTS } from "./accounts.js";
8
+ import { AleoConnection } from "./connection.js";
9
+ import { NamedAccountManager } from "./named-account-manager.js";
10
+ function resolveEgressPolicy(endpoint, override) {
11
+ const endpointHost = (() => {
12
+ try {
13
+ return new URL(endpoint).host;
14
+ }
15
+ catch {
16
+ return "";
17
+ }
18
+ })();
19
+ const networkHosts = new Set(endpointHost ? [endpointHost] : []);
20
+ if (override?.networkHosts) {
21
+ for (const h of override.networkHosts)
22
+ networkHosts.add(h);
23
+ }
24
+ return {
25
+ allowedNetworkHosts: networkHosts,
26
+ violation: override?.violation ?? "block",
27
+ };
28
+ }
29
+ export class NetworkManagerImpl {
30
+ config;
31
+ activeConnection = null;
32
+ connections = new Map();
33
+ namedAccountManager;
34
+ /** Per-network named account cache (survives connection close/reopen). */
35
+ resolvedNamedAccountsCache = new Map();
36
+ inFlightConnects = new Map();
37
+ activeNamedAccounts = {};
38
+ constructor(config) {
39
+ this.config = config;
40
+ this.namedAccountManager = new NamedAccountManager(config.namedAccounts);
41
+ }
42
+ async connect(name) {
43
+ const networkName = name ?? this.config.defaultNetwork;
44
+ const networkConfig = this.config.networks[networkName];
45
+ if (!networkConfig) {
46
+ const available = Object.keys(this.config.networks).join(", ");
47
+ throw new Error(`Network "${networkName}" not found in config. Available: ${available || "none"}`);
48
+ }
49
+ // Return existing connection if already connected and not closed
50
+ const existing = this.connections.get(networkName);
51
+ if (existing) {
52
+ if (existing.closed) {
53
+ this.connections.delete(networkName);
54
+ // Fall through to create a new connection below
55
+ }
56
+ else {
57
+ this.activeConnection = existing;
58
+ // Restore named accounts from per-network cache
59
+ const cachedAccounts = this.resolvedNamedAccountsCache.get(networkName);
60
+ this.activeNamedAccounts = cachedAccounts ?? {};
61
+ return existing;
62
+ }
63
+ }
64
+ const inFlight = this.inFlightConnects.get(networkName);
65
+ if (inFlight) {
66
+ return inFlight;
67
+ }
68
+ const connectPromise = (async () => {
69
+ // Create new connection first (may throw)
70
+ const connection = this.createConnection(networkName, networkConfig);
71
+ // Resolve named accounts — if this throws, close only the new connection
72
+ // and preserve the previous active state (transactional).
73
+ let resolvedAccounts;
74
+ try {
75
+ resolvedAccounts = await this.namedAccountManager.resolveForNetwork({
76
+ networkName,
77
+ networkType: networkConfig.type,
78
+ networkId: networkConfig.network,
79
+ endpoint: connection.endpoint,
80
+ apiKey: networkConfig.type === "http" ? networkConfig.apiKey : undefined,
81
+ egressPolicy: connection.egressPolicy,
82
+ });
83
+ }
84
+ catch (err) {
85
+ await connection.close().catch(() => { });
86
+ throw err;
87
+ }
88
+ // Both connection creation and named-account resolution succeeded — swap state.
89
+ this.connections.set(networkName, connection);
90
+ this.activeConnection = connection;
91
+ this.resolvedNamedAccountsCache.set(networkName, resolvedAccounts);
92
+ this.activeNamedAccounts = resolvedAccounts;
93
+ return connection;
94
+ })();
95
+ this.inFlightConnects.set(networkName, connectPromise);
96
+ try {
97
+ return await connectPromise;
98
+ }
99
+ finally {
100
+ if (this.inFlightConnects.get(networkName) === connectPromise) {
101
+ this.inFlightConnects.delete(networkName);
102
+ }
103
+ }
104
+ }
105
+ getConnection() {
106
+ return this.getUsableActiveConnection();
107
+ }
108
+ async disconnectAll() {
109
+ const conns = [...this.connections.values()];
110
+ this.connections.clear();
111
+ this.activeConnection = null;
112
+ this.activeNamedAccounts = {};
113
+ this.resolvedNamedAccountsCache.clear();
114
+ this.namedAccountManager.invalidate();
115
+ await Promise.all(conns.map((c) => c.close()));
116
+ }
117
+ getAccounts() {
118
+ return [...DEVNODE_ACCOUNTS];
119
+ }
120
+ getNamedAccounts() {
121
+ if (!this.getUsableActiveConnection()) {
122
+ return {};
123
+ }
124
+ return { ...this.activeNamedAccounts };
125
+ }
126
+ async execute(programId, transitionName, args, options) {
127
+ const conn = this.requireConnection();
128
+ return conn.execute(programId, transitionName, args, options);
129
+ }
130
+ async checkLocalExecution(programId, transitionName, args, options) {
131
+ const conn = this.requireConnection();
132
+ if (typeof conn.checkLocalExecution !== "function") {
133
+ throw new Error("Active network connection does not support local execution checks.");
134
+ }
135
+ return conn.checkLocalExecution(programId, transitionName, args, options);
136
+ }
137
+ async getMappingValue(programId, mappingName, key) {
138
+ const conn = this.requireConnection();
139
+ return conn.getMappingValue(programId, mappingName, key);
140
+ }
141
+ async getStorageValue(programId, variableName) {
142
+ const conn = this.requireConnection();
143
+ return conn.getStorageValue(programId, variableName);
144
+ }
145
+ async getStorageVectorLength(programId, variableName) {
146
+ const conn = this.requireConnection();
147
+ return conn.getStorageVectorLength(programId, variableName);
148
+ }
149
+ async getStorageVectorValue(programId, variableName, index) {
150
+ const conn = this.requireConnection();
151
+ return conn.getStorageVectorValue(programId, variableName, index);
152
+ }
153
+ async waitForConfirmation(txId, timeout) {
154
+ const conn = this.requireConnection();
155
+ return conn.waitForConfirmation(txId, timeout);
156
+ }
157
+ async getTransitionOutputs(txId, programId, transitionName, timeout) {
158
+ const conn = this.requireConnection();
159
+ return conn.getTransitionOutputs(txId, programId, transitionName, timeout);
160
+ }
161
+ requireConnection() {
162
+ const connection = this.getUsableActiveConnection();
163
+ if (!connection) {
164
+ throw new Error("No active network connection. Call connect() first, or ensure " +
165
+ "the network plugin has established a connection.");
166
+ }
167
+ return connection;
168
+ }
169
+ getUsableActiveConnection() {
170
+ const connection = this.activeConnection;
171
+ if (!connection) {
172
+ return null;
173
+ }
174
+ if (!connection.closed) {
175
+ return connection;
176
+ }
177
+ this.activeConnection = null;
178
+ this.activeNamedAccounts = {};
179
+ if (this.connections.get(connection.name) === connection) {
180
+ this.connections.delete(connection.name);
181
+ }
182
+ return null;
183
+ }
184
+ createConnection(name, config) {
185
+ const egressOverride = this.config.sdk.egress;
186
+ switch (config.type) {
187
+ case "devnode": {
188
+ const endpoint = `http://${config.socketAddr}`;
189
+ // Use the first configured account, or fall back to well-known account-0
190
+ const privateKey = config.accounts.length > 0
191
+ ? config.accounts[0].privateKey
192
+ : DEVNODE_ACCOUNTS[0].privateKey;
193
+ return new AleoConnection({
194
+ type: "devnode",
195
+ name,
196
+ endpoint,
197
+ networkId: config.network,
198
+ privateKey,
199
+ artifactsDir: this.config.paths.artifacts,
200
+ keyCache: this.config.sdk.keyCache,
201
+ logLevel: this.config.sdk.logLevel,
202
+ egressPolicy: resolveEgressPolicy(endpoint, egressOverride),
203
+ projectRoot: this.config.paths.root,
204
+ executionImports: this.config.execution.imports,
205
+ });
206
+ }
207
+ case "http": {
208
+ return new AleoConnection({
209
+ type: "http",
210
+ name,
211
+ endpoint: config.endpoint,
212
+ networkId: config.network,
213
+ privateKey: config.privateKey,
214
+ apiKey: config.apiKey,
215
+ artifactsDir: this.config.paths.artifacts,
216
+ keyCache: this.config.sdk.keyCache,
217
+ logLevel: this.config.sdk.logLevel,
218
+ egressPolicy: resolveEgressPolicy(config.endpoint, egressOverride),
219
+ projectRoot: this.config.paths.root,
220
+ executionImports: this.config.execution.imports,
221
+ });
222
+ }
223
+ }
224
+ }
225
+ }
226
+ //# sourceMappingURL=network-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-manager.js","sourceRoot":"","sources":["../src/network-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * SDK adapter — isolates the @provablehq/sdk initialization ceremony.
3
+ *
4
+ * The Provable SDK v0.11.3 baseline requires:
5
+ * 1. initThreadPool() for multi-threaded WASM
6
+ * 2. Network-specific loading via @provablehq/sdk/dynamic.js
7
+ * 3. getOrInitConsensusVersionTestHeights() for devnode connections
8
+ * 4. ProgramManager with devnode-specific transaction builders
9
+ *
10
+ * This adapter loads the runtime SDK module dynamically per network while
11
+ * keeping TypeScript types anchored to the testnet entrypoint, which matches
12
+ * the mainnet surface in the current SDK release.
13
+ */
14
+ import type { AleoNetwork, ResolvedSdkKeyCacheConfig, SdkLogLevel } from "@lionden/config";
15
+ import type * as TestnetSdk from "@provablehq/sdk/testnet.js";
16
+ import type { TransportFunction } from "@provablehq/sdk/testnet.js";
17
+ import { SdkDiagnostics } from "./sdk-diagnostics.js";
18
+ type SdkModule = typeof TestnetSdk;
19
+ type SupportedSdkNetwork = "testnet" | "mainnet";
20
+ type SdkFunctionKeyProvider = NonNullable<ConstructorParameters<SdkModule["ProgramManager"]>[1]>;
21
+ type SdkKeySearchParams = Parameters<SdkFunctionKeyProvider["functionKeys"]>[0];
22
+ type SdkFunctionKeyPair = Awaited<ReturnType<SdkFunctionKeyProvider["functionKeys"]>>;
23
+ type SdkKeyStore = Awaited<ReturnType<SdkFunctionKeyProvider["keyStore"]>>;
24
+ export type SdkProgramManagerBase = SdkModule["ProgramManagerBase"];
25
+ type SdkPrivateKey = InstanceType<SdkModule["PrivateKey"]>;
26
+ export interface SdkObjects {
27
+ account: InstanceType<SdkModule["Account"]>;
28
+ networkClient: InstanceType<SdkModule["AleoNetworkClient"]>;
29
+ programManager: InstanceType<SdkModule["ProgramManager"]>;
30
+ programManagerBase: SdkProgramManagerBase;
31
+ keyProvider: SdkFunctionKeyProvider;
32
+ recordProvider: InstanceType<SdkModule["NetworkRecordProvider"]>;
33
+ /** Transport-failure sink shared by this bundle's network transport. */
34
+ diagnostics: SdkDiagnostics;
35
+ }
36
+ export interface SdkExecutionKeys {
37
+ provingKey: ReturnType<SdkModule["ProvingKey"]["fromBytes"]>;
38
+ verifyingKey: ReturnType<SdkModule["VerifyingKey"]["fromBytes"]>;
39
+ }
40
+ export interface SdkRuntimeMetadata {
41
+ readonly sdkVersion?: string;
42
+ readonly wasmVersion?: string;
43
+ readonly wasmHash: string;
44
+ }
45
+ export interface SynthesizeExecutionKeyBytesOptions {
46
+ readonly programManagerBase: SdkProgramManagerBase;
47
+ readonly privateKey: SdkPrivateKey;
48
+ readonly source: string;
49
+ readonly transitionName: string;
50
+ readonly inputs: readonly string[];
51
+ readonly imports?: Record<string, string>;
52
+ readonly edition?: number;
53
+ }
54
+ export declare function programAddressFromProgramId(programId: string): string;
55
+ export declare function computeProgramChecksum(network: AleoNetwork, program: string): Promise<Uint8Array>;
56
+ /**
57
+ * Initialize the Provable SDK WASM runtime.
58
+ * Must be called once before any SDK operations.
59
+ */
60
+ export declare function initSdk(): Promise<void>;
61
+ export declare function applySdkLogLevel(sdk: SdkModule, logLevel?: SdkLogLevel): void;
62
+ /**
63
+ * Runtime SDK egress policy. Governs **network-host** fetches only
64
+ * (chain state, transaction submission). Resolved per-connection in
65
+ * `NetworkManager` and threaded through `createSdkObjects` /
66
+ * `createSignerSdkObjects` so the guarded transport is installed on
67
+ * `AleoNetworkClient`, the `ProgramManager`'s internal client, and every
68
+ * per-signer copy.
69
+ *
70
+ * Beyond filtering egress, installing ANY transport on `AleoNetworkClient`
71
+ * also flips the SDK's `hasCustomTransport` to true, forcing the prove
72
+ * path to use `CallbackQuery` instead of WASM's internal SnapshotQuery —
73
+ * closing the `statePaths` leak where WASM bypasses the JS-configured host.
74
+ *
75
+ * Parameter-host fetches (`AleoKeyProvider`) are guarded against the
76
+ * internal `KNOWN_SDK_PARAMETER_HOSTS` allowlist and are not configurable
77
+ * via this policy.
78
+ */
79
+ export interface SdkEgressPolicy {
80
+ /** Hosts the SDK is allowed to call for chain state / submission. */
81
+ readonly allowedNetworkHosts: ReadonlySet<string>;
82
+ /** What to do when a network-host fetch targets a host that's not allowed. */
83
+ readonly violation: "block" | "warn";
84
+ }
85
+ /**
86
+ * Build a `fetch`-shaped transport for SDK **network-host** calls
87
+ * (chain state, transaction submission). On a host outside `allowed`,
88
+ * rejects when `violation === "block"` and logs-then-forwards when
89
+ * `violation === "warn"`. Warn mode forwards the SDK request unchanged,
90
+ * including headers, so use it only when intentionally observing egress
91
+ * instead of enforcing it. Exported for unit testing.
92
+ *
93
+ * When `diagnostics` is supplied, the transport records non-OK responses
94
+ * (status/statusText/body excerpt) and thrown fetch/host-block failures so
95
+ * that `captureSdkCall` can surface the underlying state-query failure behind
96
+ * an opaque WASM error. Without it (the 2-arg form), behavior is unchanged.
97
+ */
98
+ export declare function makeNetworkTransport(allowed: ReadonlySet<string>, violation: "block" | "warn", diagnostics?: SdkDiagnostics): TransportFunction;
99
+ /**
100
+ * Build a `fetch`-shaped transport for SDK **parameter-host** calls
101
+ * (credits proving/verifying keys, SRS files). Allowlist is the
102
+ * module-private `KNOWN_SDK_PARAMETER_HOSTS`; violation is always block.
103
+ * An unknown host means LionDen's allowlist is stale relative to the
104
+ * installed SDK, surfaced as a clear actionable error. Exported for
105
+ * unit testing.
106
+ */
107
+ export declare function makeParameterTransport(): TransportFunction;
108
+ export interface CreateSdkObjectsOptions {
109
+ network: AleoNetwork;
110
+ endpoint: string;
111
+ privateKey?: string;
112
+ /** API key passed as Authorization header to AleoNetworkClient. */
113
+ apiKey?: string;
114
+ keyCache?: ResolvedSdkKeyCacheConfig;
115
+ logLevel?: SdkLogLevel;
116
+ /**
117
+ * Egress policy for SDK network-host fetches. Required — installing the
118
+ * guarded transport is what flips `hasCustomTransport=true` and forces
119
+ * the prove path to use `CallbackQuery` instead of WASM's internal
120
+ * SnapshotQuery (which is baked to `https://api.provable.com/v2`). Every
121
+ * production caller threads a per-connection policy through
122
+ * `NetworkManager`. Parameter-host fetches are guarded against an
123
+ * internal known-host list (`KNOWN_SDK_PARAMETER_HOSTS`) and are not
124
+ * configurable via this policy.
125
+ */
126
+ egressPolicy: SdkEgressPolicy;
127
+ }
128
+ /**
129
+ * Create SDK objects for a given network and endpoint.
130
+ * Validates that required devnode methods exist (version guard).
131
+ */
132
+ export declare function createSdkObjects(opts: CreateSdkObjectsOptions): Promise<SdkObjects>;
133
+ /**
134
+ * A signer-specific subset of SDK objects. Shares the KeyProvider with the
135
+ * default connection but has its own Account, RecordProvider, and
136
+ * ProgramManager to avoid shared mutable state.
137
+ */
138
+ export interface SignerSdkObjects {
139
+ account: InstanceType<SdkModule["Account"]>;
140
+ recordProvider: InstanceType<SdkModule["NetworkRecordProvider"]>;
141
+ programManager: InstanceType<SdkModule["ProgramManager"]>;
142
+ programManagerBase: SdkProgramManagerBase;
143
+ /** Transport-failure sink shared by this signer bundle's network transport. */
144
+ diagnostics: SdkDiagnostics;
145
+ }
146
+ export interface CreateSignerSdkObjectsOptions {
147
+ privateKey: string;
148
+ endpoint: string;
149
+ network: AleoNetwork;
150
+ keyProvider: SdkObjects["keyProvider"];
151
+ apiKey?: string;
152
+ logLevel?: SdkLogLevel;
153
+ /** Required — same rationale as on `CreateSdkObjectsOptions`. */
154
+ egressPolicy: SdkEgressPolicy;
155
+ }
156
+ export interface CreditsKeyPersistenceConfig {
157
+ readonly sdk: SdkModule;
158
+ readonly cachePath: string;
159
+ readonly network: AleoNetwork;
160
+ readonly wasmHash: string;
161
+ }
162
+ export declare class PersistentFunctionKeyProvider implements SdkFunctionKeyProvider {
163
+ private readonly delegate;
164
+ private readonly fileStore;
165
+ private readonly creditsPersistence?;
166
+ constructor(delegate: SdkFunctionKeyProvider, fileStore: NonNullable<SdkKeyStore>, creditsPersistence?: CreditsKeyPersistenceConfig | undefined);
167
+ keyStore(): Promise<SdkKeyStore>;
168
+ bondPublicKeys(): Promise<SdkFunctionKeyPair>;
169
+ bondValidatorKeys(): Promise<SdkFunctionKeyPair>;
170
+ cacheKeys(keyId: string, keys: SdkFunctionKeyPair): void;
171
+ claimUnbondPublicKeys(): Promise<SdkFunctionKeyPair>;
172
+ functionKeys(params?: SdkKeySearchParams): Promise<SdkFunctionKeyPair>;
173
+ feePrivateKeys(): Promise<SdkFunctionKeyPair>;
174
+ feePublicKeys(): Promise<SdkFunctionKeyPair>;
175
+ inclusionKeys(): Promise<SdkFunctionKeyPair>;
176
+ joinKeys(): Promise<SdkFunctionKeyPair>;
177
+ splitKeys(): Promise<SdkFunctionKeyPair>;
178
+ transferKeys(visibility: string): Promise<SdkFunctionKeyPair>;
179
+ unBondPublicKeys(): Promise<SdkFunctionKeyPair>;
180
+ /**
181
+ * Persist a credits.aleo proving key to disk so the next process can
182
+ * warm its in-memory cache without re-fetching from the public
183
+ * parameters host. Performance-only — hermeticity comes from the
184
+ * SDK egress policy, not from caching.
185
+ */
186
+ private persistCreditsIfMissing;
187
+ }
188
+ /**
189
+ * Warm the SDK's in-memory key cache from disk for every credits.aleo
190
+ * key that has a complete on-disk entry. Frame as performance only —
191
+ * hermeticity is enforced by the SDK egress policy, not the cache.
192
+ *
193
+ * Iterates every named entry of `CREDITS_PROGRAM_KEYS` (skipping the
194
+ * helper functions like `getKey`). Entries without a complete and
195
+ * fingerprint-matching cache entry are skipped silently.
196
+ *
197
+ * @internal — exported for testing.
198
+ */
199
+ export declare function warmupCreditsKeys(keyProvider: InstanceType<SdkModule["AleoKeyProvider"]>, sdk: SdkModule, cachePath: string, network: AleoNetwork, wasmHash: string): Promise<void>;
200
+ export declare function createExecutionKeysFromBytes(network: AleoNetwork, keyBytes: {
201
+ provingKey: Uint8Array;
202
+ verifyingKey: Uint8Array;
203
+ }): Promise<SdkExecutionKeys>;
204
+ export declare function synthesizeExecutionKeyBytes(options: SynthesizeExecutionKeyBytesOptions): Promise<{
205
+ provingKeyBytes: Uint8Array;
206
+ verifyingKeyBytes: Uint8Array;
207
+ }>;
208
+ export declare function getSdkRuntimeMetadata(network: AleoNetwork): SdkRuntimeMetadata;
209
+ /**
210
+ * Create an isolated set of SDK objects for a specific signer.
211
+ * Reuses the shared KeyProvider (proving-key cache) but creates
212
+ * dedicated Account, RecordProvider, and ProgramManager instances.
213
+ */
214
+ export declare function createSignerSdkObjects(opts: CreateSignerSdkObjectsOptions): Promise<SignerSdkObjects>;
215
+ /**
216
+ * Version guard: check that the SDK has devnode-specific methods.
217
+ * Call this before attempting devnode operations.
218
+ */
219
+ export declare function checkDevnodeSdkSupport(): Promise<void>;
220
+ /**
221
+ * Initialize consensus version test heights for devnode connections.
222
+ * Required by the SDK before devnode transaction builders can be used.
223
+ */
224
+ export declare function initConsensusHeights(): Promise<void>;
225
+ export interface DecryptOptions {
226
+ /**
227
+ * Which SDK network module to load for the crypto primitives.
228
+ * Defaults to whichever module is already cached (any), else "testnet".
229
+ * RecordCiphertext/ViewKey/PrivateKey are crypto-agnostic across networks
230
+ * so this only governs module-load policy.
231
+ */
232
+ readonly network?: SupportedSdkNetwork;
233
+ }
234
+ export declare class NetworkRecordDecryptionError extends Error {
235
+ readonly kind: "NetworkRecordDecryptionError";
236
+ readonly ciphertextPrefix: string;
237
+ constructor(message: string, ciphertextPrefix: string, cause?: unknown);
238
+ }
239
+ /**
240
+ * Decrypt an Aleo record ciphertext using a view key.
241
+ * Returns the plaintext record literal (a string suitable for downstream
242
+ * `deserialize<Name>` parsing). View key must already be a string view key
243
+ * (`AViewKey1...`). To accept a private key, call `deriveViewKey` first.
244
+ */
245
+ export declare function decryptRecordCiphertext(ciphertext: string, viewKey: string, options?: DecryptOptions): Promise<string>;
246
+ export declare class NetworkValueDecryptionError extends Error {
247
+ readonly kind: "NetworkValueDecryptionError";
248
+ readonly ciphertextPrefix: string;
249
+ constructor(message: string, ciphertextPrefix: string, cause?: unknown);
250
+ }
251
+ /**
252
+ * Decrypt an Aleo value ciphertext (`ciphertext1...`) — the on-wire form for a
253
+ * private plaintext input or output of a transition. Distinct from record
254
+ * ciphertexts, which use a different (record-owner-derived) encryption scheme.
255
+ *
256
+ * Returns the decrypted Leo literal as a string (e.g. `"10000u64"`, `"true"`,
257
+ * `"aleo1..."`), suitable for downstream primitive parsers.
258
+ *
259
+ * `globalIndex` is the position of the input or output in the transition's
260
+ * combined input+output list — Aleo's domain separation places inputs first.
261
+ * For a transition with `N` inputs, output ABI index `i` corresponds to global
262
+ * index `N + i`.
263
+ */
264
+ export declare function decryptValueCiphertext(ciphertext: string, viewKey: string, tpk: string, programId: string, transitionName: string, globalIndex: number, options?: DecryptOptions): Promise<string>;
265
+ /**
266
+ * Derive a view key string (`AViewKey1...`) from a private key string
267
+ * (`APrivateKey1...`). Used by callers that pass private keys to decrypt.
268
+ */
269
+ export declare function deriveViewKey(privateKey: string, options?: DecryptOptions): Promise<string>;
270
+ export {};
271
+ //# sourceMappingURL=sdk-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-adapter.d.ts","sourceRoot":"","sources":["../src/sdk-adapter.ts"],"names":[],"mappings":"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"}