Module: Solana::Ruby::Kit::Rpc::Api::GetInflationReward

Extended by:
T::Sig
Included in:
Client
Defined in:
lib/solana/ruby/kit/rpc/api/get_inflation_reward.rb

Overview

Returns the inflation/staking reward for a list of addresses for an epoch. Mirrors TypeScript’s GetInflationRewardApi.getInflationReward.

Instance Method Summary collapse

Instance Method Details

#get_inflation_reward(addresses, commitment: nil, epoch: nil, min_context_slot: nil) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/solana/ruby/kit/rpc/api/get_inflation_reward.rb', line 34

def get_inflation_reward(addresses, commitment: nil, epoch: nil, min_context_slot: nil)
  addr_strings = addresses.map { |a| a.respond_to?(:value) ? a.value : a.to_s }
  config = {}
  config['commitment']      = commitment.to_s if commitment
  config['epoch']           = epoch           if epoch
  config['minContextSlot']  = min_context_slot if min_context_slot

  params = config.empty? ? [addr_strings] : [addr_strings, config]
  raw_list = transport.request('getInflationReward', params)

  raw_list.map do |entry|
    next nil if entry.nil?

    InflationReward.new(
      amount:         Kernel.Integer(entry['amount']),
      commission:     Kernel.Integer(entry['commission']),
      effective_slot: Kernel.Integer(entry['effectiveSlot']),
      epoch:          Kernel.Integer(entry['epoch']),
      post_balance:   Kernel.Integer(entry['postBalance'])
    )
  end
end