import { Fr } from '@aztec/foundation/fields';
import { CompleteAddress, GrumpkinPrivateKey, PXE } from '@aztec/types';
import { AccountWalletWithPrivateKey, DeployMethod, WaitOpts } from '../../index.js';
import { AccountContract, Salt } from '../index.js';
import { AccountInterface } from '../interface.js';
import { DeployAccountSentTx } from './deploy_account_sent_tx.js';
/**
 * Manages a user account. Provides methods for calculating the account's address, deploying the account contract,
 * and creating and registering the user wallet in the PXE Service.
 */
export declare class AccountManager {
    #private;
    private pxe;
    private encryptionPrivateKey;
    private accountContract;
    /** Deployment salt for the account contract. */
    readonly salt?: Fr;
    private completeAddress?;
    private encryptionPublicKey?;
    private deployMethod?;
    constructor(pxe: PXE, encryptionPrivateKey: GrumpkinPrivateKey, accountContract: AccountContract, saltOrAddress?: Salt | CompleteAddress);
    protected getEncryptionPublicKey(): Promise<import("@aztec/circuits.js").Point>;
    /**
     * Returns the entrypoint for this account as defined by its account contract.
     * @returns An entrypoint.
     */
    getAccount(): Promise<AccountInterface>;
    /**
     * Gets the calculated complete address associated with this account.
     * Does not require the account to be deployed or registered.
     * @returns The address, partial address, and encryption public key.
     */
    getCompleteAddress(): Promise<CompleteAddress>;
    /**
     * Returns a Wallet instance associated with this account. Use it to create Contract
     * instances to be interacted with from this account.
     * @returns A Wallet instance.
     */
    getWallet(): Promise<AccountWalletWithPrivateKey>;
    /**
     * Registers this account in the PXE Service and returns the associated wallet. Registering
     * the account on the PXE Service is required for managing private state associated with it.
     * Use the returned wallet to create Contract instances to be interacted with from this account.
     * @param opts - Options to wait for the account to be synched.
     * @returns A Wallet instance.
     */
    register(opts?: WaitOpts): Promise<AccountWalletWithPrivateKey>;
    /**
     * Returns the pre-populated deployment method to deploy the account contract that backs this account.
     * Typically you will not need this method and can call `deploy` directly. Use this for having finer
     * grained control on when to create, simulate, and send the deployment tx.
     * @returns A DeployMethod instance that deploys this account contract.
     */
    getDeployMethod(): Promise<DeployMethod<import("../../index.js").Contract>>;
    /**
     * Deploys the account contract that backs this account.
     * Uses the salt provided in the constructor or a randomly generated one.
     * Note that if the Account is constructed with an explicit complete address
     * it is assumed that the account contract has already been deployed and this method will throw.
     * Registers the account in the PXE Service before deploying the contract.
     * @returns A SentTx object that can be waited to get the associated Wallet.
     */
    deploy(): Promise<DeployAccountSentTx>;
    /**
     * Deploys the account contract that backs this account and awaits the tx to be mined.
     * Uses the salt provided in the constructor or a randomly generated one.
     * Note that if the Account is constructed with an explicit complete address
     * it is assumed that the account contract has already been deployed and this method will throw.
     * Registers the account in the PXE Service before deploying the contract.
     * @param opts - Options to wait for the tx to be mined.
     * @returns A Wallet instance.
     */
    waitDeploy(opts?: WaitOpts): Promise<AccountWalletWithPrivateKey>;
}
//# sourceMappingURL=index.d.ts.map