@provablehq/sdk
Version:
A Software Development Kit (SDK) for Zero-Knowledge Transactions
77 lines (76 loc) • 3.4 kB
text/typescript
import { ExecutionRequest } from "./wasm.js";
import type { ExternalSigningInput, ExternalSigningOptions, ExecutionRequestParams, InputStrategy } from "./models/external-signing.js";
export * from "./models/external-signing.js";
/**
* Build an ExecutionRequest from externally signed data.
*
* The `strategy` parameter determines how record input IDs are resolved:
* - `{ recordViewKeys?, gammas? }` — explicit record view keys and gammas
* - `{ viewKey, gammas? }` — derive record view keys from a ViewKey
* - `{ inputIds }` — pre-computed input IDs (Field or [Field, Group, Field, Field, Field] tuples)
*
* @throws {Error} If `strategy` is not a valid `InputStrategy` variant.
*
* @example
* // With explicit record view keys
* buildExecutionRequestFromExternallySignedData(
* { programId, functionName, inputs, inputTypes, signature, tvk, signer, skTag },
* { recordViewKeys: [...], gammas: [...] },
* );
*
* // With a view key
* buildExecutionRequestFromExternallySignedData(
* { programId, functionName, inputs, inputTypes, signature, tvk, signer, skTag },
* { viewKey: "AViewKey1..." },
* );
*
* // With pre-computed input IDs
* buildExecutionRequestFromExternallySignedData(
* { programId, functionName, inputs, inputTypes, signature, tvk, signer, skTag },
* { inputIds: [...] },
* );
*/
export declare function buildExecutionRequestFromExternallySignedData(params: ExecutionRequestParams, strategy?: InputStrategy): ExecutionRequest;
/**
* Computes the function ID and serialized input data for a program function call.
* Used by external signing wallets and other applications that need publicly computable inputs
* for building a signed execution request (e.g. before calling {@link ExecutionRequest.sign}).
*
* The optional `outputFormat` field controls how field elements are returned:
* - `"string"` (default) — human-readable strings like `"123field"`
* - `"bytes"` — raw little-endian `Uint8Array`s
*
* @param {ExternalSigningOptions} options - Program name, function name, inputs, input_types, root flag, an optional program checksum, an optional view key, and an optional output format.
* @throws Throws if parsing the program ID, function name, or inputs fails or if the inputs do not match the type signatures passed in the input_types parameter.
*
* @example
* // String output (default)
* const result = await computeExternalSigningInputs({
* programName: "credits.aleo",
* functionName: "transfer_public",
* inputs: ["aleo1...", "100u64"],
* inputTypes: ["address.public", "u64.public"],
* isRoot: true,
* });
* result.functionId; // string
*
* @example
* // Bytes output
* const result = await computeExternalSigningInputs({
* programName: "credits.aleo",
* functionName: "transfer_public",
* inputs: ["aleo1...", "100u64"],
* inputTypes: ["address.public", "u64.public"],
* isRoot: true,
* outputFormat: "bytes",
* });
* result.functionId; // Uint8Array
*
* @returns {ExternalSigningInput} A JSON object for inputs to external signing algorithms.
*/
export declare function computeExternalSigningInputs(options: ExternalSigningOptions & {
outputFormat: "bytes";
}): Promise<ExternalSigningInput<"bytes">>;
export declare function computeExternalSigningInputs(options: ExternalSigningOptions & {
outputFormat?: "string";
}): Promise<ExternalSigningInput<"string">>;