Module: Remitmd

Defined in:
lib/remitmd.rb,
lib/remitmd/a2a.rb,
lib/remitmd/http.rb,
lib/remitmd/mock.rb,
lib/remitmd/errors.rb,
lib/remitmd/keccak.rb,
lib/remitmd/models.rb,
lib/remitmd/signer.rb,
lib/remitmd/wallet.rb,
lib/remitmd/cli_signer.rb,
lib/remitmd/x402_client.rb,
lib/remitmd/x402_paywall.rb

Overview

remit.md Ruby SDK - universal payment protocol for AI agents.

Examples:

Direct payment

wallet = Remitmd::RemitWallet.new(private_key: ENV["REMITMD_PRIVATE_KEY"])
tx = wallet.pay("0xRecipient0000000000000000000000000000001", 1.50)
puts tx.tx_hash

Using MockRemit in tests

mock   = Remitmd::MockRemit.new
wallet = mock.wallet
wallet.pay("0x0000000000000000000000000000000000000001", 1.00)
mock.was_paid?("0x0000000000000000000000000000000000000001", 1.00) # => true

Defined Under Namespace

Modules: BountyStatus, ChainId, DepositStatus, EscrowStatus, Keccak, Signer, StreamStatus, TabStatus Classes: A2AArtifact, A2AArtifactPart, A2AClient, A2ATask, A2ATaskStatus, AgentCard, AgentExtension, AgentSkill, AllowanceExceededError, Balance, Bounty, BountySubmission, Budget, CliSigner, ContractAddresses, Deposit, Escrow, HttpTransport, IntentMandate, LinkResponse, MockRemit, MockSigner, MockTransport, Model, PermitSignature, PrivateKeySigner, RemitError, RemitWallet, Reputation, SpendingSummary, Stream, Tab, TabDebit, Transaction, TransactionList, WalletSettings, Webhook, X402Client, X402Paywall

Constant Summary collapse

VERSION =
"0.4.1"
CHAIN_CONFIG =

Chain configuration: maps chain names to (api_url, chain_id) pairs. Canonical keys use hyphens; underscored variants are accepted as aliases.

{
  "base"          => { url: "https://remit.md/api/v1",             chain_id: 8453 },
  "base-sepolia"  => { url: "https://testnet.remit.md/api/v1",    chain_id: 84532 },
  "base_sepolia"  => { url: "https://testnet.remit.md/api/v1",    chain_id: 84532 },
}.freeze
SECP256K1_P =

secp256k1 field prime p (constant - never changes)

OpenSSL::BN.new(
  "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F", 16
).freeze
SECP256K1_SQRT_EXP =

Precomputed (p + 1) / 4 - the modular square root exponent for p ≡ 3 (mod 4). Avoids BN division at runtime (which returns Integer on some OpenSSL versions).

OpenSSL::BN.new(
  "3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF0C", 16
).freeze
CONTRACT_TO_FLOW =

Contract name -> flow name for /permits/prepare.

{
  "router"  => "direct",
  "escrow"  => "escrow",
  "tab"     => "tab",
  "stream"  => "stream",
  "bounty"  => "bounty",
  "deposit" => "deposit",
  "relayer" => "direct",
}.freeze