import { type Account, type AccountContract } from '@aztec/aztec.js/account';
import { type CallIntent, type ContractFunctionInteractionCallIntent, type IntentInnerHash, SetPublicAuthwitContractInteraction } from '@aztec/aztec.js/authorization';
import type { AztecNode } from '@aztec/aztec.js/node';
import { AccountManager, type SendOptions } from '@aztec/aztec.js/wallet';
import { TxSimulationResultWithAppOffset } from '@aztec/aztec.js/wallet';
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
import type { NotesFilter } from '@aztec/pxe/client/lazy';
import { type PXEConfig } from '@aztec/pxe/config';
import { PXE, type PXECreationOptions } from '@aztec/pxe/server';
import { AuthWitness } from '@aztec/stdlib/auth-witness';
import { AztecAddress } from '@aztec/stdlib/aztec-address';
import type { NoteDao } from '@aztec/stdlib/note';
import { type BlockHeader, type ContractOverrides, type TxHash, type TxReceipt } from '@aztec/stdlib/tx';
import { ExecutionPayload } from '@aztec/stdlib/tx';
import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
import type { AccountType } from '@aztec/wallets/embedded';
import { AztecNodeProxy, ProvenTx } from './utils.js';
/**
 * Data for generating an account.
 */
export interface AccountData {
    secret: Fr;
    salt: Fr;
    type?: AccountType;
    contract: AccountContract;
}
/**
 * Wallet implementation that stores accounts in memory and provides extra debugging
 * utilities
 * It is intended to be used in e2e tests.
 */
export declare class TestWallet extends BaseWallet {
    private readonly nodeRef;
    constructor(pxe: PXE, nodeRef: AztecNodeProxy);
    static create(node: AztecNode, overridePXEConfig?: Partial<PXEConfig>, options?: PXECreationOptions): Promise<TestWallet>;
    /**
     * Updates the underlying node that this wallet and its PXE communicate with.
     * @param node - The new AztecNode to forward all calls to.
     */
    updateNode(node: AztecNode): void;
    createSchnorrAccount(secret: Fr, salt: Fr, signingKey?: Fq): Promise<AccountManager>;
    createECDSARAccount(secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
    createECDSAKAccount(secret: Fr, salt: Fr, signingKey: Buffer): Promise<AccountManager>;
    /**
     * Builds contract overrides for all provided addresses by replacing their account contracts with stub implementations.
     */
    protected buildAccountOverrides(addresses: AztecAddress[]): Promise<ContractOverrides>;
    protected accounts: Map<string, {
        account: Account;
        type: AccountType;
    }>;
    private getTypeFor;
    private getStubArtifactFor;
    private getStubAccountFor;
    /**
     * Controls how the test wallet simulates transactions:
     * - `kernelless`: Skips kernel circuits but uses the real account contract. Default.
     * - `kernelless-override`: Skips kernels and replaces the account with a stub that doesn't do authwit validation.
     * - `full`: Uses real kernel circuits and real account contracts. Slow!
     */
    private simulationMode;
    setSimulationMode(mode: 'kernelless' | 'kernelless-override' | 'full'): void;
    setMinFeePadding(value?: number): void;
    protected getAccountFromAddress(address: AztecAddress): Promise<Account>;
    getAccounts(): Promise<{
        alias: string;
        item: AztecAddress;
    }[]>;
    createAccount(accountData?: AccountData): Promise<AccountManager>;
    lookupValidity(onBehalfOf: AztecAddress, intent: IntentInnerHash | CallIntent | ContractFunctionInteractionCallIntent, witness: AuthWitness): Promise<{
        isValidInPrivate: boolean;
        isValidInPublic: boolean;
    }>;
    setPublicAuthWit(from: AztecAddress, messageHashOrIntent: Fr | IntentInnerHash | CallIntent | ContractFunctionInteractionCallIntent, authorized: boolean): Promise<SetPublicAuthwitContractInteraction>;
    createAuthWit(from: AztecAddress, intent: IntentInnerHash | CallIntent | ContractFunctionInteractionCallIntent): Promise<AuthWitness>;
    protected simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions): Promise<TxSimulationResultWithAppOffset>;
    proveTx(exec: ExecutionPayload, opts: Omit<SendOptions, 'wait'>): Promise<ProvenTx>;
    getTxReceipt(txHash: TxHash): Promise<TxReceipt>;
    getNotes(filter: NotesFilter): Promise<NoteDao[]>;
    getSyncedBlockHeader(): Promise<BlockHeader>;
    sync(): Promise<void>;
    stop(): Promise<void>;
}
//# sourceMappingURL=data:application/json;base64, 