import { SchnorrSignature } from '@polyaztec/barretenberg/crypto';
import { FftFactory } from '@polyaztec/barretenberg/fft';
import { NoteAlgorithms } from '@polyaztec/barretenberg/note_algorithms';
import { Pippenger } from '@polyaztec/barretenberg/pippenger';
import { BarretenbergWasm, WorkerPool } from '@polyaztec/barretenberg/wasm';
import { KeyPair } from '../../key_pair/index.js';
import { AccountProofInput, DefiProofInput, PaymentProofInput, ProofInput } from '../proof_input/index.js';
import { ProofOutput } from './proof_output.js';
export interface ProversOptions {
    proverless: boolean;
}
export declare class ProofOutputFactory {
    private proverless;
    private noteAlgos;
    private pippenger;
    private fftFactory;
    private barretenberg;
    private workerPool?;
    private serialQueue;
    private joinSplitProver;
    private accountProver;
    private accountProofCreator;
    private paymentProofCreator;
    private defiProofCreator;
    private debug;
    constructor(proverless: boolean, noteAlgos: NoteAlgorithms, pippenger: Pippenger, fftFactory: FftFactory, barretenberg: BarretenbergWasm, workerPool?: WorkerPool | undefined);
    destroy(): Promise<void>;
    createProofs(proofInputs: ProofInput[], signatures: SchnorrSignature[], keyPair: KeyPair): Promise<ProofOutput[]>;
    createPaymentProof({ tx, viewingKeys }: PaymentProofInput, signature: SchnorrSignature, txRefNo: number, keyPair: KeyPair, timeout?: number): Promise<{
        outputNotes: import("../../index.js").Note[];
        tx: import("../../core_tx/core_payment_tx.js").CorePaymentTx;
        proofData: import("@polyaztec/barretenberg/client_proofs").ProofData;
        offchainTxData: import("@polyaztec/barretenberg/offchain_tx_data").OffchainJoinSplitData;
    }>;
    createAccountProof({ tx }: AccountProofInput, signature: SchnorrSignature, txRefNo: number, timeout?: number): Promise<{
        outputNotes: never[];
        tx: import("../../core_tx/core_account_tx.js").CoreAccountTx;
        proofData: import("@polyaztec/barretenberg/client_proofs").ProofData;
        offchainTxData: import("@polyaztec/barretenberg/offchain_tx_data").OffchainAccountData;
    }>;
    createDefiProof({ tx, viewingKey, partialStateSecretEphPubKey }: DefiProofInput, signature: SchnorrSignature, txRefNo: number, keyPair: KeyPair, timeout?: number): Promise<{
        outputNotes: import("../../index.js").Note[];
        tx: import("../../core_tx/core_defi_tx.js").CoreDefiTx;
        proofData: import("@polyaztec/barretenberg/client_proofs").ProofData;
        offchainTxData: import("@polyaztec/barretenberg/offchain_tx_data").OffchainDefiDepositData;
    }>;
    private getCrsData;
    private initProvers;
    private createJoinSplitProofCreator;
    private createAccountProofCreator;
    private computeJoinSplitProvingKey;
    private computeAccountProvingKey;
}
//# sourceMappingURL=proof_output_factory.d.ts.map