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">>;
