import { ContractFunctionInteraction, DeployMethod, type DeployOptions, type NoWait, type SendInteractionOptions, type WaitOpts } from '@aztec/aztec.js/contracts';
import { type AztecNode } from '@aztec/aztec.js/node';
import { type OffchainEffect, type ProvingStats, Tx, TxHash, type TxReceipt } from '@aztec/stdlib/tx';
import type { TestWallet } from './test_wallet.js';
export type ProvenTxSendOpts = {
    wait?: NoWait | WaitOpts;
};
export type ProvenTxSendReturn<T extends NoWait | WaitOpts | undefined> = T extends NoWait ? TxHash : TxReceipt;
export declare class ProvenTx extends Tx {
    private node;
    offchainEffects: OffchainEffect[];
    stats?: ProvingStats | undefined;
    constructor(node: AztecNode, tx: Tx, offchainEffects: OffchainEffect[], stats?: ProvingStats | undefined);
    send(options?: Omit<ProvenTxSendOpts, 'wait'>): Promise<TxReceipt>;
    send<W extends ProvenTxSendOpts['wait']>(options: ProvenTxSendOpts & {
        wait: W;
    }): Promise<ProvenTxSendReturn<W>>;
    private contextualizeError;
}
export declare function proveInteraction(wallet: TestWallet, interaction: ContractFunctionInteraction | DeployMethod, options: SendInteractionOptions | DeployOptions): Promise<ProvenTx>;
/**
 * Extends AztecNode via declaration merging so instances can be used wherever AztecNode is expected.
 * The actual method forwarding is handled by a Proxy in the class constructor.
 */
export interface AztecNodeProxy extends AztecNode {
}
/**
 * Mutable wrapper around an AztecNode that forwards all calls to the current target.
 * Allows swapping the underlying node at runtime via updateTargetNode, which is useful
 * for tests that need to redirect a wallet from one node to another without recreating it.
 */
export declare class AztecNodeProxy {
    private target;
    constructor(target: AztecNode);
    /**
     * Updates the underlying node that this reference points to.
     * @param node - The new node to forward calls to.
     */
    updateTargetNode(node: AztecNode): void;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LXdhbGxldC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixLQUFLLGFBQWEsRUFFbEIsS0FBSyxNQUFNLEVBQ1gsS0FBSyxzQkFBc0IsRUFDM0IsS0FBSyxRQUFRLEVBRWQsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXRHLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE1BQU0sTUFBTSxnQkFBZ0IsR0FBRztJQUM3QixJQUFJLENBQUMsRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDO0NBQzFCLENBQUM7QUFFRixNQUFNLE1BQU0sa0JBQWtCLENBQUMsQ0FBQyxTQUFTLE1BQU0sR0FBRyxRQUFRLEdBQUcsU0FBUyxJQUFJLENBQUMsU0FBUyxNQUFNLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUVoSCxxQkFBYSxRQUFTLFNBQVEsRUFBRTtJQUU1QixPQUFPLENBQUMsSUFBSTtJQUVMLGVBQWUsRUFBRSxjQUFjLEVBQUU7SUFDakMsS0FBSyxDQUFDO0lBSmYsWUFDVSxJQUFJLEVBQUUsU0FBUyxFQUN2QixFQUFFLEVBQUUsRUFBRSxFQUNDLGVBQWUsRUFBRSxjQUFjLEVBQUUsRUFDakMsS0FBSyxDQUFDLDBCQUFjLEVBRzVCO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsSUFBSSxDQUFDLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEdBQUc7UUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQWVsSCxPQUFPLENBQUMsa0JBQWtCO0NBVTNCO0FBRUQsd0JBQXNCLGdCQUFnQixDQUNwQyxNQUFNLEVBQUUsVUFBVSxFQUNsQixXQUFXLEVBQUUsMkJBQTJCLEdBQUcsWUFBWSxFQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEdBQUcsYUFBYSxxQkFJaEQ7QUFFRDs7O0dBR0c7QUFFSCxNQUFNLFdBQVcsY0FBZSxTQUFRLFNBQVM7Q0FBRztBQUVwRDs7OztHQUlHO0FBRUgscUJBQWEsY0FBYztJQUNiLE9BQU8sQ0FBQyxNQUFNO0lBQTFCLFlBQW9CLE1BQU0sRUFBRSxTQUFTLEVBWXBDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBRXRDO0NBQ0YifQ==