Skip to content

Interface Mapping

Function-level correspondence between ERC-7540 and Vault-K-NO.

ERC-7540 Function Vault-K-NO Equivalent Compatibility
requestRedeem(shares, receiver, owner) requestWithdraw(shares, receiver) Direct
pendingRedeemRequest(requestId, owner) getRequest(requestId) — returns full Request struct Direct
claimableRedeemRequest(requestId, owner) Determined at keeper processing time Partial — see Divergence
redeem(shares, receiver, owner) Implicit in processWithdrawals() Partial — see Divergence
cancelRedeemRequest(requestId) cancelWithdraw(requestId) Direct
maxRedeemRequest(owner) remainingDailyLiquidity() as proxy Partial — see Divergence
RedeemRequest event WithdrawRequested event Direct — same semantics

Direct-Compatible Functions

The following functions are structurally equivalent and can be mapped 1:1 in a wrapper:

// ERC-7540 → Vault-K-NO

function requestRedeem(uint256 shares, address receiver, address owner)
     requestWithdraw(shares, receiver)

function pendingRedeemRequest(uint256 requestId, address owner)
     getRequest(requestId)   // returns Request { owner, receiver, shares, timestamp }

function cancelRedeemRequest(uint256 requestId)
     cancelWithdraw(requestId)

Partially-Compatible Functions

These require additional handling in a 7540 wrapper:

// claimableRedeemRequest — not deterministic until keeper processes
// A wrapper should return 0 until WithdrawProcessed event is observed for this requestId

// redeem — fulfillment is keeper-controlled, not caller-triggered
// A wrapper cannot expose a synchronous redeem() — document this clearly

// maxRedeemRequest — real-time proxy only
// A wrapper should expose remainingDailyLiquidity() and document it as non-binding

See Points of Divergence for full explanations.