import { AccountAuthenticatorAbstraction } from "../transactions/authenticator/account.js";
import { HexInput, MoveFunctionId } from "../types/index.js";
import { AbstractedAccount } from "./AbstractedAccount.js";
type DerivableAbstractedAccountArgs = {
    /**
     * The signer function signs transactions and returns the `authenticator` bytes in the `AbstractionAuthData`.
     *
     * @param digest - The SHA256 hash of the transaction signing message
     * @returns The `authenticator` bytes that can be used to verify the signature.
     */
    signer: (digest: HexInput) => Uint8Array;
    /**
     * The authentication function that will be used to verify the signature.
     *
     * @example
     * ```ts
     * const authenticationFunction = `${accountAddress}::permissioned_delegation::authenticate`;
     * ```
     */
    authenticationFunction: MoveFunctionId;
    /**
     * The abstract public key that is used to identify the account.
     * Depends on the use cases, most of the time it is the public key of the source wallet
     */
    abstractPublicKey: Uint8Array;
};
export declare class DerivableAbstractedAccount extends AbstractedAccount {
    /**
     * The abstract public key that is used to identify the account.
     * Depends on the use cases, most of the time it is the public key of the source wallet
     */
    readonly abstractPublicKey: Uint8Array;
    /**
     * The domain separator used to calculate the DAA account address.
     */
    static readonly ADDRESS_DOMAIN_SEPERATOR: number;
    constructor({ signer, authenticationFunction, abstractPublicKey }: DerivableAbstractedAccountArgs);
    /**
     * Compute the account address of the DAA
     * The DAA account address is computed by hashing the function info and the account identity
     * and appending the domain separator (5)
     *
     * @param functionInfo - The authentication function
     * @param accountIdentifier - The account identity
     * @returns The account address
     */
    static computeAccountAddress(functionInfo: string, accountIdentifier: Uint8Array): Uint8Array;
    signWithAuthenticator(message: HexInput): AccountAuthenticatorAbstraction;
}
export {};
//# sourceMappingURL=DerivableAbstractedAccount.d.ts.map