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.

Last updated