/// <reference types="node" resolution-mode="require"/>
import { EthAddress, GrumpkinAddress } from '@polyaztec/barretenberg/address';
import { AssetValue } from '@polyaztec/barretenberg/asset';
import { BridgeCallData } from '@polyaztec/barretenberg/bridge_call_data';
import { ProofId } from '@polyaztec/barretenberg/client_proofs';
import { Blake2s } from '@polyaztec/barretenberg/crypto';
import { WorldState } from '@polyaztec/barretenberg/world_state';
import { UserState as AccountState } from '../../user_state/index.js';
import { Database } from '../../database/index.js';
import { AccountProofRequestData } from './account_proof_request_data.js';
import { DefiProofRequestData } from './defi_proof_request_data.js';
import { PaymentProofRequestData } from './payment_proof_request_data.js';
export interface ProofRequestOptions {
    excludedNullifiers?: Buffer[];
    excludePendingNotes?: boolean;
    allowChain?: boolean;
    hideNoteCreator?: boolean;
}
export declare class ProofRequestDataFactory {
    private worldState;
    private db;
    private blake2s;
    constructor(worldState: WorldState, db: Database, blake2s: Blake2s);
    /**
     * accountState can be undefined when one of the following is true:
     *  - proofId === ProofId.DEPOSIT
     *  - inputNotes will be picked by AztecWalletProvider when creating proof inputs.
     */
    createPaymentProofRequestData(proofId: ProofId.DEPOSIT | ProofId.SEND | ProofId.WITHDRAW, accountPublicKey: GrumpkinAddress, spendingPublicKey: GrumpkinAddress, assetValue: AssetValue, fee: AssetValue, publicOwner: EthAddress, recipient: GrumpkinAddress, recipientSpendingKeyRequired: boolean, accountState?: AccountState, options?: ProofRequestOptions): Promise<PaymentProofRequestData>;
    createAccountProofRequestData(accountPublicKey: GrumpkinAddress, spendingPublicKey: GrumpkinAddress, alias: string, newAccountPublicKey: GrumpkinAddress, newSpendingPublicKey1: GrumpkinAddress, newSpendingPublicKey2: GrumpkinAddress, deposit: AssetValue, fee: AssetValue, depositor: EthAddress, accountState?: AccountState, options?: ProofRequestOptions): Promise<AccountProofRequestData>;
    createDefiProofRequestData(accountPublicKey: GrumpkinAddress, spendingPublicKey: GrumpkinAddress, bridgeCallData: BridgeCallData, assetValue: AssetValue, fee: AssetValue, accountState?: AccountState, options?: ProofRequestOptions): Promise<DefiProofRequestData>;
}
//# sourceMappingURL=proof_request_data_factory.d.ts.map