package com.r35157.libs.solana;

import org.jetbrains.annotations.NotNull;

/**
 * Represents basic information about a Solana account.
 *
 * <p>The address identifies the account that was queried. The owner identifies
 * the Solana program that owns the account. The account data is represented as
 * a Base64 encoded string, matching the encoding returned by the Solana RPC
 * account-info response.</p>
 *
 * <p>For normal wallet/system accounts, the data may be empty. Program-owned
 * accounts, token accounts, mint accounts and application-specific state
 * accounts may contain encoded account data.</p>
 *
 * @param address the Solana account address
 * @param owner the Solana program id that owns the account
 * @param data the account data encoded as Base64, or null if the account has no data
 */
public record SolanaAccountInfo(
        @NotNull ΩSolanaAddressΩ address,
        @NotNull ΩSolanaProgramIdΩ owner,
        @NotNull ΩBase64StringΩ data
) {
}