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';
import { ethers } from 'ethers';
export declare const constructZkProof: <T = CircomDataType>(merkleTree: MerkleTree<bigint>, merkleTreeAccessToken: MerkleTree<bigint>, inputUtxos: Utxo[][], outputUtxos: Utxo[][], userKeys: UserKeys, verifierName: string, externalActionId: ExternalActionId | 0n, externalAddress: string | undefined, externalActionMetadata: string, generateProofRemotely: boolean, relay?: string, chainId?: number, onChainCreation?: boolean[], flatFees?: bigint[], hookData?: HookDataType | undefined, patchAccessTokenMerkleTree?: boolean, slippageValues?: bigint[], feeStructure?: FeeStructure | undefined, hinkalHelper?: ethers.Contract, signatureData?: import('../..').SignatureData, originalSender?: string) => Promise<{
    zkCallData: import('../..').NewZkCallDataType;
    circomData: T;
    dimData: DimDataType;
    encryptedOutputs: string[][];
}>;
