Module: Solana::Ruby::Kit::Accounts

Extended by:
T::Sig
Defined in:
lib/solana/ruby/kit/accounts/account.rb,
lib/solana/ruby/kit/accounts/maybe_account.rb

Defined Under Namespace

Classes: Account, BaseAccount, MaybeAccount

Constant Summary collapse

BASE_ACCOUNT_SIZE =

The number of bytes required to store the on-chain account header (lamports, owner, executable flag, rent epoch, and padding). Mirrors TypeScript’s ‘BASE_ACCOUNT_SIZE = 128`.

T.let(128, Integer)
EncodedAccount =

Convenience alias for an account whose data is still raw bytes. Mirrors TypeScript’s ‘EncodedAccount<TAddress>`.

T.type_alias {  }

Class Method Summary collapse

Class Method Details

.assert_account_exists!(maybe_account) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/solana/ruby/kit/accounts/maybe_account.rb', line 64

def ()
  return if .exists

  Kernel.raise SolanaError.new(
    :SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND,
    address: .address.value
  )
end

.assert_accounts_exist!(maybe_accounts) ⇒ Object



76
77
78
79
80
81
82
83
84
# File 'lib/solana/ruby/kit/accounts/maybe_account.rb', line 76

def assert_accounts_exist!(maybe_accounts)
  missing = maybe_accounts.reject(&:exists).map { |a| a.address.value }
  return if missing.empty?

  Kernel.raise SolanaError.new(
    :SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND,
    addresses: missing
  )
end

.existing_account(account) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/solana/ruby/kit/accounts/maybe_account.rb', line 35

def ()
  MaybeAccount.new(
    exists:          true,
    address:         .address,
    data:            .data,
    executable:      .executable,
    lamports:        .lamports,
    program_address: .program_address,
    space:           .space
  )
end

.missing_account(address) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/solana/ruby/kit/accounts/maybe_account.rb', line 49

def (address)
  MaybeAccount.new(
    exists:          false,
    address:         address,
    data:            nil,
    executable:      nil,
    lamports:        nil,
    program_address: nil,
    space:           nil
  )
end