base/lib/stellar/ledger_key.rb
require "stellar/convert"
require "stellar/dsl"
module Stellar
class LedgerKey
class << self
include Stellar::DSL
def switch_for_arm(name)
(@switch_by_arm ||= switches.invert).fetch(name)
end
def from(account_id:, **options)
field, value = options.first
case field
when nil
account(account_id: KeyPair(account_id).account_id)
when :offer_id
offer(seller_id: account_id, offer_id: Integer(value))
when :data_name
data(account_id: account_id, data_name: value.to_s)
when :asset
trust_line(account_id: account_id, asset: Asset(value).to_trust_line_asset)
when :balance_id
claimable_balance(balance_id: ClaimableBalanceID.v0(Stellar::Convert.from_hex(value.to_s)))
when :liquidity_pool_id
liquidity_pool(liquidity_pool_id: PoolID.from_xdr(value.to_s, :hex))
else
raise ArgumentError, "unknown option #{field} (not in :asset, :offer_id, :data_name, :balance_id)"
end
end
end
end
end