flashloan-rs 0.2.3

Minimal Multicall3 Flashloan Module
Documentation
/// @title Custom Errors
/// @notice SPDX-License-Identifier: MIT
/// @author asnared <https://github.com/abigger87>
/// @notice Wrappers for reverting with common error messages

#include "./Errors.huff"

// Error Constants
#define constant NOT_AUTHORIZED_ERROR = 0x4e4f545f415554484f52495a4544000000000000000000000000000000000000
#define constant NOT_AUTHORIZED_LENGTH = 0x0e

#define constant WRONG_FROM_ERROR = 0x57524f4e475f46524f4d00000000000000000000000000000000000000000000
#define constant WRONG_FROM_LENGTH = 0x0a

#define constant LENGTH_MISMATCH_ERROR = 0x4c454e4754485f4d49534d415443480000000000000000000000000000000000
#define constant LENGTH_MISMATCH_LENGTH = 0x0f

#define constant UNSAFE_RECIPIENT_ERROR = 0x554e534146455f524543495049454e5400000000000000000000000000000000
#define constant UNSAFE_RECIPIENT_LENGTH = 0x10

#define constant REENTRANCY_ERROR = 0x5245454e5452414e435900000000000000000000000000000000000000000000
#define constant REENTRANCY_LENGTH = 0x0a

#define constant DISPATCH_ERROR_MESSAGE = 0x44495350415443485f4552524f52000000000000000000000000000000000000
#define constant DISPATCH_LENGTH = 0x0e

#define constant INVALID_RECIPIENT_ERROR = 0x494e56414c49445f524543495049454e54000000000000000000000000000000
#define constant INVALID_RECIPIENT_LENGTH = 0x11

#define constant ALREADY_MINTED_ERROR = 0x414c52454144595f4d494e544544000000000000000000000000000000000000
#define constant ALREADY_MINTED_LENGTH = 0x0e

#define constant NOT_MINTED_ERROR = 0x4e4f545f4d494e54454400000000000000000000000000000000000000000000
#define constant NOT_MINTED_LENGTH = 0x0a

#define constant CREATE_FAILED_ERROR = 0x4352454154455f4641494c454400000000000000000000000000000000000000
#define constant CREATE_FAILED_LENGTH = 0x0d

#define constant OUT_OF_BOUNDS_ERROR = 0x4f55545f4f465f424f554e445300000000000000000000000000000000000000
#define constant OUT_OF_BOUNDS_LENGTH = 0x0d

#define constant INITIALIZATION_FAILED_ERROR = 0x494e495449414c495a4154494f4e5f4641494c45440000000000000000000000
#define constant INITIALIZATION_FAILED_LENGTH = 0x15

#define constant DEPLOYMENT_FAILED_ERROR = 0x4445504c4f594d454e545f4641494c4544000000000000000000000000000000
#define constant DEPLOYMENT_FAILED_LENGTH = 0x11

#define constant NON_CONTRACT_ERROR = 0x4e4f4e5f434f4e54524143540000000000000000000000000000000000000000
#define constant NON_CONTRACT_LENGTH = 0x0c

#define constant ZERO_ADDRESS_ERROR = 0x5a45524f5f414444524553530000000000000000000000000000000000000000
#define constant ZERO_ADDRESS_LENGTH = 0x0c

// Ownable Errors

#define constant ONLY_OWNER_ERROR = 0x4F4E4C595F4F574E455200000000000000000000000000000000000000000000
#define constant ONLY_OWNER_LENGTH = 0x0a

#define constant ONLY_PENDING_OWNER_ERROR = 0x4F4E4C595F50454E44494E475F4F574E45520000000000000000000000000000
#define constant ONLY_PENDING_OWNER_LENGTH = 0x12

#define constant ALREADY_OWNER_ERROR = 0x414C52454144595F4F574E455200000000000000000000000000000000000000
#define constant ALREADY_OWNER_LENGTH = 0x0d

// Merkle Distributor Errors

#define constant ALREADY_CLAIMED_ERROR = 0x414c52454144595f434c41494d45440000000000000000000000000000000000
#define constant ALREADY_CLAIMED_LENGTH = 0x0f

#define constant INVALID_PROOF_ERROR = 0x494e56414c49445f50524f4f4600000000000000000000000000000000000000
#define constant INVALID_PROOF_LENGTH = 0x0d

#define constant ZERO_SHARES_ERROR = 0x5a45524f5f534841524553000000000000000000000000000000000000000000
#define constant ZERO_SHARES_LENGTH = 0x0b

#define constant ZERO_ASSETS_ERROR = 0x5a45524f5f415353455453000000000000000000000000000000000000000000
#define constant ZERO_ASSETS_LENGTH = 0x0b

// Proxy Errors
// Unsupported Proxiable UUID 
#define constant ERC1967_UPGRADE_UNSUPPORTED_PROXIABLE_UUID = 0x756E737570706F727465642070726F786961626C655555494400000000000000
#define constant ERC1967_UPGRADE_UNSUPPORTED_PROXIABLE_UUID_LENGTH = 0x19

#define macro REVERT_UNSUPPORTED_PROXIABLE_UUID(condition) = {
    [ERC1967_UPGRADE_UNSUPPORTED_PROXIABLE_UUID]
    [ERC1967_UPGRADE_UNSUPPORTED_PROXIABLE_UUID_LENGTH]
    <condition>
    REQUIRE()
}

// Implementation not uups
#define constant ERC1967_UPGRADE_IMPLEMENTATION_NOT_UUPS = 0x6E657720696D706C656D656E746174696F6E206973206E6F7420555550530000
#define constant ERC1967_UPGRADE_IMPLEMENTATION_NOT_UUPS_LENGTH = 0x1e

#define macro REVERT_UPGRADE_IMPLEMENTATION_NOT_UUPS(condition) = {
    [ERC1967_UPGRADE_IMPLEMENTATION_NOT_UUPS]
    [ERC1967_UPGRADE_IMPLEMENTATION_NOT_UUPS_LENGTH]
    <condition>
    REQUIRE()
}


/// @notice Reverts with an "ZERO_ADDRESS" message if the condition is false
#define macro ZERO_ADDRESS(condition) = takes (0) returns (0) {
    [ZERO_ADDRESS_ERROR]            // ["ZERO_ADDRESS"]
    [ZERO_ADDRESS_LENGTH]           // [12 (length), "ZERO_ADDRESS"]
    <condition>                     // [condition, 12 (length), "ZERO_ADDRESS"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "NON_CONTRACT" message if the condition is false
#define macro NON_CONTRACT(condition) = takes (0) returns (0) {
    [NON_CONTRACT_ERROR]            // ["NON_CONTRACT"]
    [NON_CONTRACT_LENGTH]           // [12 (length), "NON_CONTRACT"]
    <condition>                     // [condition, 12 (length), "NON_CONTRACT"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "INITIALIZATION_FAILED" message if the condition is false
#define macro INITIALIZATION_FAILED(condition) = takes (0) returns (0) {
    [INITIALIZATION_FAILED_ERROR]   // ["INITIALIZATION_FAILED"]
    [INITIALIZATION_FAILED_LENGTH]  // [20 (length), "INITIALIZATION_FAILED"]
    <condition>                     // [condition, 20 (length), "INITIALIZATION_FAILED"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "DEPLOYMENT_FAILED" message if the condition is false
#define macro DEPLOYMENT_FAILED(condition) = takes (0) returns (0) {
    [DEPLOYMENT_FAILED_ERROR]       // ["DEPLOYMENT_FAILED"]
    [DEPLOYMENT_FAILED_LENGTH]      // [16 (length), "DEPLOYMENT_FAILED"]
    <condition>                     // [condition, 16 (length), "DEPLOYMENT_FAILED"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "ONLY_OWNER" message if the condition is false
#define macro ONLY_OWNER(condition) = takes (0) returns (0) {
    [ONLY_OWNER_ERROR]              // ["ONLY_OWNER"]
    [ONLY_OWNER_LENGTH]             // [10 (length), "ONLY_OWNER"]
    <condition>                     // [condition, 10 (length), "ONLY_OWNER"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "ONLY_PENDING_OWNER" message if the condition is false
#define macro ONLY_PENDING_OWNER(condition) = takes (0) returns (0) {
    [ONLY_PENDING_OWNER_ERROR]      // ["ONLY_PENDING_OWNER"]
    [ONLY_PENDING_OWNER_LENGTH]     // [18 (length), "ONLY_PENDING_OWNER"]
    <condition>                     // [condition, 18 (length), "ONLY_PENDING_OWNER"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "ALREADY_OWNER" message if the condition is false
#define macro ALREADY_OWNER(condition) = takes (0) returns (0) {
    [ALREADY_OWNER_ERROR]           // ["ALREADY_OWNER"]
    [ALREADY_OWNER_LENGTH]          // [13 (length), "ALREADY_OWNER"]
    <condition>                     // [condition, 13 (length), "ALREADY_OWNER"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "OUT_OF_BOUNDS" message if the condition is false
#define macro OUT_OF_BOUNDS(condition) = takes (0) returns (0) {
    [OUT_OF_BOUNDS_ERROR]           // ["OUT_OF_BOUNDS"]
    [OUT_OF_BOUNDS_LENGTH]          // [13 (length), "OUT_OF_BOUNDS"]
    <condition>                     // [condition, 13 (length), "OUT_OF_BOUNDS"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "ZERO_ASSETS" message if the condition is false
#define macro ZERO_ASSETS(condition) = takes (0) returns (0) {
    [ZERO_ASSETS_ERROR]             // ["ZERO_ASSETS"]
    [ZERO_ASSETS_LENGTH]            // [11 (length), "ZERO_ASSETS"]
    <condition>                     // [condition, 11 (length), "ZERO_ASSETS"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "CREATE_FAILED" message if the condition is false
#define macro CREATE_FAILED(condition) = takes (0) returns (0) {
    [CREATE_FAILED_ERROR]           // ["CREATE_FAILED"]
    [CREATE_FAILED_LENGTH]          // [13 (length), "CREATE_FAILED"]
    <condition>                     // [condition, 13 (length), "CREATE_FAILED"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "ZERO_SHARES" message if the condition is false
#define macro ZERO_SHARES(condition) = takes (0) returns (0) {
    [ZERO_SHARES_ERROR]             // ["ZERO_SHARES"]
    [ZERO_SHARES_LENGTH]            // [11 (length), "ZERO_SHARES"]
    <condition>                     // [condition, 11 (length), "ZERO_SHARES"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "ALREADY_CLAIMED" message if the condition is false
#define macro ALREADY_CLAIMED(condition) = takes (0) returns (0) {
    [ALREADY_CLAIMED_ERROR]         // ["ALREADY_CLAIMED"]
    [ALREADY_CLAIMED_LENGTH]        // [15 (length), "ALREADY_CLAIMED"]
    <condition>                     // [condition, 15 (length), "ALREADY_CLAIMED"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "INVALID_PROOF" message if the condition is false
#define macro INVALID_PROOF(condition) = takes (0) returns (0) {
    [INVALID_PROOF_ERROR]           // ["INVALID_PROOF"]
    [INVALID_PROOF_LENGTH]          // [13 (length), "INVALID_PROOF"]
    <condition>                     // [condition, 13 (length), "INVALID_PROOF"]
    REQUIRE()                       // []
}

/// @notice Reverts with an "NOT_AUTHORIZED" message if the condition is false
#define macro UNAUTHORIZED(condition) = takes (0) returns (0) {
    [NOT_AUTHORIZED_ERROR]      // ["NOT_AUTHORIZED"]
    [NOT_AUTHORIZED_LENGTH]     // [14 (length), "NOT_AUTHORIZED"]
    <condition>                 // [condition, 14 (length), "NOT_AUTHORIZED"]
    REQUIRE()                   // []
}

/// @notice Reverts with an "WRONG_FROM" message if the condition is false
#define macro WRONG_FROM(condition) = takes (0) returns (0) {
    [WRONG_FROM_ERROR]          // ["WRONG_FROM"]
    [WRONG_FROM_LENGTH]         // [10 (length), "WRONG_FROM"]
    <condition>                 // [condition, 10 (length), "WRONG_FROM"]
    REQUIRE()                   // []
}

/// @notice Reverts with an "LENGTH_MISMATCH" message if condition is false
#define macro LENGTH_MISMATCH(condition) = takes (0) returns (0) {
    [LENGTH_MISMATCH_ERROR]     // ["LENGTH_MISMATCH"]
    [LENGTH_MISMATCH_LENGTH]    // [15 (length), "LENGTH_MISMATCH"]
    <condition>                 // [condition, 15 (length), "LENGTH_MISMATCH"]
    REQUIRE()                   // []
}

/// @notice Reverts with an "UNSAFE_RECIPIENT" message if condition is false
#define macro UNSAFE_RECIPIENT(condition) = takes (0) returns (0) {
    [UNSAFE_RECIPIENT_ERROR]    // ["UNSAFE_RECIPIENT"]
    [UNSAFE_RECIPIENT_LENGTH]   // [16 (length), "UNSAFE_RECIPIENT"]
    <condition>                 // [condition, 16 (length), "UNSAFE_RECIPIENT"]
    REQUIRE()                   // []
}

/// @notice Reverts with an "ALREADY_MINTED" message if condition is false
#define macro ALREADY_MINTED(condition) = takes (0) returns (0) {
    [ALREADY_MINTED_ERROR]      // ["ALREADY_MINTED"]
    [ALREADY_MINTED_LENGTH]     // [14 (length), "ALREADY_MINTED"]
    <condition>                 // [condition, 14 (length), "ALREADY_MINTED"]
    REQUIRE()                   // []
}

/// @notice Reverts with an "NOT_MINTED" message if condition is false
#define macro NOT_MINTED(condition) = takes (0) returns (0) {
    [NOT_MINTED_ERROR]          // ["NOT_MINTED"]
    [NOT_MINTED_LENGTH]         // [10 (length), "NOT_MINTED"]
    <condition>                 // [condition, 10 (length), "NOT_MINTED"]
    REQUIRE()                   // []
}

/// @notice Reverts with a "INVALID_RECIPIENT" message if condition is false
#define macro INVALID_RECIPIENT(condition) = takes (0) returns (0) {
    [INVALID_RECIPIENT_ERROR]    // ["INVALID_RECIPIENT"]
    [INVALID_RECIPIENT_LENGTH]   // [17 (length), "INVALID_RECIPIENT"]
    <condition>                  // [condition, 17 (length), "INVALID_RECIPIENT"]
    REQUIRE()                    // []
}

/// @notice Reverts with a "REENTRANCY" message if condition is false
#define macro REENTRANCY(condition) = takes (0) returns (0) {
    [REENTRANCY_ERROR]          // ["REENTRANCY"]
    [REENTRANCY_LENGTH]         // [10 (length), "REENTRANCY"]
    <condition>                 // [condition, 10 (length), "REENTRANCY"]
    REQUIRE()                   // []
}

/// @notice Reverts with a "DISPATCH_ERROR" message if condition is false
#define macro DISPATCH_ERROR(condition) = takes (0) returns (0) {
    [DISPATCH_ERROR_MESSAGE]    // ["DISPATCH_ERROR"]
    [DISPATCH_LENGTH]           // [14 (length), "DISPATCH_ERROR"]
    <condition>                 // [condition, 14 (length), "DISPATCH_ERROR"]
    REQUIRE()                   // []
}