Module: Solana::Ruby::Kit::Instructions

Extended by:
T::Sig
Defined in:
lib/solana/ruby/kit/instructions/roles.rb,
lib/solana/ruby/kit/instructions/accounts.rb,
lib/solana/ruby/kit/instructions/instruction.rb

Defined Under Namespace

Modules: AccountRole Classes: AccountLookupMeta, AccountMeta, Instruction

Class Method Summary collapse

Class Method Details

.assert_instruction_for_program!(instruction, program_address) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/solana/ruby/kit/instructions/instruction.rb', line 33

def assert_instruction_for_program!(instruction, program_address)
  return if instruction_for_program?(instruction, program_address)

  Kernel.raise SolanaError.new(
    :SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS,
    expected_program_address: program_address.value,
    actual_program_address:   instruction.program_address.value
  )
end

.assert_instruction_with_accounts!(instruction) ⇒ Object



53
54
55
# File 'lib/solana/ruby/kit/instructions/instruction.rb', line 53

def assert_instruction_with_accounts!(instruction)
  Kernel.raise SolanaError.new(:SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS) unless instruction_with_accounts?(instruction)
end

.assert_instruction_with_data!(instruction) ⇒ Object



67
68
69
# File 'lib/solana/ruby/kit/instructions/instruction.rb', line 67

def assert_instruction_with_data!(instruction)
  Kernel.raise SolanaError.new(:SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA) unless instruction_with_data?(instruction)
end

.instruction_for_program?(instruction, program_address) ⇒ Boolean

Returns:



26
27
28
# File 'lib/solana/ruby/kit/instructions/instruction.rb', line 26

def instruction_for_program?(instruction, program_address)
  instruction.program_address == program_address
end

.instruction_with_accounts?(instruction) ⇒ Boolean

Returns:



46
47
48
# File 'lib/solana/ruby/kit/instructions/instruction.rb', line 46

def instruction_with_accounts?(instruction)
  !instruction.accounts.nil? && !T.must(instruction.accounts).empty?
end

.instruction_with_data?(instruction) ⇒ Boolean

Returns:



60
61
62
# File 'lib/solana/ruby/kit/instructions/instruction.rb', line 60

def instruction_with_data?(instruction)
  !instruction.data.nil?
end

.readonly_account(address) ⇒ Object



26
27
28
# File 'lib/solana/ruby/kit/instructions/accounts.rb', line 26

def (address)
  AccountMeta.new(address: address, role: AccountRole::READONLY)
end

.readonly_lookup_account(address, lookup_table_address:, address_index:) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/solana/ruby/kit/instructions/accounts.rb', line 61

def (address, lookup_table_address:, address_index:)
  AccountLookupMeta.new(
    address: address,
    address_index: address_index,
    lookup_table_address: lookup_table_address,
    role: AccountRole::READONLY
  )
end

.readonly_signer_account(address) ⇒ Object



38
39
40
# File 'lib/solana/ruby/kit/instructions/accounts.rb', line 38

def (address)
  AccountMeta.new(address: address, role: AccountRole::READONLY_SIGNER)
end

.writable_account(address) ⇒ Object



32
33
34
# File 'lib/solana/ruby/kit/instructions/accounts.rb', line 32

def (address)
  AccountMeta.new(address: address, role: AccountRole::WRITABLE)
end

.writable_lookup_account(address, lookup_table_address:, address_index:) ⇒ Object



71
72
73
74
75
76
77
78
# File 'lib/solana/ruby/kit/instructions/accounts.rb', line 71

def (address, lookup_table_address:, address_index:)
  AccountLookupMeta.new(
    address: address,
    address_index: address_index,
    lookup_table_address: lookup_table_address,
    role: AccountRole::WRITABLE
  )
end

.writable_signer_account(address) ⇒ Object



44
45
46
# File 'lib/solana/ruby/kit/instructions/accounts.rb', line 44

def (address)
  AccountMeta.new(address: address, role: AccountRole::WRITABLE_SIGNER)
end