IEscrow
The IEscrow interface defines the data structures and function signatures used by the Escrow contract. It helps external contracts and interfaces interact with the escrow in a standardized manner.
interface IEscrow {
/* ============ Structs ============ */
struct Range {
uint256 min; // Minimum value
uint256 max; // Maximum value
}
struct Deposit {
address depositor;
IERC20 token;
uint256 amount;
Range intentAmountRange;
bool acceptingIntents;
uint256 remainingDeposits;
uint256 outstandingIntentAmount;
bytes32[] intentHashes;
}
struct Currency {
bytes32 code; // keccak256 hash of the currency code
uint256 conversionRate; // Conversion rate of deposit token to fiat currency
}
struct DepositVerifierData {
address intentGatingService; // Optional gating service for verifying off-chain eligibility
string payeeDetails; // Payee details (hash or raw) that the verifier can parse
bytes data; // Additional data needed for payment verification
}
struct Intent {
address owner;
address to;
uint256 depositId;
uint256 amount;
uint256 timestamp;
address paymentVerifier;
bytes32 fiatCurrency;
uint256 conversionRate;
}
struct VerifierDataView {
address verifier;
DepositVerifierData verificationData;
Currency[] currencies;
}
struct DepositView {
uint256 depositId;
Deposit deposit;
uint256 availableLiquidity;
VerifierDataView[] verifiers;
}
struct IntentView {
bytes32 intentHash;
Intent intent;
DepositView deposit;
}
function getDepositFromIds(uint256[] memory _depositIds) external view returns (DepositView[] memory depositArray);
}
Structs
-
Range Defines a minimum and maximum value. Used for
intentAmountRange
. -
Deposit Describes all state and configuration data for a given deposit:
-
address depositor
-- Who created the deposit. -
IERC20 token
-- Which token (ERC-20) is deposited. -
uint256 amount
-- How many tokens are locked in escrow. -
Range intentAmountRange
-- The minimum and maximum each intent can claim. -
bool acceptingIntents
-- Whether new intents can be created for this deposit. -
uint256 remainingDeposits
-- The current unclaimed amount. -
uint256 outstandingIntentAmount
-- Total amount locked by open/active intents. -
bytes32[] intentHashes
-- An array of active intent identifiers.
-
-
Currency
-
bytes32 code
-- The currency code hashed via keccak256 (e.g."USD" -> keccak256("USD")
). -
uint256 conversionRate
-- Conversion between deposit token and this currency.
-
-
DepositVerifierData
-
address intentGatingService
-- Optional gating service that signs off on user eligibility for an intent. -
string payeeDetails
-- The string that identifies the payee or payee details. -
bytes data
-- Additional proof or attestation data required for the payment verifier.
-
-
Intent
-
address owner
-- The address that initiated the intent (the potential off-chain payer). -
address to
-- Address that will receive on-chain funds if the intent is fulfilled. -
uint256 depositId
-- Reference to which deposit this intent targets. -
uint256 amount
-- Amount of the deposit's token to be claimed. -
uint256 timestamp
-- Block timestamp when the intent was created. -
address paymentVerifier
-- Which verifier is used to check off-chain payment. -
bytes32 fiatCurrency
-- The keccak256 hash of the off-chain currency code (e.g.,USD
). -
uint256 conversionRate
-- The rate used for off-chain-to-on-chain value conversion.
-
-
VerifierDataView
- Binds a verifier address to its DepositVerifierData and an array of Currency structures.
-
DepositView
-
uint256 depositId
-
Deposit deposit
-- The core deposit data. -
uint256 availableLiquidity
-- The effective unclaimed deposit (accounting for prunable/expired intents). -
VerifierDataView[] verifiers
-- An array of verifiers and their supported currencies.
-
-
IntentView
-
bytes32 intentHash
-- Unique identifier for the intent. -
Intent intent
-- The Intent struct. -
DepositView deposit
-- Information about the deposit that the intent is targeting.
-