import { Version } from './crypto/interfaces/versioner'; import Sealer from './crypto/interfaces/sealer'; import { Address, PrivateKey, PublicKey, Signature } from './basicElements'; /** * A class representing an account. */ export declare class Account { privateKey: PrivateKey; publicKey: PublicKey; address: Address; version: Version; sealer: Sealer; private constructor(); /** * Initializes a new account object from a private key. * * @param key - The private key of the account. * @param version - The version of the account. * * @returns A new instance of the Account class. */ static fromPrivateKey(key: string | PrivateKey, version?: Version): Promise; /** * Generates a new account object. * * @param version - The version of the account. * * @returns A new instance of the Account class. */ static generate(version?: Version): Promise; /** * Signs a message. * * @remarks * This function signs a byte-encoded message with the account private key. * The message is first hashed and then signed. * Do not pass a digest to this function as it will be hashed twice. * * @param message - The byte array to sign. * * @returns A signature object. */ sign(message: Uint8Array): Promise; /** * Verifies a message signature. * * @remarks * This function verifies a byte-encoded message signature using the account's public key. * The message is first hashed and then the signature is verified against the hashed message. * Do not pass a digest to this function as it will be hashed twice. * * @param signature - The signature to verify. * @param message - The byte array that was signed. * * @returns A boolean indicating whether the signature is valid. */ verify(message: Uint8Array | string, signature: Signature): Promise; /** * Encodes the account to a serializable object. * * @remarks * The serializable object can be serialized to any format (JSON, YAML, XML, etc.) on any support (file, database, browser storage, etc.). * The keystore format is defined in the Massa standard format document: * [Massa Standard Format](https://github.com/massalabs/massa-standards/blob/main/wallet/file-format.md) * * @param password - The password to encrypt the private key. * @param salt - The salt to use for the encryption. If not provided, a random salt will be generated. * @param nonce - The nonce to use for the encryption. If not provided, a random nonce will be generated. * * @returns A serializable object. * * @throws If the password is not provided for V0 and V1 keystores. * @throws If the version is not supported. */ toKeyStore(password?: string, salt?: Uint8Array, nonce?: Uint8Array): Promise; /** * Decodes the account from a serializable object. * * @remarks * The serializable object can be serialized to any format (JSON, YAML, XML, etc.) on any support (file, database, browser storage, etc.). * The keystore format is defined in the Massa standard format document: * [Massa Standard Format](https://github.com/massalabs/massa-standards/blob/main/wallet/file-format.md) * * @param password - The password to decrypt the private key. * @param keystore - The serializable object to decode. * * @returns A new Account instance. * * @throws If the password is not provided for V0 and V1 keystores. * @throws If the version is not supported. */ static fromKeyStore(keystore: AccountKeyStore, password?: string): Promise; /** * Uses the environment variables to create an account. * * @param key - The environment variable key containing the private key. * * @remarks * The `PRIVATE_KEY` or the provided key is required in the environment variables. * * @returns An account instance. */ static fromEnv(key?: string): Promise; } export type AccountKeyStoreBase = { Address: string; Nickname: string; Salt: Uint8Array; Nonce: Uint8Array; CipheredData: Uint8Array; PublicKey: number[]; }; export type AccountV0KeyStore = AccountKeyStoreBase & { Version: Version.V0; }; export type AccountV1KeyStore = AccountKeyStoreBase & { Version: Version.V1; }; export type AccountKeyStore = AccountV0KeyStore | AccountV1KeyStore;