import { AptosConfig } from "../api/aptosConfig.js";
import { AccountAddress, AccountAddressInput } from "../core/accountAddress.js";
import { Ed25519PrivateKey, Signature } from "../core/crypto/index.js";
import { MultiEd25519PublicKey, MultiEd25519Signature } from "../core/crypto/multiEd25519.js";
import { AccountAuthenticatorMultiEd25519 } from "../transactions/authenticator/account.js";
import { AnyRawTransaction } from "../transactions/types.js";
import { HexInput, SigningScheme } from "../types/index.js";
import type { Account } from "./Account.js";
export interface MultiEd25519SignerConstructorArgs {
    publicKey: MultiEd25519PublicKey;
    signers: Ed25519PrivateKey[];
    address?: AccountAddressInput;
}
export interface VerifyMultiEd25519SignatureArgs {
    message: HexInput;
    signature: MultiEd25519Signature;
}
/**
 * Signer implementation for the Multi-Ed25519 authentication scheme.
 *
 * Note: This authentication scheme is a legacy authentication scheme.  Prefer using MultiKeyAccounts as a
 * MultiKeyAccount can support any type of signer, not just Ed25519.  Generating a signer instance does not
 * create the account on-chain.
 */
export declare class MultiEd25519Account implements Account {
    readonly publicKey: MultiEd25519PublicKey;
    readonly accountAddress: AccountAddress;
    readonly signingScheme = SigningScheme.MultiEd25519;
    /**
     * The signers used to sign messages.  These signers should correspond to public keys in the
     * MultiEd25519Account.  The number of signers should be equal to this.publicKey.threshold.
     * @group Implementation
     * @category Account (On-Chain Model)
     */
    readonly signers: Ed25519PrivateKey[];
    /**
     * An array of indices where for signer[i], signerIndicies[i] is the index of the corresponding public key in
     * publicKey.publicKeys.  Used to derive the right public key to use for verification.
     * @group Implementation
     * @category Account (On-Chain Model)
     */
    readonly signerIndices: number[];
    readonly signaturesBitmap: Uint8Array;
    constructor(args: MultiEd25519SignerConstructorArgs);
    /**
     * Verify the given message and signature with the public key.
     *
     * @param args.message raw message data in HexInput format
     * @param args.signature signed message Signature
     * @returns
     */
    verifySignature(args: VerifyMultiEd25519SignatureArgs): boolean;
    /**
     * Verify the given message and signature with the public key.
     *
     * MultiEd25519 signatures do not depend on chain state, so this function is
     * equivalent to the synchronous verifySignature method.
     *
     * @param args - The arguments for verifying the signature.
     * @param args.aptosConfig - The configuration object for connecting to the Aptos network
     * @param args.message - Raw message data in HexInput format.
     * @param args.signature - Signed message signature.
     * @returns A boolean indicating whether the signature is valid.
     * @group Implementation
     * @category Account (On-Chain Model)
     */
    verifySignatureAsync(args: {
        aptosConfig: AptosConfig;
        message: HexInput;
        signature: Signature;
        options?: {
            throwErrorWithReason?: boolean;
        };
    }): Promise<boolean>;
    /**
     * Sign a message using the account's Ed25519 private key.
     * @param message the signing message, as binary input
     * @return the AccountAuthenticator containing the signature, together with the account's public key
     */
    signWithAuthenticator(message: HexInput): AccountAuthenticatorMultiEd25519;
    /**
     * Sign a transaction using the account's Ed25519 private keys.
     * @param transaction the raw transaction
     * @return the AccountAuthenticator containing the signature of the transaction, together with the account's public key
     */
    signTransactionWithAuthenticator(transaction: AnyRawTransaction): AccountAuthenticatorMultiEd25519;
    /**
     * Sign the given message using the account's Ed25519 private keys.
     * @param message in HexInput format
     * @returns MultiEd25519Signature
     */
    sign(message: HexInput): MultiEd25519Signature;
    /**
     * Sign the given transaction using the available signing capabilities.
     * @param transaction the transaction to be signed
     * @returns Signature
     */
    signTransaction(transaction: AnyRawTransaction): MultiEd25519Signature;
}
//# sourceMappingURL=MultiEd25519Account.d.ts.map