diff --git a/README.md b/README.md index 3103d77..c956733 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,9 @@ Smart contracts covered by this plugin are: | Ethereum | AppProxyUpgradeable | 0xae7ab96520de3a18e5e111b5eaab095312d7fe84| | Ethereum | RocketSwapRouter | 0x16d5a408e807db8ef7c578279beeee6b228f1c1c| | Ethereum | AdminUpgradeabilityProxy | 0xc874b064f465bdd6411d45734b56fac750cda29a| +| Ethereum | TransparentUpgradeableProxy | 0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599| +| Ethereum | ValidatorShareProxy | 0x857679d69fe50e7b722f94acd2629d80c355163d| +| Ethereum | TransparentUpgradeableProxy | 0x777777c9898d384f785ee44acfe945efdff5f3e0| ## Methods @@ -48,6 +51,16 @@ Methods covered by this plugin are: | RocketSwapRouter | 0x55362f4d | swapTo | | RocketSwapRouter | 0xa824ae8b | swapFrom | | AdminUpgradeabilityProxy | 0x3a4b66f1 | stake | +| TransparentUpgradeableProxy | 0xf532e86a | submit | +| TransparentUpgradeableProxy | 0xccc143b8 | requestWithdraw | +| TransparentUpgradeableProxy | 0x46e04a2f | claimTokens | +| ValidatorShareProxy | 0x6ab15071 | buyVoucher | +| ValidatorShareProxy | 0xc83ec04d | sellVoucher_new | +| TransparentUpgradeableProxy | 0x0c0a769b | supply | +| TransparentUpgradeableProxy | 0xf2b9fdb8 | supply | +| TransparentUpgradeableProxy | 0xf62256c7 | supply | +| TransparentUpgradeableProxy | 0xf3fef3a3 | withdraw | +| TransparentUpgradeableProxy | 0x69328dec | withdraw | ## Build diff --git a/src/contract.c b/src/contract.c index 93be2d9..990912a 100644 --- a/src/contract.c +++ b/src/contract.c @@ -15,6 +15,16 @@ static const uint8_t STAKEKIT_SUBMIT_ETH_LIDO_SELECTOR[SELECTOR_SIZE] = {0xa1, 0 static const uint8_t STAKEKIT_SWAP_TO_SELECTOR[SELECTOR_SIZE] = {0x55, 0x36, 0x2f, 0x4d}; static const uint8_t STAKEKIT_SWAP_FROM_SELECTOR[SELECTOR_SIZE] = {0xa8, 0x24, 0xae, 0x8b}; static const uint8_t STAKEKIT_STAKE_SELECTOR[SELECTOR_SIZE] = {0x3a, 0x4b, 0x66, 0xf1}; +static const uint8_t STAKEKIT_SUBMIT_MATIC_LIDO_SELECTOR[SELECTOR_SIZE] = {0xf5, 0x32, 0xe8, 0x6a}; +static const uint8_t STAKEKIT_REQUEST_WITHDRAW_SELECTOR[SELECTOR_SIZE] = {0xcc, 0xc1, 0x43, 0xb8}; +static const uint8_t STAKEKIT_CLAIM_TOKENS_SELECTOR[SELECTOR_SIZE] = {0x46, 0xe0, 0x4a, 0x2f}; +static const uint8_t STAKEKIT_BUY_VOUCHER_SELECTOR[SELECTOR_SIZE] = {0x6a, 0xb1, 0x50, 0x71}; +static const uint8_t STAKEKIT_SELL_VOUCHER_NEW_SELECTOR[SELECTOR_SIZE] = {0xc8, 0x3e, 0xc0, 0x4d}; +static const uint8_t STAKEKIT_MORPHO_SUPPLY_1_SELECTOR[SELECTOR_SIZE] = {0x0c, 0x0a, 0x76, 0x9b}; +static const uint8_t STAKEKIT_MORPHO_SUPPLY_2_SELECTOR[SELECTOR_SIZE] = {0xf2, 0xb9, 0xfd, 0xb8}; +static const uint8_t STAKEKIT_MORPHO_SUPPLY_3_SELECTOR[SELECTOR_SIZE] = {0xf6, 0x22, 0x56, 0xc7}; +static const uint8_t STAKEKIT_MORPHO_WITHDRAW_1_SELECTOR[SELECTOR_SIZE] = {0xf3, 0xfe, 0xf3, 0xa3}; +static const uint8_t STAKEKIT_MORPHO_WITHDRAW_2_SELECTOR[SELECTOR_SIZE] = {0x69, 0x32, 0x8d, 0xec}; // Array of all the different StakeKit selectors. const uint8_t *const STAKEKIT_SELECTORS[NUM_STAKEKIT_SELECTORS] = { @@ -25,6 +35,16 @@ const uint8_t *const STAKEKIT_SELECTORS[NUM_STAKEKIT_SELECTORS] = { STAKEKIT_SWAP_TO_SELECTOR, STAKEKIT_SWAP_FROM_SELECTOR, STAKEKIT_STAKE_SELECTOR, + STAKEKIT_SUBMIT_MATIC_LIDO_SELECTOR, + STAKEKIT_REQUEST_WITHDRAW_SELECTOR, + STAKEKIT_CLAIM_TOKENS_SELECTOR, + STAKEKIT_BUY_VOUCHER_SELECTOR, + STAKEKIT_SELL_VOUCHER_NEW_SELECTOR, + STAKEKIT_MORPHO_SUPPLY_1_SELECTOR, + STAKEKIT_MORPHO_SUPPLY_2_SELECTOR, + STAKEKIT_MORPHO_SUPPLY_3_SELECTOR, + STAKEKIT_MORPHO_WITHDRAW_1_SELECTOR, + STAKEKIT_MORPHO_WITHDRAW_2_SELECTOR, }; // Ask dummy address ETH diff --git a/src/handle_finalize.c b/src/handle_finalize.c index 0aee406..9b0aa75 100644 --- a/src/handle_finalize.c +++ b/src/handle_finalize.c @@ -11,6 +11,29 @@ void handle_finalize(void *parameters) { case CLAIM_SELF_APECOIN: msg->numScreens = 0; break; + case MORPHO_SUPPLY_1: + case MORPHO_SUPPLY_3: + msg->numScreens = 2; + msg->tokenLookup1 = context->contract_address_sent; + break; + case MORPHO_SUPPLY_2: + msg->numScreens = 1; + msg->tokenLookup1 = context->contract_address_sent; + break; + case MORPHO_WITHDRAW_1: + msg->numScreens = 1; + msg->tokenLookup2 = context->contract_address_received; + break; + case MORPHO_WITHDRAW_2: + msg->numScreens = 2; + msg->tokenLookup2 = context->contract_address_received; + break; + case CLAIM_TOKENS: + case SELL_VOUCHER_NEW: + msg->numScreens = 1; + context->decimals_sent = 0; + strlcpy(context->ticker_sent, DEFAULT_TICKER, sizeof(context->ticker_sent)); + break; case STAKE: msg->numScreens = 1; context->decimals_sent = DEFAULT_DECIMAL; @@ -35,6 +58,17 @@ void handle_finalize(void *parameters) { ROCKET_POOL_ETH_TICKER, sizeof(context->ticker_received)); break; + case SUBMIT_MATIC_LIDO: + case REQUEST_WITHDRAW: + msg->numScreens = 2; + context->decimals_sent = DEFAULT_DECIMAL; + strlcpy(context->ticker_sent, MATIC_TICKER, sizeof(context->ticker_sent)); + break; + case BUY_VOUCHER: + msg->numScreens = 1; + context->decimals_sent = DEFAULT_DECIMAL; + strlcpy(context->ticker_sent, MATIC_TICKER, sizeof(context->ticker_sent)); + break; case SWAP_FROM: msg->numScreens = 2; context->decimals_received = DEFAULT_DECIMAL; diff --git a/src/handle_init_contract.c b/src/handle_init_contract.c index 9420624..7fce024 100644 --- a/src/handle_init_contract.c +++ b/src/handle_init_contract.c @@ -36,6 +36,11 @@ void handle_init_contract(void *parameters) { // Set `next_param` to be the first field we expect to parse. switch (context->selectorIndex) { case DEPOSIT_SELF_APECOIN: + case SUBMIT_MATIC_LIDO: + case REQUEST_WITHDRAW: + case CLAIM_TOKENS: + case BUY_VOUCHER: + case SELL_VOUCHER_NEW: context->next_param = AMOUNT_SENT; break; case WITHDRAW_SELF_APECOIN: @@ -48,6 +53,15 @@ void handle_init_contract(void *parameters) { case SUBMIT_ETH_LIDO: context->next_param = RECIPIENT; break; + case MORPHO_SUPPLY_1: + case MORPHO_SUPPLY_2: + case MORPHO_SUPPLY_3: + context->next_param = TOKEN_SENT; + break; + case MORPHO_WITHDRAW_1: + case MORPHO_WITHDRAW_2: + context->next_param = TOKEN_RECEIVED; + break; case SWAP_TO: case SWAP_FROM: context->skip = 3; diff --git a/src/handle_provide_parameter.c b/src/handle_provide_parameter.c index 1e154b3..da74420 100644 --- a/src/handle_provide_parameter.c +++ b/src/handle_provide_parameter.c @@ -16,6 +16,107 @@ static void handle_swap_from(ethPluginProvideParameter_t *msg, plugin_parameters } } +static void handle_amount_recipient(ethPluginProvideParameter_t *msg, + plugin_parameters_t *context) { + switch (context->next_param) { + case AMOUNT_SENT: + copy_parameter(context->amount_sent, msg->parameter, INT256_LENGTH); + context->next_param = RECIPIENT; + break; + case RECIPIENT: + copy_address(context->recipient, msg->parameter, ADDRESS_LENGTH); + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +static void handle_morpho_supply_1_3(ethPluginProvideParameter_t *msg, + plugin_parameters_t *context) { + switch (context->next_param) { + case TOKEN_SENT: + copy_address(context->contract_address_sent, msg->parameter, INT256_LENGTH); + context->next_param = RECIPIENT; + break; + case RECIPIENT: + copy_address(context->recipient, msg->parameter, ADDRESS_LENGTH); + context->next_param = AMOUNT_SENT; + break; + case AMOUNT_SENT: + copy_parameter(context->amount_sent, msg->parameter, INT256_LENGTH); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +static void handle_morpho_supply_2(ethPluginProvideParameter_t *msg, plugin_parameters_t *context) { + switch (context->next_param) { + case TOKEN_SENT: + copy_address(context->contract_address_sent, msg->parameter, INT256_LENGTH); + context->next_param = AMOUNT_SENT; + break; + case AMOUNT_SENT: + copy_parameter(context->amount_sent, msg->parameter, INT256_LENGTH); + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +static void handle_morpho_withdraw_1(ethPluginProvideParameter_t *msg, + plugin_parameters_t *context) { + switch (context->next_param) { + case TOKEN_RECEIVED: + copy_address(context->contract_address_received, msg->parameter, INT256_LENGTH); + context->next_param = AMOUNT_RECEIVED; + break; + case AMOUNT_RECEIVED: + copy_parameter(context->amount_received, msg->parameter, INT256_LENGTH); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +static void handle_morpho_withdraw_2(ethPluginProvideParameter_t *msg, + plugin_parameters_t *context) { + switch (context->next_param) { + case TOKEN_RECEIVED: + copy_address(context->contract_address_received, msg->parameter, INT256_LENGTH); + context->next_param = AMOUNT_RECEIVED; + break; + case AMOUNT_RECEIVED: + copy_parameter(context->amount_received, msg->parameter, INT256_LENGTH); + context->next_param = RECIPIENT; + break; + case RECIPIENT: + copy_address(context->recipient, msg->parameter, ADDRESS_LENGTH); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + void handle_provide_parameter(void *parameters) { ethPluginProvideParameter_t *msg = (ethPluginProvideParameter_t *) parameters; plugin_parameters_t *context = (plugin_parameters_t *) msg->pluginContext; @@ -35,9 +136,16 @@ void handle_provide_parameter(void *parameters) { } else { switch (context->selectorIndex) { case DEPOSIT_SELF_APECOIN: + case CLAIM_TOKENS: copy_parameter(context->amount_sent, msg->parameter, INT256_LENGTH); break; + case BUY_VOUCHER: + case SELL_VOUCHER_NEW: + copy_parameter(context->amount_sent, msg->parameter, INT256_LENGTH); + context->skip = 1; + break; case WITHDRAW_SELF_APECOIN: + case SWAP_TO: copy_parameter(context->amount_received, msg->parameter, INT256_LENGTH); break; case SUBMIT_ETH_LIDO: @@ -46,12 +154,26 @@ void handle_provide_parameter(void *parameters) { case CLAIM_SELF_APECOIN: case STAKE: break; - case SWAP_TO: - copy_parameter(context->amount_received, msg->parameter, INT256_LENGTH); + case SUBMIT_MATIC_LIDO: + case REQUEST_WITHDRAW: + handle_amount_recipient(msg, context); break; case SWAP_FROM: handle_swap_from(msg, context); break; + case MORPHO_SUPPLY_1: + case MORPHO_SUPPLY_3: + handle_morpho_supply_1_3(msg, context); + break; + case MORPHO_WITHDRAW_1: + handle_morpho_withdraw_1(msg, context); + break; + case MORPHO_WITHDRAW_2: + handle_morpho_withdraw_2(msg, context); + break; + case MORPHO_SUPPLY_2: + handle_morpho_supply_2(msg, context); + break; default: PRINTF("Selector Index %d not supported\n", context->selectorIndex); msg->result = ETH_PLUGIN_RESULT_ERROR; diff --git a/src/handle_provide_token.c b/src/handle_provide_token.c index c3b4da8..164259a 100644 --- a/src/handle_provide_token.c +++ b/src/handle_provide_token.c @@ -15,40 +15,36 @@ void handle_provide_token(void *parameters) { plugin_parameters_t *context = (plugin_parameters_t *) msg->pluginContext; PRINTF("Plugin provide tokens : 0x%p, 0x%p\n", msg->item1, msg->item2); - switch (context->selectorIndex) { - default: - if (ADDRESS_IS_NETWORK_TOKEN(context->contract_address_sent)) { - sent_network_token(context); - } else if (msg->item1 != NULL) { - context->decimals_sent = msg->item1->token.decimals; - strlcpy(context->ticker_sent, - (char *) msg->item1->token.ticker, - sizeof(context->ticker_sent)); - context->tokens_found |= TOKEN_SENT_FOUND; - } else { - // CAL did not find the token and token is not ETH. - context->decimals_sent = DEFAULT_DECIMAL; - strlcpy(context->ticker_sent, DEFAULT_TICKER, sizeof(context->ticker_sent)); - // // We will need an additional screen to display a warning message. - msg->additionalScreens++; - } + if (ADDRESS_IS_NETWORK_TOKEN(context->contract_address_sent)) { + sent_network_token(context); + } else if (msg->item1 != NULL) { + context->decimals_sent = msg->item1->token.decimals; + strlcpy(context->ticker_sent, + (char *) msg->item1->token.ticker, + sizeof(context->ticker_sent)); + context->tokens_found |= TOKEN_SENT_FOUND; + } else { + // CAL did not find the token and token is not ETH. + context->decimals_sent = DEFAULT_DECIMAL; + strlcpy(context->ticker_sent, DEFAULT_TICKER, sizeof(context->ticker_sent)); + // // We will need an additional screen to display a warning message. + msg->additionalScreens++; + } - if (ADDRESS_IS_NETWORK_TOKEN(context->contract_address_received)) { - received_network_token(context); - } else if (msg->item2 != NULL) { - context->decimals_received = msg->item2->token.decimals; - strlcpy(context->ticker_received, - (char *) msg->item2->token.ticker, - sizeof(context->ticker_received)); - context->tokens_found |= TOKEN_RECEIVED_FOUND; - } else { - // CAL did not find the token and token is not ETH. - context->decimals_received = DEFAULT_DECIMAL; - strlcpy(context->ticker_received, DEFAULT_TICKER, sizeof(context->ticker_sent)); - // // We will need an additional screen to display a warning message. - msg->additionalScreens++; - } - break; + if (ADDRESS_IS_NETWORK_TOKEN(context->contract_address_received)) { + received_network_token(context); + } else if (msg->item2 != NULL) { + context->decimals_received = msg->item2->token.decimals; + strlcpy(context->ticker_received, + (char *) msg->item2->token.ticker, + sizeof(context->ticker_received)); + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else { + // CAL did not find the token and token is not ETH. + context->decimals_received = DEFAULT_DECIMAL; + strlcpy(context->ticker_received, DEFAULT_TICKER, sizeof(context->ticker_sent)); + // // We will need an additional screen to display a warning message. + msg->additionalScreens++; } msg->result = ETH_PLUGIN_RESULT_OK; diff --git a/src/handle_query_contract_id.c b/src/handle_query_contract_id.c index f54f42a..df735fb 100644 --- a/src/handle_query_contract_id.c +++ b/src/handle_query_contract_id.c @@ -17,6 +17,7 @@ void handle_query_contract_id(void *parameters) { strlcpy(msg->version, "Withdraw Self APE coin", msg->versionLength); break; case SUBMIT_ETH_LIDO: + case SUBMIT_MATIC_LIDO: strlcpy(msg->version, "Submit", msg->versionLength); break; case SWAP_TO: @@ -28,6 +29,27 @@ void handle_query_contract_id(void *parameters) { case STAKE: strlcpy(msg->version, "Stake", msg->versionLength); break; + case REQUEST_WITHDRAW: + strlcpy(msg->version, "Request Withdraw", msg->versionLength); + break; + case CLAIM_TOKENS: + strlcpy(msg->version, "Claim Tokens", msg->versionLength); + break; + case BUY_VOUCHER: + strlcpy(msg->version, "Buy Voucher", msg->versionLength); + break; + case SELL_VOUCHER_NEW: + strlcpy(msg->version, "Sell Voucher New", msg->versionLength); + break; + case MORPHO_SUPPLY_1: + case MORPHO_SUPPLY_2: + case MORPHO_SUPPLY_3: + strlcpy(msg->version, "Supply", msg->versionLength); + break; + case MORPHO_WITHDRAW_1: + case MORPHO_WITHDRAW_2: + strlcpy(msg->version, "Withdraw", msg->versionLength); + break; default: PRINTF("Selector Index :%d not supported\n", context->selectorIndex); msg->result = ETH_PLUGIN_RESULT_ERROR; diff --git a/src/handle_query_contract_ui.c b/src/handle_query_contract_ui.c index 0a38920..a199563 100644 --- a/src/handle_query_contract_ui.c +++ b/src/handle_query_contract_ui.c @@ -5,8 +5,18 @@ static void set_send_ui(ethQueryContractUI_t *msg, plugin_parameters_t *context) switch (context->selectorIndex) { case DEPOSIT_SELF_APECOIN: case SWAP_FROM: + case SUBMIT_MATIC_LIDO: + case REQUEST_WITHDRAW: + case BUY_VOUCHER: + case SELL_VOUCHER_NEW: + case MORPHO_SUPPLY_1: + case MORPHO_SUPPLY_2: + case MORPHO_SUPPLY_3: strlcpy(msg->title, "Send", msg->titleLength); break; + case CLAIM_TOKENS: + strlcpy(msg->title, "Token ID", msg->titleLength); + break; default: PRINTF("Unhandled selector Index: %d\n", context->selectorIndex); msg->result = ETH_PLUGIN_RESULT_ERROR; @@ -49,6 +59,8 @@ static void set_receive_ui(ethQueryContractUI_t *msg, plugin_parameters_t *conte case WITHDRAW_SELF_APECOIN: case SWAP_TO: case SWAP_FROM: + case MORPHO_WITHDRAW_1: + case MORPHO_WITHDRAW_2: strlcpy(msg->title, "Receive", msg->titleLength); break; default: @@ -69,7 +81,23 @@ static void set_receive_ui(ethQueryContractUI_t *msg, plugin_parameters_t *conte // Set UI for "Recipient" screen. static void set_recipient_ui(ethQueryContractUI_t *msg, plugin_parameters_t *context) { - strlcpy(msg->title, "Recipient", msg->titleLength); + switch (context->selectorIndex) { + case SUBMIT_MATIC_LIDO: + case REQUEST_WITHDRAW: + case SUBMIT_ETH_LIDO: + case MORPHO_WITHDRAW_1: + case MORPHO_WITHDRAW_2: + strlcpy(msg->title, "Recipient", msg->titleLength); + break; + case MORPHO_SUPPLY_1: + case MORPHO_SUPPLY_3: + strlcpy(msg->title, "Sender", msg->titleLength); + break; + default: + PRINTF("Unhandled selector Index: %d\n", context->selectorIndex); + msg->result = ETH_PLUGIN_RESULT_ERROR; + return; + } // Prefix the address with `0x`. msg->msg[0] = '0'; @@ -95,9 +123,8 @@ static void set_warning_ui(ethQueryContractUI_t *msg, strlcpy(msg->msg, "Unknown token", msg->msgLength); } -static screens_t get_screen_deposit_self_apecoin(ethQueryContractUI_t *msg, - plugin_parameters_t *context - __attribute__((unused))) { +static screens_t get_screen_amount_sent(ethQueryContractUI_t *msg, + plugin_parameters_t *context __attribute__((unused))) { switch (msg->screenIndex) { case 0: return SEND_SCREEN; @@ -126,6 +153,75 @@ static screens_t get_screen_submit_eth_lido(ethQueryContractUI_t *msg, } } +static screens_t get_screen_amount_sent_recipient(ethQueryContractUI_t *msg, + plugin_parameters_t *context + __attribute__((unused))) { + switch (msg->screenIndex) { + case 0: + return SEND_SCREEN; + case 1: + return RECIPIENT_SCREEN; + default: + return ERROR; + } +} + +static screens_t get_screen_morpho_supply(ethQueryContractUI_t *msg, + plugin_parameters_t *context __attribute__((unused))) { + bool token_sent_found = context->tokens_found & TOKEN_SENT_FOUND; + + switch (msg->screenIndex) { + case 0: + if (token_sent_found) { + return SEND_SCREEN; + } else { + return WARN_SCREEN; + } + case 1: + if (token_sent_found) { + return RECIPIENT_SCREEN; + } else { + return SEND_SCREEN; + } + case 2: + if (token_sent_found) { + return ERROR; + } else { + return RECIPIENT_SCREEN; + } + default: + return ERROR; + } +} + +static screens_t get_screen_morpho_withdraw(ethQueryContractUI_t *msg, + plugin_parameters_t *context __attribute__((unused))) { + bool token_received_found = context->tokens_found & TOKEN_RECEIVED_FOUND; + + switch (msg->screenIndex) { + case 0: + if (token_received_found) { + return RECEIVE_SCREEN; + } else { + return WARN_SCREEN; + } + case 1: + if (token_received_found) { + return RECIPIENT_SCREEN; + } else { + return RECEIVE_SCREEN; + } + case 2: + if (token_received_found) { + return ERROR; + } else { + return RECIPIENT_SCREEN; + } + default: + return ERROR; + } +} + static screens_t get_screen_amount_sent_receive(ethQueryContractUI_t *msg, plugin_parameters_t *context __attribute__((unused))) { @@ -162,16 +258,29 @@ static screens_t get_screen(ethQueryContractUI_t *msg, switch (context->selectorIndex) { case DEPOSIT_SELF_APECOIN: - return get_screen_deposit_self_apecoin(msg, context); + case CLAIM_TOKENS: + case BUY_VOUCHER: + case SELL_VOUCHER_NEW: + return get_screen_amount_sent(msg, context); case WITHDRAW_SELF_APECOIN: case SWAP_TO: return get_screen_receive(msg, context); case SUBMIT_ETH_LIDO: return get_screen_submit_eth_lido(msg, context); + case SUBMIT_MATIC_LIDO: + case REQUEST_WITHDRAW: + return get_screen_amount_sent_recipient(msg, context); + case MORPHO_SUPPLY_1: + case MORPHO_SUPPLY_2: + case MORPHO_SUPPLY_3: + return get_screen_morpho_supply(msg, context); case SWAP_FROM: return get_screen_amount_sent_receive(msg, context); case STAKE: return get_screen_value_sent(msg, context); + case MORPHO_WITHDRAW_1: + case MORPHO_WITHDRAW_2: + return get_screen_morpho_withdraw(msg, context); default: return ERROR; } diff --git a/src/stakekit_plugin.h b/src/stakekit_plugin.h index 5820b69..38da64d 100644 --- a/src/stakekit_plugin.h +++ b/src/stakekit_plugin.h @@ -4,7 +4,7 @@ #include "eth_internals.h" #include "eth_plugin_interface.h" -#define NUM_STAKEKIT_SELECTORS 7 +#define NUM_STAKEKIT_SELECTORS 17 #define PLUGIN_NAME "StakeKit" @@ -27,6 +27,16 @@ typedef enum { SWAP_TO, SWAP_FROM, STAKE, + SUBMIT_MATIC_LIDO, + REQUEST_WITHDRAW, + CLAIM_TOKENS, + BUY_VOUCHER, + SELL_VOUCHER_NEW, + MORPHO_SUPPLY_1, + MORPHO_SUPPLY_2, + MORPHO_SUPPLY_3, + MORPHO_WITHDRAW_1, + MORPHO_WITHDRAW_2, } selector_t; extern const uint8_t *const STAKEKIT_SELECTORS[NUM_STAKEKIT_SELECTORS]; @@ -42,8 +52,10 @@ typedef enum { #define AMOUNT_SENT 0 // Amount sent by the user to the contract. #define AMOUNT_RECEIVED 1 // Amount sent by the contract to the user. -#define RECIPIENT 2 // Recipient address receiving the funds. -#define NONE 3 // Placeholder variant to be set when parsing is done. +#define TOKEN_SENT 2 // Amount sent by the contract to the user. +#define TOKEN_RECEIVED 3 // Amount sent by the contract to the user. +#define RECIPIENT 4 // Recipient address receiving the funds. +#define NONE 5 // Placeholder variant to be set when parsing is done. // Number of decimals used when the token wasn't found in the CAL. #define DEFAULT_DECIMAL WEI_TO_ETHER @@ -60,6 +72,9 @@ typedef enum { // Ticker used for rETH. #define ROCKET_POOL_ETH_TICKER "rETH" +// Ticker used for rETH. +#define MATIC_TICKER "MATIC" + // Ticker used for rETH. #define STAKEWISE_STAKED_ETH2_TICKER "sETH2" diff --git a/tests/jest.config.js b/tests/jest.config.js index 6c778c5..873771c 100644 --- a/tests/jest.config.js +++ b/tests/jest.config.js @@ -26,9 +26,10 @@ module.exports = { // The glob patterns Jest uses to detect test files testMatch: [ - '**/__tests__/**/*.[jt]s?(x)', - '**/?(*.)+(spec|test).[tj]s?(x)', - '**/?(*.)+(ispec|test).[tj]s?(x)', + // '**/__tests__/**/*.[jt]s?(x)', + // '**/?(*.)+(spec|test).[tj]s?(x)', + // '**/?(*.)+(ispec|test).[tj]s?(x)', + '**/ethereum_request_withdraw.test.js', ], // Stop immediatly when a test fails diff --git a/tests/networks/ethereum/stakekit/abis/0x777777c9898d384f785ee44acfe945efdff5f3e0.abi.json b/tests/networks/ethereum/stakekit/abis/0x777777c9898d384f785ee44acfe945efdff5f3e0.abi.json new file mode 100644 index 0000000..e4981dc --- /dev/null +++ b/tests/networks/ethereum/stakekit/abis/0x777777c9898d384f785ee44acfe945efdff5f3e0.abi.json @@ -0,0 +1,1764 @@ +[ + { + "inputs": [], + "name": "BorrowNotPaused", + "type": "error" + }, + { + "inputs": [], + "name": "ExceedsMaxBasisPoints", + "type": "error" + }, + { + "inputs": [], + "name": "MarketAlreadyCreated", + "type": "error" + }, + { + "inputs": [], + "name": "MarketIsDeprecated", + "type": "error" + }, + { + "inputs": [], + "name": "MarketIsNotListedOnAave", + "type": "error" + }, + { + "inputs": [], + "name": "MarketNotCreated", + "type": "error" + }, + { + "inputs": [], + "name": "MaxNumberOfMarkets", + "type": "error" + }, + { + "inputs": [], + "name": "MaxSortedUsersCannotBeZero", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "uint64", + "name": "supply", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "borrow", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "withdraw", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "repay", + "type": "uint64" + } + ], + "indexed": false, + "internalType": "struct Types.MaxGasForMatching", + "name": "_defaultMaxGasForMatching", + "type": "tuple" + } + ], + "name": "DefaultMaxGasForMatchingSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_entryPositionsManager", + "type": "address" + } + ], + "name": "EntryPositionsManagerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_exitPositionsManager", + "type": "address" + } + ], + "name": "ExitPositionsManagerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_interestRatesManager", + "type": "address" + } + ], + "name": "InterestRatesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "IsBorrowPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_isDeprecated", + "type": "bool" + } + ], + "name": "IsDeprecatedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "IsLiquidateBorrowPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "IsLiquidateCollateralPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "IsRepayPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "IsSupplyPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "IsWithdrawPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_reserveFactor", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_p2pIndexCursor", + "type": "uint16" + } + ], + "name": "MarketCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_newValue", + "type": "uint256" + } + ], + "name": "MaxSortedUsersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_newValue", + "type": "uint16" + } + ], + "name": "P2PIndexCursorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_isP2PDisabled", + "type": "bool" + } + ], + "name": "P2PStatusSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_newValue", + "type": "uint16" + } + ], + "name": "ReserveFactorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amountClaimed", + "type": "uint256" + } + ], + "name": "ReserveFeeClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_newTreasuryVaultAddress", + "type": "address" + } + ], + "name": "TreasuryVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "BORROWING_MASK", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_LIQUIDATION_CLOSE_FACTOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "HEALTH_FACTOR_LIQUIDATION_THRESHOLD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_BASIS_POINTS", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_NB_OF_MARKETS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NO_REFERRAL_CODE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ONE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ST_ETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ST_ETH_BASE_REBASE_INDEX", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VARIABLE_INTEREST_MODE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "aaveIncentivesController", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "addressesProvider", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxGasForMatching", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "borrowBalanceInOf", + "outputs": [ + { + "internalType": "uint256", + "name": "inP2P", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "onPool", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "borrowMask", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "name": "claimRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_poolTokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_amounts", + "type": "uint256[]" + } + ], + "name": "claimToTreasury", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_reserveFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_p2pIndexCursor", + "type": "uint16" + } + ], + "name": "createMarket", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "defaultMaxGasForMatching", + "outputs": [ + { + "internalType": "uint64", + "name": "supply", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "borrow", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "withdraw", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "repay", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "deltas", + "outputs": [ + { + "internalType": "uint256", + "name": "p2pSupplyDelta", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "p2pBorrowDelta", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "p2pSupplyAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "p2pBorrowAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "entryPositionsManager", + "outputs": [ + { + "internalType": "contract IEntryPositionsManager", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "exitPositionsManager", + "outputs": [ + { + "internalType": "contract IExitPositionsManager", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "enum Types.PositionType", + "name": "_positionType", + "type": "uint8" + } + ], + "name": "getHead", + "outputs": [ + { + "internalType": "address", + "name": "head", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMarketsCreated", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "enum Types.PositionType", + "name": "_positionType", + "type": "uint8" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getNext", + "outputs": [ + { + "internalType": "address", + "name": "next", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incentivesVault", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "increaseP2PDeltas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IEntryPositionsManager", + "name": "_entryPositionsManager", + "type": "address" + }, + { + "internalType": "contract IExitPositionsManager", + "name": "_exitPositionsManager", + "type": "address" + }, + { + "internalType": "contract IInterestRatesManager", + "name": "_interestRatesManager", + "type": "address" + }, + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "_lendingPoolAddressesProvider", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint64", + "name": "supply", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "borrow", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "withdraw", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "repay", + "type": "uint64" + } + ], + "internalType": "struct Types.MaxGasForMatching", + "name": "_defaultMaxGasForMatching", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "_maxSortedUsers", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "interestRatesManager", + "outputs": [ + { + "internalType": "contract IInterestRatesManager", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isClaimRewardsPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolTokenBorrowed", + "type": "address" + }, + { + "internalType": "address", + "name": "_poolTokenCollateral", + "type": "address" + }, + { + "internalType": "address", + "name": "_borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "liquidate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "market", + "outputs": [ + { + "internalType": "address", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "uint16", + "name": "reserveFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "p2pIndexCursor", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "isCreated", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isPartiallyPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isP2PDisabled", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "marketPauseStatus", + "outputs": [ + { + "internalType": "bool", + "name": "isSupplyPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isBorrowPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isWithdrawPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isRepayPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isLiquidateCollateralPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isLiquidateBorrowPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isDeprecated", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxSortedUsers", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "p2pBorrowIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "p2pSupplyIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pool", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "poolIndexes", + "outputs": [ + { + "internalType": "uint32", + "name": "lastUpdateTimestamp", + "type": "uint32" + }, + { + "internalType": "uint112", + "name": "poolSupplyIndex", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "poolBorrowIndex", + "type": "uint112" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_onBehalf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "repay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "repay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint64", + "name": "supply", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "borrow", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "withdraw", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "repay", + "type": "uint64" + } + ], + "internalType": "struct Types.MaxGasForMatching", + "name": "_defaultMaxGasForMatching", + "type": "tuple" + } + ], + "name": "setDefaultMaxGasForMatching", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IEntryPositionsManager", + "name": "_entryPositionsManager", + "type": "address" + } + ], + "name": "setEntryPositionsManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IExitPositionsManager", + "name": "_exitPositionsManager", + "type": "address" + } + ], + "name": "setExitPositionsManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IInterestRatesManager", + "name": "_interestRatesManager", + "type": "address" + } + ], + "name": "setInterestRatesManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "setIsBorrowPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isDeprecated", + "type": "bool" + } + ], + "name": "setIsDeprecated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "setIsLiquidateBorrowPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "setIsLiquidateCollateralPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isP2PDisabled", + "type": "bool" + } + ], + "name": "setIsP2PDisabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "setIsPausedForAllMarkets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "setIsRepayPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "setIsSupplyPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isPaused", + "type": "bool" + } + ], + "name": "setIsWithdrawPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newMaxSortedUsers", + "type": "uint256" + } + ], + "name": "setMaxSortedUsers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_p2pIndexCursor", + "type": "uint16" + } + ], + "name": "setP2PIndexCursor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_newReserveFactor", + "type": "uint16" + } + ], + "name": "setReserveFactor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_treasuryVault", + "type": "address" + } + ], + "name": "setTreasuryVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_onBehalf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "supply", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "supply", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_onBehalf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxGasForMatching", + "type": "uint256" + } + ], + "name": "supply", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "supplyBalanceInOf", + "outputs": [ + { + "internalType": "uint256", + "name": "inP2P", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "onPool", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryVault", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + } + ], + "name": "updateIndexes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userMarkets", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_receiver", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/tests/networks/ethereum/stakekit/abis/0x857679d69fe50e7b722f94acd2629d80c355163d.abi.json b/tests/networks/ethereum/stakekit/abis/0x857679d69fe50e7b722f94acd2629d80c355163d.abi.json new file mode 100644 index 0000000..1eddf90 --- /dev/null +++ b/tests/networks/ethereum/stakekit/abis/0x857679d69fe50e7b722f94acd2629d80c355163d.abi.json @@ -0,0 +1,1011 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "activeAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minSharesToMint", + "type": "uint256" + } + ], + "name": "buyVoucher", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToDeposit", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "commissionRate_deprecated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "delegation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address payable", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "drain", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "eventsHub", + "outputs": [ + { + "internalType": "contract EventsHub", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getLiquidRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getRewardPerShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getTotalStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "initalRewardPerShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_validatorId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_stakingLogger", + "type": "address" + }, + { + "internalType": "address", + "name": "_stakeManager", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "lastCommissionUpdate_deprecated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "lock", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "locked", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "migrateIn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "migrateOut", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "minAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "restake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rewardPerShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "claimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maximumSharesToBurn", + "type": "uint256" + } + ], + "name": "sellVoucher", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "claimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maximumSharesToBurn", + "type": "uint256" + } + ], + "name": "sellVoucher_new", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "validatorStake", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "delegatedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalAmountToSlash", + "type": "uint256" + } + ], + "name": "slash", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "stakeManager", + "outputs": [ + { + "internalType": "contract IStakeManager", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "stakingLogger", + "outputs": [ + { + "internalType": "contract StakingInfo", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalStake_deprecated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "unbondNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "unbonds", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawEpoch", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "unbonds_new", + "outputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawEpoch", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unlock", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unstakeClaimTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "unbondNonce", + "type": "uint256" + } + ], + "name": "unstakeClaimTokens_new", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bool", + "name": "_delegation", + "type": "bool" + } + ], + "name": "updateDelegation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "validatorId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "validatorRewards_deprecated", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "withdrawExchangeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "withdrawPool", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "withdrawRewards", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "withdrawShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/tests/networks/ethereum/stakekit/abis/0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599.abi.json b/tests/networks/ethereum/stakekit/abis/0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599.abi.json new file mode 100644 index 0000000..bfb399f --- /dev/null +++ b/tests/networks/ethereum/stakekit/abis/0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599.abi.json @@ -0,0 +1,1761 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_amountClaimed", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amountBurned", + "type": "uint256" + } + ], + "name": "ClaimTokensEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "validatorShare", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "amountClaimed", + "type": "uint256" + } + ], + "name": "ClaimTotalDelegatedEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_amountDelegated", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_remainder", + "type": "uint256" + } + ], + "name": "DelegateEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "DistributeRewardsEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "_referral", + "type": "address" + } + ], + "name": "RequestWithdrawEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldDaoAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newDaoAddress", + "type": "address" + } + ], + "name": "SetDaoAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_delegationLowerBound", + "type": "uint256" + } + ], + "name": "SetDelegationLowerBound", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "daoFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "operatorsFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "insuranceFee", + "type": "uint256" + } + ], + "name": "SetFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldFxStateRootTunnel", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newFxStateRootTunnel", + "type": "address" + } + ], + "name": "SetFxStateRootTunnel", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_newInsuranceAddress", + "type": "address" + } + ], + "name": "SetInsuranceAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldLidoNFT", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newLidoNFT", + "type": "address" + } + ], + "name": "SetLidoNFT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_newNodeOperatorRegistryAddress", + "type": "address" + } + ], + "name": "SetNodeOperatorRegistryAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "oldProtocolFee", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "newProtocolFee", + "type": "uint8" + } + ], + "name": "SetProtocolFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldRewardDistributionLowerBound", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newRewardDistributionLowerBound", + "type": "uint256" + } + ], + "name": "SetRewardDistributionLowerBound", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "_referral", + "type": "address" + } + ], + "name": "SubmitEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "oldVersion", + "type": "string" + }, + { + "indexed": true, + "internalType": "string", + "name": "newVersion", + "type": "string" + } + ], + "name": "Version", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "WithdrawTotalDelegatedEvent", + "type": "event" + }, + { + "inputs": [], + "name": "DAO", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNPAUSE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "calculatePendingBufferedTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "pendingBufferedTokens", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "claimTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "claimTokensFromValidatorToContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountInMatic", + "type": "uint256" + } + ], + "name": "convertMaticToStMatic", + "outputs": [ + { + "internalType": "uint256", + "name": "amountInStMatic", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalStMaticSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPooledMatic", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountInStMatic", + "type": "uint256" + } + ], + "name": "convertStMaticToMatic", + "outputs": [ + { + "internalType": "uint256", + "name": "amountInMatic", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalStMaticAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPooledMatic", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "delegationLowerBound", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "distributeRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "entityFees", + "outputs": [ + { + "internalType": "uint8", + "name": "dao", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "operators", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "insurance", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fxStateRootTunnel", + "outputs": [ + { + "internalType": "contract IFxStateRootTunnel", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IValidatorShare", + "name": "_validatorShare", + "type": "address" + } + ], + "name": "getLiquidRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getMaticFromTokenId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getToken2WithdrawRequests", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount2WithdrawFromStMATIC", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorNonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestEpoch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "validatorAddress", + "type": "address" + } + ], + "internalType": "struct IStMATIC.RequestWithdraw[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalPooledMatic", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IValidatorShare", + "name": "_validatorShare", + "type": "address" + } + ], + "name": "getTotalStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalStakeAcrossAllValidators", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalWithdrawRequest", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount2WithdrawFromStMATIC", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorNonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestEpoch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "validatorAddress", + "type": "address" + } + ], + "internalType": "struct IStMATIC.RequestWithdraw[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_nodeOperatorRegistry", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "address", + "name": "_insurance", + "type": "address" + }, + { + "internalType": "address", + "name": "_stakeManager", + "type": "address" + }, + { + "internalType": "address", + "name": "_poLidoNFT", + "type": "address" + }, + { + "internalType": "address", + "name": "_fxStateRootTunnel", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "insurance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastWithdrawnValidatorId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nodeOperatorRegistry", + "outputs": [ + { + "internalType": "contract INodeOperatorRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poLidoNFT", + "outputs": [ + { + "internalType": "contract IPoLidoNFT", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolFee", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rebalanceDelegatedTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_referral", + "type": "address" + } + ], + "name": "requestWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "reservedFunds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardDistributionLowerBound", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newDAO", + "type": "address" + } + ], + "name": "setDaoAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_delegationLowerBound", + "type": "uint256" + } + ], + "name": "setDelegationLowerBound", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_daoFee", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "_operatorsFee", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "_insuranceFee", + "type": "uint8" + } + ], + "name": "setFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newFxStateRootTunnel", + "type": "address" + } + ], + "name": "setFxStateRootTunnel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "setInsuranceAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "setNodeOperatorRegistryAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newLidoNFT", + "type": "address" + } + ], + "name": "setPoLidoNFT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_newProtocolFee", + "type": "uint8" + } + ], + "name": "setProtocolFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newRewardDistributionLowerBound", + "type": "uint256" + } + ], + "name": "setRewardDistributionLowerBound", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_newVersion", + "type": "string" + } + ], + "name": "setVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "stMaticWithdrawRequest", + "outputs": [ + { + "internalType": "uint256", + "name": "amount2WithdrawFromStMATIC", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorNonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestEpoch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "validatorAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stakeManager", + "outputs": [ + { + "internalType": "contract IStakeManager", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_referral", + "type": "address" + } + ], + "name": "submit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "submitHandler", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "submitThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "token2WithdrawRequest", + "outputs": [ + { + "internalType": "uint256", + "name": "amount2WithdrawFromStMATIC", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorNonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestEpoch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "validatorAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "token2WithdrawRequests", + "outputs": [ + { + "internalType": "uint256", + "name": "amount2WithdrawFromStMATIC", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorNonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestEpoch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "validatorAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalBuffered", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_validatorShare", + "type": "address" + } + ], + "name": "withdrawTotalDelegated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/tests/networks/ethereum/stakekit/b2c.json b/tests/networks/ethereum/stakekit/b2c.json index 4bac1ff..a73d50c 100644 --- a/tests/networks/ethereum/stakekit/b2c.json +++ b/tests/networks/ethereum/stakekit/b2c.json @@ -59,6 +59,74 @@ "plugin": "StakeKit" } } + }, + { + "address": "0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599", + "contractName": "TransparentUpgradeableProxy", + "selectors": { + "0xf532e86a": { + "erc20OfInterest": [], + "method": "submit", + "plugin": "StakeKit" + }, + "0xccc143b8": { + "erc20OfInterest": [], + "method": "requestWithdraw", + "plugin": "StakeKit" + }, + "0x46e04a2f": { + "erc20OfInterest": [], + "method": "claimTokens", + "plugin": "StakeKit" + } + } + }, + { + "address": "0x857679d69fe50e7b722f94acd2629d80c355163d", + "contractName": "ValidatorShareProxy", + "selectors": { + "0x6ab15071": { + "erc20OfInterest": [], + "method": "buyVoucher", + "plugin": "StakeKit" + }, + "0xc83ec04d": { + "erc20OfInterest": [], + "method": "sellVoucher_new", + "plugin": "StakeKit" + } + } + }, + { + "address": "0x777777c9898d384f785ee44acfe945efdff5f3e0", + "contractName": "TransparentUpgradeableProxy", + "selectors": { + "0x0c0a769b": { + "erc20OfInterest": ["_poolToken"], + "method": "supply", + "plugin": "StakeKit" + }, + "0xf2b9fdb8": { + "erc20OfInterest": ["_poolToken"], + "method": "supply", + "plugin": "StakeKit" + }, + "0xf62256c7": { + "erc20OfInterest": ["_poolToken"], + "method": "supply", + "plugin": "StakeKit" + }, + "0xf3fef3a3": { + "erc20OfInterest": ["_poolToken"], + "method": "withdraw", + "plugin": "StakeKit" + }, + "0x69328dec": { + "erc20OfInterest": ["_poolToken"], + "method": "withdraw", + "plugin": "StakeKit" + } + } } ], "name": "StakeKit" diff --git a/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00000.png b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00001.png b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00001.png new file mode 100644 index 0000000..a3cc589 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00002.png b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00002.png new file mode 100644 index 0000000..e8685f9 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00003.png b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00003.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00004.png b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00004.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00005.png b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00005.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_buy_voucher/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00000.png b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00001.png b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00001.png new file mode 100644 index 0000000..8ca993b Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00002.png b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00002.png new file mode 100644 index 0000000..e3db0dc Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00003.png b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00003.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00004.png b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00004.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00005.png b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00005.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_claim_tokens/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00000.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00001.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00001.png new file mode 100644 index 0000000..bf79404 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00002.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00002.png new file mode 100644 index 0000000..a27b10c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00003.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00003.png new file mode 100644 index 0000000..1de568b Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00004.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00004.png new file mode 100644 index 0000000..b7a4c7a Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00005.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00005.png new file mode 100644 index 0000000..c7b4957 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00006.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00006.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00006.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00007.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00007.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00007.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00008.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00008.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_1/00008.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00000.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00001.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00001.png new file mode 100644 index 0000000..bf79404 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00002.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00002.png new file mode 100644 index 0000000..0483dcb Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00003.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00003.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00004.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00004.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00005.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00005.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_2/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00000.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00001.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00001.png new file mode 100644 index 0000000..bf79404 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00002.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00002.png new file mode 100644 index 0000000..8aecf0b Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00003.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00003.png new file mode 100644 index 0000000..2d49f38 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00004.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00004.png new file mode 100644 index 0000000..750f135 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00005.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00005.png new file mode 100644 index 0000000..86ba04d Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00006.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00006.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00006.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00007.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00007.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00007.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00008.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00008.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_supply_3/00008.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00000.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00001.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00001.png new file mode 100644 index 0000000..ea580f5 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00002.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00002.png new file mode 100644 index 0000000..889b1f8 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00003.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00003.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00004.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00004.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00005.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00005.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_1/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00000.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00001.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00001.png new file mode 100644 index 0000000..ea580f5 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00002.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00002.png new file mode 100644 index 0000000..425f920 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00003.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00003.png new file mode 100644 index 0000000..b5ac71b Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00004.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00004.png new file mode 100644 index 0000000..3edae3d Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00005.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00005.png new file mode 100644 index 0000000..94d3bc3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00006.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00006.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00006.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00007.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00007.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00007.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00008.png b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00008.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_morpho_withdraw_2/00008.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00000.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00001.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00001.png new file mode 100644 index 0000000..7f6e3ff Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00002.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00002.png new file mode 100644 index 0000000..6cf863b Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00003.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00003.png new file mode 100644 index 0000000..3bd7897 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00004.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00004.png new file mode 100644 index 0000000..587bf9b Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00005.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00005.png new file mode 100644 index 0000000..84ea72e Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00006.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00006.png new file mode 100644 index 0000000..cbda98f Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00006.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00007.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00007.png new file mode 100644 index 0000000..6ccc392 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00007.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00008.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00008.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00008.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00009.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00009.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00009.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00010.png b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00010.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_request_withdraw/00010.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00000.png b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00001.png b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00001.png new file mode 100644 index 0000000..d86ed8f Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00002.png b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00002.png new file mode 100644 index 0000000..b4f5d32 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00003.png b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00003.png new file mode 100644 index 0000000..9468588 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00004.png b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00004.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00005.png b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00005.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00006.png b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00006.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_sell_voucher_new/00006.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00000.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00000.png new file mode 100644 index 0000000..8d84cc7 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00000.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00001.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00001.png new file mode 100644 index 0000000..3cf4c1a Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00001.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00002.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00002.png new file mode 100644 index 0000000..e61324e Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00002.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00003.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00003.png new file mode 100644 index 0000000..e98746a Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00003.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00004.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00004.png new file mode 100644 index 0000000..1cd0b69 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00004.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00005.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00005.png new file mode 100644 index 0000000..1fcf74b Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00005.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00006.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00006.png new file mode 100644 index 0000000..eeec632 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00006.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00007.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00007.png new file mode 100644 index 0000000..1c9156c Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00007.png differ diff --git a/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00008.png b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00008.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanos_ethereum_submit_matic_lido/00008.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00001.png new file mode 100644 index 0000000..d266645 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00002.png new file mode 100644 index 0000000..e55417f Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00003.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00005.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_buy_voucher/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00001.png new file mode 100644 index 0000000..d87a371 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00002.png new file mode 100644 index 0000000..f6399f7 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00003.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00005.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_claim_tokens/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00001.png new file mode 100644 index 0000000..116d201 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00002.png new file mode 100644 index 0000000..7d685fe Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00003.png new file mode 100644 index 0000000..93b9c1e Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00004.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00006.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00006.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_1/00006.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00001.png new file mode 100644 index 0000000..116d201 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00002.png new file mode 100644 index 0000000..dadfe58 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00003.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00005.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_2/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00001.png new file mode 100644 index 0000000..116d201 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00002.png new file mode 100644 index 0000000..f730234 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00003.png new file mode 100644 index 0000000..30b33d9 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00004.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00006.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00006.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_supply_3/00006.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00001.png new file mode 100644 index 0000000..8860d96 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00002.png new file mode 100644 index 0000000..4a63a52 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00003.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00005.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_1/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00001.png new file mode 100644 index 0000000..8860d96 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00002.png new file mode 100644 index 0000000..96ec5d5 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00003.png new file mode 100644 index 0000000..17365c8 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00004.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00006.png b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00006.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_morpho_withdraw_2/00006.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00001.png new file mode 100644 index 0000000..02e081d Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00002.png new file mode 100644 index 0000000..aa39bf7 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00003.png new file mode 100644 index 0000000..0e648b5 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00004.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00006.png b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00006.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_request_withdraw/00006.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00001.png new file mode 100644 index 0000000..9bb56c3 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00002.png new file mode 100644 index 0000000..09a57a1 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00003.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00005.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_sell_voucher_new/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00000.png b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00000.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00001.png b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00001.png new file mode 100644 index 0000000..52062ce Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00001.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00002.png b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00002.png new file mode 100644 index 0000000..385da88 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00002.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00003.png b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00003.png new file mode 100644 index 0000000..4a5511f Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00003.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00004.png b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00004.png new file mode 100644 index 0000000..89bfa0b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00004.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00005.png b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00005.png differ diff --git a/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00006.png b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00006.png new file mode 100644 index 0000000..a58590b Binary files /dev/null and b/tests/snapshots/ethereum_nanosp_ethereum_submit_matic_lido/00006.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00000.png b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00001.png b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00001.png new file mode 100644 index 0000000..2b9dc68 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00002.png b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00002.png new file mode 100644 index 0000000..1d12793 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00003.png b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00003.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00004.png b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00005.png b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00005.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_buy_voucher/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00000.png b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00001.png b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00001.png new file mode 100644 index 0000000..a63b424 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00002.png b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00002.png new file mode 100644 index 0000000..f6399f7 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00003.png b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00003.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00004.png b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00005.png b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00005.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_claim_tokens/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00000.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00001.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00001.png new file mode 100644 index 0000000..cdfc997 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00002.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00002.png new file mode 100644 index 0000000..8b694a8 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00003.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00003.png new file mode 100644 index 0000000..fce820e Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00004.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00004.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00005.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00006.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00006.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_1/00006.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00000.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00001.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00001.png new file mode 100644 index 0000000..cdfc997 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00002.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00002.png new file mode 100644 index 0000000..ba2af6c Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00003.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00003.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00004.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00005.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00005.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_2/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00000.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00001.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00001.png new file mode 100644 index 0000000..cdfc997 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00002.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00002.png new file mode 100644 index 0000000..af474cc Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00003.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00003.png new file mode 100644 index 0000000..88a5a4e Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00004.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00004.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00005.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00006.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00006.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_supply_3/00006.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00000.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00001.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00001.png new file mode 100644 index 0000000..a0cfb03 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00002.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00002.png new file mode 100644 index 0000000..4a63a52 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00003.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00003.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00004.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00005.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00005.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_1/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00000.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00001.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00001.png new file mode 100644 index 0000000..a0cfb03 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00002.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00002.png new file mode 100644 index 0000000..96ec5d5 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00003.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00003.png new file mode 100644 index 0000000..17365c8 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00004.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00004.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00005.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00006.png b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00006.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_morpho_withdraw_2/00006.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00000.png b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00001.png b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00001.png new file mode 100644 index 0000000..2ae62f3 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00002.png b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00002.png new file mode 100644 index 0000000..366c3a8 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00003.png b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00003.png new file mode 100644 index 0000000..0e648b5 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00004.png b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00004.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00005.png b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00006.png b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00006.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_request_withdraw/00006.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00000.png b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00001.png b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00001.png new file mode 100644 index 0000000..59c775d Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00002.png b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00002.png new file mode 100644 index 0000000..8dab39b Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00003.png b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00003.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00004.png b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00004.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00005.png b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00005.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_sell_voucher_new/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00000.png b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00000.png new file mode 100644 index 0000000..487ea10 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00000.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00001.png b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00001.png new file mode 100644 index 0000000..768ca07 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00001.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00002.png b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00002.png new file mode 100644 index 0000000..41aced9 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00002.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00003.png b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00003.png new file mode 100644 index 0000000..4a5511f Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00003.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00004.png b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00004.png new file mode 100644 index 0000000..b2401b2 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00004.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00005.png b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00005.png new file mode 100644 index 0000000..570ce28 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00005.png differ diff --git a/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00006.png b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00006.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/snapshots/ethereum_nanox_ethereum_submit_matic_lido/00006.png differ diff --git a/tests/src/ethereum/ethereum_buy_voucher.test.js b/tests/src/ethereum/ethereum_buy_voucher.test.js new file mode 100644 index 0000000..9fc6dc2 --- /dev/null +++ b/tests/src/ethereum/ethereum_buy_voucher.test.js @@ -0,0 +1,39 @@ +import { processTest, populateTransaction } from "../test.fixture"; + +const contractName = "ValidatorShareProxy"; // <= Name of the smart contract + +const testLabel = "ethereum_buy_voucher"; // <= Name of the test +const testDirSuffix = "ethereum_buy_voucher"; // <= directory to compare device snapshots to +const testNetwork = "ethereum"; +const signedPlugin = false; + +const contractAddr = "0x857679d69fe50e7b722f94acd2629d80c355163d"; // <= Address of the smart contract +const chainID = 1; + +// From : https://etherscan.io/tx/0xa62c3d54e5886da76268dcf4574c64ea06f1137312fc6e38c769e9b9fcb977b2 +const inputData = "0x6ab1507100000000000000000000000000000000000000000000007685fa9b1d82cd00000000000000000000000000000000000000000000000000000000000000000977"; + +// Create serializedTx and remove the "0x" prefix +const serializedTx = populateTransaction(contractAddr, inputData, chainID); + +const devices = [ + { + name: "nanos", + label: "Nano S", + steps: 4, // <= Define the number of steps for this test case and this device + }, + { + name: "nanox", + label: "Nano X", + steps: 4, // <= Define the number of steps for this test case and this device + }, + { + name: "nanosp", + label: "Nano S+", + steps: 4, // <= Define the number of steps for this test case and this device + } +]; + +devices.forEach((device) => + processTest(device, contractName, testLabel, testDirSuffix, "", signedPlugin, serializedTx, testNetwork) +); diff --git a/tests/src/ethereum/ethereum_claim_tokens.test.js b/tests/src/ethereum/ethereum_claim_tokens.test.js new file mode 100644 index 0000000..36cba48 --- /dev/null +++ b/tests/src/ethereum/ethereum_claim_tokens.test.js @@ -0,0 +1,39 @@ +import { processTest, populateTransaction } from "../test.fixture"; + +const contractName = "TransparentUpgradeableProxy"; // <= Name of the smart contract + +const testLabel = "ethereum_claim_tokens"; // <= Name of the test +const testDirSuffix = "ethereum_claim_tokens"; // <= directory to compare device snapshots to +const testNetwork = "ethereum"; +const signedPlugin = false; + +const contractAddr = "0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599"; // <= Address of the smart contract +const chainID = 1; + +// From : https://etherscan.io/tx/0xf3ad5d16bbf994af6ac989f551c2d6d1f496a7c250523a78b7f9dbeb34d9974c +const inputData = "0x46e04a2f00000000000000000000000000000000000000000000000000000000000006a3"; + +// Create serializedTx and remove the "0x" prefix +const serializedTx = populateTransaction(contractAddr, inputData, chainID); + +const devices = [ + { + name: "nanos", + label: "Nano S", + steps: 4, // <= Define the number of steps for this test case and this device + }, + { + name: "nanox", + label: "Nano X", + steps: 4, // <= Define the number of steps for this test case and this device + }, + { + name: "nanosp", + label: "Nano S+", + steps: 4, // <= Define the number of steps for this test case and this device + } +]; + +devices.forEach((device) => + processTest(device, contractName, testLabel, testDirSuffix, "", signedPlugin, serializedTx, testNetwork) +); diff --git a/tests/src/ethereum/ethereum_morpho_supply.test.js b/tests/src/ethereum/ethereum_morpho_supply.test.js new file mode 100644 index 0000000..e431a13 --- /dev/null +++ b/tests/src/ethereum/ethereum_morpho_supply.test.js @@ -0,0 +1,62 @@ +import { processTest, populateTransaction } from "../test.fixture"; + +const contractName = "TransparentUpgradeableProxy"; // <= Name of the smart contract + +const testLabel = "ethereum_morpho_supply"; // <= Name of the test +const testNetwork = "ethereum"; +const signedPlugin = false; + +const contractAddr = "0x777777c9898d384f785ee44acfe945efdff5f3e0"; // <= Address of the smart contract +const chainID = 1; + +const transactions = [ + // { + // // From : https://etherscan.io/tx/0x238086cd092f6c5e6988baa2839851547d35c952417f1f46e80c0eaad7d73870 + // inputData: '0x0c0a769b0000000000000000000000009ff58f4ffb29fa2266ab25e75e2a8b3503311656000000000000000000000000721096bcd32a2a653efa5633b9fa1e07359d974600000000000000000000000000000000000000000000000000000000245bdc800000000000000000000000000000000000000000000000000000018a8d2e9f0d000000000000000000000000000000000000000000000000000000000000da44', + // nanoStep: 7, + // nanoSPtep: 5, + // nanoXtep: 5, + // index: 1, + // }, + // { + // // From : https://etherscan.io/tx/0x397720ea112b40cb60bd27f2e2fa9509f1bde520d95315a5bf6d3b955c791e3c + // inputData: '0xf2b9fdb8000000000000000000000000030ba81f1c18d280636f32af80b9aad02cf0854e0000000000000000000000000000000000000000000000000de0b6b3a7640000', + // nanoStep: 4, + // nanoSPtep: 4, + // nanoXtep: 4, + // index: 2, + // }, + { + // From : https://etherscan.io/tx/0xa3f4967680be4f3bf0317829f58516c56668ea0f55cceb3017c11848db7dd504 + inputData: '0xf62256c7000000000000000000000000028171bca77440897b824ca71d1c56cac55b68a3000000000000000000000000d625c7458da1a0758da8d3ac7f2c10180bf0e5060000000000000000000000000000000000000000000000000c7d713b49da00000000000000000000000000000000000000000000000000000000000000061a80', + nanoStep: 7, + nanoSPtep: 5, + nanoXtep: 5, + index: 3, + }, +]; + +transactions.forEach((tx) => { + const devices = [ + { + name: 'nanos', + label: 'Nano S', + steps: tx.nanoStep, // <= Define the number of steps for this test case and this device + }, + { + name: 'nanox', + label: 'Nano X', + steps: tx.nanoSPtep, // <= Define the number of steps for this test case and this device + }, + { + name: 'nanosp', + label: 'Nano S+', + steps: tx.nanoXtep, // <= Define the number of steps for this test case and this device + }, + ]; + + const testDirSuffix = `${testLabel}_${tx.index}`; // <= directory to compare device snapshots to + const serializedTx = populateTransaction(contractAddr, tx.inputData, chainID); + + devices.forEach((device) => processTest(device, contractName, testDirSuffix, testDirSuffix, '', signedPlugin, serializedTx, testNetwork)); +}); diff --git a/tests/src/ethereum/ethereum_morpho_withdraw.test.js b/tests/src/ethereum/ethereum_morpho_withdraw.test.js new file mode 100644 index 0000000..0cd0da1 --- /dev/null +++ b/tests/src/ethereum/ethereum_morpho_withdraw.test.js @@ -0,0 +1,54 @@ +import { processTest, populateTransaction } from "../test.fixture"; + +const contractName = "TransparentUpgradeableProxy"; // <= Name of the smart contract + +const testLabel = "ethereum_morpho_withdraw"; // <= Name of the test +const testNetwork = "ethereum"; +const signedPlugin = false; + +const contractAddr = "0x777777c9898d384f785ee44acfe945efdff5f3e0"; // <= Address of the smart contract +const chainID = 1; + +const transactions = [ + // { + // // From : https://etherscan.io/tx/0xdfdb427651807ed9ef26f15c3d0d3faed76d4529fdefc18309295ecac165f8c3 + // inputData: '0xf3fef3a3000000000000000000000000030ba81f1c18d280636f32af80b9aad02cf0854e0000000000000000000000000000000000000000000000049b9ca9a6943400000000000000000000000000000000000000000000000000000000018a8dba6d6b000000000000000000000000000000000000000000000000000000000000da44', + // nanoStep: 4, + // nanoSPtep: 4, + // nanoXtep: 4, + // index: 1, + // }, + { + // From : https://etherscan.io/tx/0x444f2d0401e982b452dc1259a98cc982929855f59dad57a48f6f8096c37dc841 + inputData: '0x69328dec0000000000000000000000009ff58f4ffb29fa2266ab25e75e2a8b3503311656000000000000000000000000000000000000000000000000000000000000271000000000000000000000000025ebad8a8d3246c127f5e61984651398558ec4ee', + nanoStep: 7, + nanoSPtep: 5, + nanoXtep: 5, + index: 2, + }, +]; + +transactions.forEach((tx) => { + const devices = [ + { + name: 'nanos', + label: 'Nano S', + steps: tx.nanoStep, // <= Define the number of steps for this test case and this device + }, + { + name: 'nanox', + label: 'Nano X', + steps: tx.nanoSPtep, // <= Define the number of steps for this test case and this device + }, + { + name: 'nanosp', + label: 'Nano S+', + steps: tx.nanoXtep, // <= Define the number of steps for this test case and this device + }, + ]; + + const testDirSuffix = `${testLabel}_${tx.index}`; // <= directory to compare device snapshots to + const serializedTx = populateTransaction(contractAddr, tx.inputData, chainID); + + devices.forEach((device) => processTest(device, contractName, testDirSuffix, testDirSuffix, '', signedPlugin, serializedTx, testNetwork)); +}); diff --git a/tests/src/ethereum/ethereum_request_withdraw.test.js b/tests/src/ethereum/ethereum_request_withdraw.test.js new file mode 100644 index 0000000..c7df201 --- /dev/null +++ b/tests/src/ethereum/ethereum_request_withdraw.test.js @@ -0,0 +1,39 @@ +import { processTest, populateTransaction } from "../test.fixture"; + +const contractName = "TransparentUpgradeableProxy"; // <= Name of the smart contract + +const testLabel = "ethereum_request_withdraw"; // <= Name of the test +const testDirSuffix = "ethereum_request_withdraw"; // <= directory to compare device snapshots to +const testNetwork = "ethereum"; +const signedPlugin = false; + +const contractAddr = "0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599"; // <= Address of the smart contract +const chainID = 1; + +// From : https://etherscan.io/tx/0xeb2deb767946ff0575ecd1dcf388206aee098aa1465ea1bd803cad644bc69bf1 +const inputData = "0xccc143b8000000000000000000000000000000000000000000000017b589a84da2eb51440000000000000000000000000000000000000000000000000000000000000000"; + +// Create serializedTx and remove the "0x" prefix +const serializedTx = populateTransaction(contractAddr, inputData, chainID); + +const devices = [ + { + name: "nanos", + label: "Nano S", + steps: 9, // <= Define the number of steps for this test case and this device + }, + { + name: "nanox", + label: "Nano X", + steps: 5, // <= Define the number of steps for this test case and this device + }, + { + name: "nanosp", + label: "Nano S+", + steps: 5, // <= Define the number of steps for this test case and this device + } +]; + +devices.forEach((device) => + processTest(device, contractName, testLabel, testDirSuffix, "", signedPlugin, serializedTx, testNetwork) +); diff --git a/tests/src/ethereum/ethereum_sell_voucher_new.test.js b/tests/src/ethereum/ethereum_sell_voucher_new.test.js new file mode 100644 index 0000000..ca5ca4f --- /dev/null +++ b/tests/src/ethereum/ethereum_sell_voucher_new.test.js @@ -0,0 +1,39 @@ +import { processTest, populateTransaction } from "../test.fixture"; + +const contractName = "ValidatorShareProxy"; // <= Name of the smart contract + +const testLabel = "ethereum_sell_voucher_new"; // <= Name of the test +const testDirSuffix = "ethereum_sell_voucher_new"; // <= directory to compare device snapshots to +const testNetwork = "ethereum"; +const signedPlugin = false; + +const contractAddr = "0x857679d69fe50e7b722f94acd2629d80c355163d"; // <= Address of the smart contract +const chainID = 1; + +// From : https://etherscan.io/tx/0xc8a571d90172d3bc2f17afa756c3a392230048eece3f33b65c2c813ac5e0cc8b +const inputData = "0xc83ec04d000000000000000000000000000000000000000000002dab46fe26b415db6c7c000000000000000000000000000000000000000000002dab46fe26b415db6c7c"; + +// Create serializedTx and remove the "0x" prefix +const serializedTx = populateTransaction(contractAddr, inputData, chainID); + +const devices = [ + { + name: "nanos", + label: "Nano S", + steps: 5, // <= Define the number of steps for this test case and this device + }, + { + name: "nanox", + label: "Nano X", + steps: 4, // <= Define the number of steps for this test case and this device + }, + { + name: "nanosp", + label: "Nano S+", + steps: 4, // <= Define the number of steps for this test case and this device + } +]; + +devices.forEach((device) => + processTest(device, contractName, testLabel, testDirSuffix, "", signedPlugin, serializedTx, testNetwork) +); diff --git a/tests/src/ethereum/ethereum_submit_matic_lido.test.js b/tests/src/ethereum/ethereum_submit_matic_lido.test.js new file mode 100644 index 0000000..a7a227c --- /dev/null +++ b/tests/src/ethereum/ethereum_submit_matic_lido.test.js @@ -0,0 +1,39 @@ +import { processTest, populateTransaction } from "../test.fixture"; + +const contractName = "TransparentUpgradeableProxy"; // <= Name of the smart contract + +const testLabel = "ethereum_submit_matic_lido"; // <= Name of the test +const testDirSuffix = "ethereum_submit_matic_lido"; // <= directory to compare device snapshots to +const testNetwork = "ethereum"; +const signedPlugin = false; + +const contractAddr = "0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599"; // <= Address of the smart contract +const chainID = 1; + +// From : https://etherscan.io/tx/0xd9ac578663440f30b27b01551e7bdfa55d30a06b95af786a7f8a84565c0f56af +const inputData = "0xf532e86a00000000000000000000000000000000000000000000000a7f91dc75ca604400000000000000000000000000231488f58d7ec8767b40e06069de263d27e95ef4"; + +// Create serializedTx and remove the "0x" prefix +const serializedTx = populateTransaction(contractAddr, inputData, chainID); + +const devices = [ + { + name: "nanos", + label: "Nano S", + steps: 7, // <= Define the number of steps for this test case and this device + }, + { + name: "nanox", + label: "Nano X", + steps: 5, // <= Define the number of steps for this test case and this device + }, + { + name: "nanosp", + label: "Nano S+", + steps: 5, // <= Define the number of steps for this test case and this device + } +]; + +devices.forEach((device) => + processTest(device, contractName, testLabel, testDirSuffix, "", signedPlugin, serializedTx, testNetwork) +);