Module: Mpp::Methods::Evm
- Defined in:
- lib/mpp/methods/evm.rb,
lib/mpp/methods/evm/assets.rb,
lib/mpp/methods/evm/evm_method.rb,
lib/mpp/methods/evm/authorization.rb,
lib/mpp/methods/evm/charge_intent.rb
Defined Under Namespace
Modules: Assets, Authorization Classes: ChargeIntent, EvmMethod
Class Method Summary collapse
-
.charge(currency:, recipient:, x402:, authorization: nil, chain_id: nil, decimals: nil) ⇒ Object
Factory for a server-side EVM charge method with inline x402 exact support.
Class Method Details
.charge(currency:, recipient:, x402:, authorization: nil, chain_id: nil, decimals: nil) ⇒ Object
Factory for a server-side EVM charge method with inline x402 exact support.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/mpp/methods/evm.rb', line 13 def self.charge(currency:, recipient:, x402:, authorization: nil, chain_id: nil, decimals: nil) resolved = Assets.resolve( currency, authorization: , chain_id: chain_id, decimals: decimals ) = normalize_x402(x402) charge_intent = ChargeIntent.new( authorization: resolved.fetch(:authorization), facilitator: X402::Facilitator.resolve(.fetch(:facilitator)), max_timeout_seconds: .fetch(:max_timeout_seconds), route_binding: .fetch(:route_binding) ) method = EvmMethod.new( currency: resolved.fetch(:address), recipient: recipient, decimals: resolved.fetch(:decimals), chain_id: resolved.fetch(:chain_id), authorization: resolved.fetch(:authorization), x402: ) method.intents = {"charge" => charge_intent} method end |