Module: Solana::Ruby::Kit::RpcParsedTypes
- Extended by:
- T::Sig
- Defined in:
- lib/solana/ruby/kit/rpc_parsed_types.rb,
lib/solana/ruby/kit/rpc_parsed_types/vote_account.rb,
lib/solana/ruby/kit/rpc_parsed_types/nonce_account.rb,
lib/solana/ruby/kit/rpc_parsed_types/stake_account.rb,
lib/solana/ruby/kit/rpc_parsed_types/token_account.rb,
lib/solana/ruby/kit/rpc_parsed_types/address_lookup_table.rb
Constant Summary collapse
- VoteState =
T.let( Struct.new(:node, :authorized_voter, :authorized_withdrawer, :commission, :votes, :root_slot, :epoch_credits, keyword_init: true), T.untyped )
- ParsedVoteAccount =
T.let( Struct.new(:program, :parsed, :space, keyword_init: true), T.untyped )
- NonceAccountData =
T.let( Struct.new(:authority, :blockhash, :fee_calculator, keyword_init: true), T.untyped )
- ParsedNonceAccount =
T.let( Struct.new(:program, :parsed, :space, keyword_init: true), T.untyped )
- StakeDelegation =
T.let( Struct.new(:stake, :voter, :activation_epoch, :deactivation_epoch, :warmup_cooldown_rate, keyword_init: true), T.untyped )
- StakeAccountData =
T.let( Struct.new(:type, :stake, :meta, keyword_init: true), T.untyped )
- ParsedStakeAccount =
T.let( Struct.new(:program, :parsed, :space, keyword_init: true), T.untyped )
- TokenAmount =
Parsed SPL Token amount.
T.let( Struct.new(:amount, :decimals, :ui_amount, :ui_amount_string, keyword_init: true), T.untyped )
- TokenAccountInfo =
Parsed SPL Token account data (inside jsonParsed account info).
T.let( Struct.new(:is_native, :mint, :owner, :state, :token_amount, keyword_init: true), T.untyped )
- ParsedTokenAccount =
Full parsed token account wrapper.
T.let( Struct.new(:program, :parsed, :space, keyword_init: true), T.untyped )
- AddressLookupTableData =
T.let( Struct.new(:deactivation_slot, :last_extended_slot, :addresses, keyword_init: true), T.untyped )
- ParsedAddressLookupTable =
T.let( Struct.new(:program, :parsed, :space, keyword_init: true), T.untyped )
Class Method Summary collapse
- .parse_address_lookup_table(raw) ⇒ Object
- .parse_nonce_account(raw) ⇒ Object
- .parse_stake_account(raw) ⇒ Object
- .parse_token_account(raw) ⇒ Object
- .parse_vote_account(raw) ⇒ Object
Class Method Details
.parse_address_lookup_table(raw) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/solana/ruby/kit/rpc_parsed_types/address_lookup_table.rb', line 20 def parse_address_lookup_table(raw) info = raw.dig('parsed', 'info') || {} ParsedAddressLookupTable.new( program: raw['program'], space: raw['space'], parsed: AddressLookupTableData.new( deactivation_slot: info['deactivationSlot'] ? Kernel.Integer(info['deactivationSlot']) : nil, last_extended_slot: info['lastExtendedSlot'] ? Kernel.Integer(info['lastExtendedSlot']) : nil, addresses: Kernel.Array(info['addresses']) ) ) end |
.parse_nonce_account(raw) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/solana/ruby/kit/rpc_parsed_types/nonce_account.rb', line 20 def parse_nonce_account(raw) info = raw.dig('parsed', 'info') || {} ParsedNonceAccount.new( program: raw['program'], space: raw['space'], parsed: NonceAccountData.new( authority: info['authority'], blockhash: info['blockhash'], fee_calculator: info['feeCalculator'] ) ) end |
.parse_stake_account(raw) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/solana/ruby/kit/rpc_parsed_types/stake_account.rb', line 26 def parse_stake_account(raw) parsed = raw['parsed'] || {} info = parsed['info'] || {} stake = info['stake'] || {} deleg = stake.dig('delegation') || {} delegation = StakeDelegation.new( stake: deleg['stake'] ? Kernel.Integer(deleg['stake']) : nil, voter: deleg['voter'], activation_epoch: deleg['activationEpoch'] ? Kernel.Integer(deleg['activationEpoch']) : nil, deactivation_epoch: deleg['deactivationEpoch'] ? Kernel.Integer(deleg['deactivationEpoch']) : nil, warmup_cooldown_rate: deleg['warmupCooldownRate']&.to_f ) ParsedStakeAccount.new( program: raw['program'], space: raw['space'], parsed: StakeAccountData.new( type: parsed['type'], stake: delegation, meta: info['meta'] ) ) end |
.parse_token_account(raw) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/solana/ruby/kit/rpc_parsed_types/token_account.rb', line 28 def parse_token_account(raw) info_raw = raw.dig('parsed', 'info') || {} ta_raw = info_raw['tokenAmount'] || {} info = TokenAccountInfo.new( is_native: info_raw['isNative'], mint: info_raw['mint'], owner: info_raw['owner'], state: info_raw['state'], token_amount: TokenAmount.new( amount: ta_raw['amount'], decimals: Kernel.Integer(ta_raw.fetch('decimals', 0)), ui_amount: ta_raw['uiAmount'], ui_amount_string: ta_raw['uiAmountString'] ) ) ParsedTokenAccount.new( program: raw['program'], parsed: info, space: raw['space'] ) end |
.parse_vote_account(raw) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/solana/ruby/kit/rpc_parsed_types/vote_account.rb', line 21 def parse_vote_account(raw) info = raw.dig('parsed', 'info') || {} ParsedVoteAccount.new( program: raw['program'], space: raw['space'], parsed: VoteState.new( node: info['nodePubkey'], authorized_voter: info['authorizedVoters'], authorized_withdrawer: info['authorizedWithdrawer'], commission: info['commission'] ? Kernel.Integer(info['commission']) : nil, votes: info['votes'], root_slot: info['rootSlot'] ? Kernel.Integer(info['rootSlot']) : nil, epoch_credits: info['epochCredits'] ) ) end |