@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.
- package/LICENSE +201 -0
- package/README.md +23 -0
- package/dist/accounts.d.ts +12 -0
- package/dist/accounts.d.ts.map +1 -0
- package/dist/accounts.js +38 -0
- package/dist/accounts.js.map +1 -0
- package/dist/connection.d.ts +121 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +1064 -0
- package/dist/connection.js.map +1 -0
- package/dist/devnode-backend.d.ts +53 -0
- package/dist/devnode-backend.d.ts.map +1 -0
- package/dist/devnode-backend.js +121 -0
- package/dist/devnode-backend.js.map +1 -0
- package/dist/devnode-manager.d.ts +130 -0
- package/dist/devnode-manager.d.ts.map +1 -0
- package/dist/devnode-manager.js +546 -0
- package/dist/devnode-manager.js.map +1 -0
- package/dist/execution-key-cache.d.ts +71 -0
- package/dist/execution-key-cache.d.ts.map +1 -0
- package/dist/execution-key-cache.js +286 -0
- package/dist/execution-key-cache.js.map +1 -0
- package/dist/file-io.d.ts +2 -0
- package/dist/file-io.d.ts.map +1 -0
- package/dist/file-io.js +9 -0
- package/dist/file-io.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/named-account-manager.d.ts +40 -0
- package/dist/named-account-manager.d.ts.map +1 -0
- package/dist/named-account-manager.js +116 -0
- package/dist/named-account-manager.js.map +1 -0
- package/dist/network-manager.d.ts +36 -0
- package/dist/network-manager.d.ts.map +1 -0
- package/dist/network-manager.js +226 -0
- package/dist/network-manager.js.map +1 -0
- package/dist/sdk-adapter.d.ts +271 -0
- package/dist/sdk-adapter.d.ts.map +1 -0
- package/dist/sdk-adapter.js +997 -0
- package/dist/sdk-adapter.js.map +1 -0
- package/dist/sdk-diagnostics.d.ts +113 -0
- package/dist/sdk-diagnostics.d.ts.map +1 -0
- package/dist/sdk-diagnostics.js +241 -0
- package/dist/sdk-diagnostics.js.map +1 -0
- package/dist/transition-selector.d.ts +15 -0
- package/dist/transition-selector.d.ts.map +1 -0
- package/dist/transition-selector.js +45 -0
- package/dist/transition-selector.js.map +1 -0
- package/dist/types.d.ts +484 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +129 -0
- package/dist/types.js.map +1 -0
- 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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"}
|