import { EthAddress, GrumpkinAddress } from '@polyaztec/barretenberg/address';
import { BridgeCallData } from '@polyaztec/barretenberg/bridge_call_data';
import { JoinSplitTx, ProofId } from '@polyaztec/barretenberg/client_proofs';
import { Grumpkin } from '@polyaztec/barretenberg/ecc';
import { NoteAlgorithms } from '@polyaztec/barretenberg/note_algorithms';
import { WorldState } from '@polyaztec/barretenberg/world_state';
import { Database } from '../database/index.js';
import { Note } from '../note/index.js';
import { UserData } from '../user/index.js';
export declare class JoinSplitTxFactory {
    private noteAlgos;
    private worldState;
    private grumpkin;
    private db;
    constructor(noteAlgos: NoteAlgorithms, worldState: WorldState, grumpkin: Grumpkin, db: Database);
    createTx({ accountPrivateKey, accountPublicKey }: UserData, proofId: ProofId, assetId: number, inputNotes: Note[], spendingPublicKey: GrumpkinAddress, { publicValue, publicOwner, outputNoteValue1, outputNoteValue2, newNoteOwner, newNoteOwnerAccountRequired, bridgeCallData, defiDepositValue, allowChain, }?: {
        publicValue?: bigint | undefined;
        publicOwner?: EthAddress | undefined;
        outputNoteValue1?: bigint | undefined;
        outputNoteValue2?: bigint | undefined;
        newNoteOwner?: GrumpkinAddress | undefined;
        newNoteOwnerAccountRequired?: boolean | undefined;
        bridgeCallData?: BridgeCallData | undefined;
        defiDepositValue?: bigint | undefined;
        allowChain?: number | undefined;
    }): Promise<{
        tx: JoinSplitTx;
        viewingKeys: import("@polyaztec/barretenberg/viewing_key").ViewingKey[];
        partialStateSecretEphPubKey: GrumpkinAddress | undefined;
    }>;
    private getAccountPathAndIndex;
    private createNote;
    private createClaimNote;
    private createEphemeralPrivKey;
    private createEphemeralKeyPair;
}
//# sourceMappingURL=join_split_tx_factory.d.ts.map