import { MerkleTree } from '../../data-structures/merkle-tree';
import { UserKeys } from '../../data-structures/crypto-keys/keys';
import { Utxo } from '../../data-structures/utxo/Utxo';
import { CircomDataType, DimDataType, HookDataType } from '../../types/circom-data.types';
import { ExternalActionId } from '../../types/external-action.types';
import { FeeStructure } from '../../types/hinkal.types';
export declare const constructZkProof: <T = CircomDataType>(merkleTree: MerkleTree<bigint>, inputUtxos: Utxo[][], outputUtxos: Utxo[][], userKeys: UserKeys, externalActionId: ExternalActionId | 0n, externalAddress: string | undefined, externalActionMetadata: string | string[], generateProofRemotely: boolean, feeStructure: FeeStructure, relay?: string, chainId?: number, onChainCreation?: boolean[], hookData?: HookDataType | undefined, originalSender?: string, subAccountPrivateKey?: string) => Promise<{
    zkCallData: import('../..').NewZkCallDataType;
    circomData: T;
    dimData: DimDataType;
    encryptedOutputs: string[][];
}>;
