Skip to main content

IRegistrableModule

Title: IRegistrableModule

Author: amser

Canonical registration interface for all registrable modules.

This interface allows PaymentProcessor to register any module type (subscriptions, credits, hybrid, etc.) without understanding module semantics. The processor only enforces:

  • Permit2 signature validation
  • Permit binding to module requirements
  • Signature consumption Modules define:
  • What permit parameters are required
  • How to initialize execution state
  • What registration means for their module type

Functions

registrationContext

Returns the expected permit parameters for registration.

Used by PaymentProcessor to validate Permit2 binding. Module defines what token and minimum amount are required.

function registrationContext(
uint256 planId,
address subscriber
)
external
view
returns (address token, uint256 minAmount);

Parameters

NameTypeDescription
planIduint256Module-specific plan identifier (e.g., subscription plan ID)
subscriberaddressAddress of the subscriber/owner

Returns

NameTypeDescription
tokenaddressToken address that must be permitted
minAmountuint256Minimum amount that must be permitted

registerExecution

Registers a new executable entity in the module.

Called after Permit2 signature is consumed and validated. Module initializes execution state but does not perform any payment.

function registerExecution(
address subscriber,
uint256 planId,
uint256 executionBudget,
uint256 allowanceExpiry
)
external
returns (uint256 id);

Parameters

NameTypeDescription
subscriberaddressAddress of the subscriber/owner
planIduint256Module-specific plan identifier
executionBudgetuint256Number of executions allowed
allowanceExpiryuint256When the delegated allowance expires

Returns

NameTypeDescription
iduint256Module-specific execution identifier