import { EthAddress, GrumpkinAddress } from '@polyaztec/barretenberg/address';
import { JoinSplitProver, ProofData } from '@polyaztec/barretenberg/client_proofs';
import { Grumpkin } from '@polyaztec/barretenberg/ecc';
import { NoteAlgorithms } from '@polyaztec/barretenberg/note_algorithms';
import { OffchainJoinSplitData } from '@polyaztec/barretenberg/offchain_tx_data';
import { WorldState } from '@polyaztec/barretenberg/world_state';
import { CorePaymentTx } from '../core_tx/index.js';
import { Database } from '../database/index.js';
import { Note } from '../note/index.js';
import { UserData } from '../user/index.js';
import { JoinSplitProofInput } from './proof_input.js';
export declare class PaymentProofCreator {
    private prover;
    private noteAlgos;
    private txFactory;
    constructor(prover: JoinSplitProver, noteAlgos: NoteAlgorithms, worldState: WorldState, grumpkin: Grumpkin, db: Database);
    createProofInput(user: UserData, inputNotes: Note[], privateInput: bigint, recipientPrivateOutput: bigint, senderPrivateOutput: bigint, publicInput: bigint, publicOutput: bigint, assetId: number, newNoteOwner: GrumpkinAddress | undefined, newNoteOwnerAccountRequired: boolean, publicOwner: EthAddress | undefined, spendingPublicKey: GrumpkinAddress, allowChain: number): Promise<{
        signingData: Buffer;
        tx: import("@polyaztec/barretenberg/client_proofs").JoinSplitTx;
        viewingKeys: import("@polyaztec/barretenberg/viewing_key").ViewingKey[];
        partialStateSecretEphPubKey: GrumpkinAddress | undefined;
    }>;
    createProof(user: UserData, { tx, signature, viewingKeys }: JoinSplitProofInput, txRefNo: number, timeout?: number): Promise<{
        tx: CorePaymentTx;
        proofData: ProofData;
        offchainTxData: OffchainJoinSplitData;
        outputNotes: Note[];
    }>;
}
//# sourceMappingURL=payment_proof_creator.d.ts.map