├── .gitignore ├── Caddyfile.local ├── Caddyfile.production ├── LICENSE ├── Makefile ├── README.md ├── configs ├── gnosis-safe-client-gateway.env.common ├── gnosis-safe-client-gateway.env.local ├── gnosis-safe-client-gateway.env.production ├── gnosis-safe-config-service.env.common ├── gnosis-safe-config-service.env.local ├── gnosis-safe-config-service.env.production ├── gnosis-safe-react.env.common ├── gnosis-safe-react.env.local ├── gnosis-safe-react.env.production ├── gnosis-safe-transaction-service.env.common ├── gnosis-safe-transaction-service.env.local └── gnosis-safe-transaction-service.env.production ├── docker-compose.local.yml ├── docker-compose.production.yml ├── docker-compose.yml ├── docker-gnosis-safe-react └── Dockerfile ├── helpers └── git-vendor └── vendor └── github.com ├── gnosis ├── safe-client-gateway │ ├── .dockerignore │ ├── .env.sample │ ├── .github │ │ ├── ISSUE_TEMPLATE │ │ │ ├── bug_report.md │ │ │ └── feature_request.md │ │ ├── action-rs │ │ │ └── grcov.yml │ │ ├── dependabot.yml │ │ ├── landing_page │ │ │ ├── gnosis_safe_logo.png │ │ │ └── index.html │ │ ├── pull_request_template.md │ │ └── workflows │ │ │ ├── cla.yml │ │ │ └── rust.yml │ ├── .gitignore │ ├── Cargo.lock │ ├── Cargo.toml │ ├── Dockerfile │ ├── LICENSE │ ├── Procfile │ ├── README.md │ ├── add_rustfmt_git_hook.sh │ ├── docker-compose.yml │ ├── rust-toolchain │ ├── rustfmt.toml │ ├── scripts │ │ ├── cache_warmer │ │ │ ├── requirements.txt │ │ │ └── start.py │ │ ├── deploy_docker.sh │ │ └── generate_test_tx.sh │ └── src │ │ ├── cache │ │ ├── cache_op_executors.rs │ │ ├── cache_operations.rs │ │ ├── inner_cache.rs │ │ ├── mod.rs │ │ ├── redis.rs │ │ └── tests │ │ │ ├── cache_inner.rs │ │ │ ├── cache_operations.rs │ │ │ └── mod.rs │ │ ├── config │ │ ├── mod.rs │ │ └── tests │ │ │ └── mod.rs │ │ ├── json │ │ ├── balances │ │ │ ├── balance_compound_ether.json │ │ │ └── balance_ether.json │ │ ├── chains │ │ │ ├── rinkeby.json │ │ │ ├── rinkeby_fixed_gas_price.json │ │ │ ├── rinkeby_rpc_auth_unknown.json │ │ │ ├── rinkeby_rpc_no_auth.json │ │ │ └── rinkeby_unknown_gas_price.json │ │ ├── commons │ │ │ ├── DOCTORED_data_decoded_nested_multi_sends.json │ │ │ ├── data_decoded_add_owner_with_threshold.json │ │ │ ├── data_decoded_change_master_copy.json │ │ │ ├── data_decoded_change_threshold.json │ │ │ ├── data_decoded_disable_module.json │ │ │ ├── data_decoded_enable_module.json │ │ │ ├── data_decoded_exec_transaction_from_module.json │ │ │ ├── data_decoded_multi_send.json │ │ │ ├── data_decoded_multi_send_single_inner_transaction.json │ │ │ ├── data_decoded_nested_safe_interaction.json │ │ │ ├── data_decoded_remove_owner.json │ │ │ ├── data_decoded_set_fallback_handler.json │ │ │ ├── data_decoded_swap_array_values.json │ │ │ └── data_decoded_swap_owner.json │ │ ├── mod.rs │ │ ├── results │ │ │ └── tx_details_with_origin.json │ │ ├── safes │ │ │ ├── with_guard_safe_v130.json │ │ │ ├── with_module_transactions.json │ │ │ ├── with_modules.json │ │ │ ├── with_modules_and_high_nonce.json │ │ │ └── with_threshold_two.json │ │ ├── tokens │ │ │ ├── bat.json │ │ │ ├── crypto_kitties.json │ │ │ ├── dai.json │ │ │ ├── pv_memorial_token.json │ │ │ └── usdt.json │ │ ├── transactions │ │ │ ├── backend_history_transaction_list_page.json │ │ │ ├── backend_queued_transaction_list_page_conflicts_393.json │ │ │ ├── backend_queued_transaction_list_page_conflicts_394.json │ │ │ ├── backend_queued_transaction_list_page_no_conflicts.json │ │ │ ├── ethereum_inconsistent_token_types.json │ │ │ ├── module_addOwnerWithThreshold_settings_change.json │ │ │ ├── module_erc20_transfer.json │ │ │ ├── module_erc721_transfer.json │ │ │ ├── module_ether_transfer.json │ │ │ ├── module_newAndDifferentAddOwnerWithThreshold_settings_change.json │ │ │ ├── module_transaction.json │ │ │ ├── module_transaction_failed.json │ │ │ ├── multisig_addOwnerWithThreshold_settings_change.json │ │ │ ├── multisig_approve_custom.json │ │ │ ├── multisig_awaiting_confirmations.json │ │ │ ├── multisig_awaiting_confirmations_empty.json │ │ │ ├── multisig_awaiting_confirmations_null.json │ │ │ ├── multisig_awaiting_confirmations_required_null.json │ │ │ ├── multisig_awaiting_execution.json │ │ │ ├── multisig_cancellation_transaction.json │ │ │ ├── multisig_confirmations_null.json │ │ │ ├── multisig_erc20_transfer.json │ │ │ ├── multisig_erc20_transfer_delegate.json │ │ │ ├── multisig_erc20_transfer_invalid_to_and_from.json │ │ │ ├── multisig_erc20_transfer_with_value.json │ │ │ ├── multisig_erc721_transfer.json │ │ │ ├── multisig_erc721_transfer_cancelled.json │ │ │ ├── multisig_erc721_transfer_invalid_to_and_from.json │ │ │ ├── multisig_ether_transfer.json │ │ │ ├── multisig_failed_transfer.json │ │ │ ├── multisig_newAndDifferentAddOwnerWithThreshold_settings_change.json │ │ │ └── multisig_with_origin.json │ │ └── transfers │ │ │ ├── erc20_transfer_with_erc721_token_info.json │ │ │ ├── erc_20_transfer_with_token_info_incoming.json │ │ │ ├── erc_20_transfer_with_token_info_outgoing.json │ │ │ ├── erc_20_transfer_without_token_info.json │ │ │ ├── erc_721_transfer_with_token_info_incoming.json │ │ │ ├── erc_721_transfer_with_token_info_outgoing.json │ │ │ ├── erc_721_transfer_without_token_info.json │ │ │ ├── ether_transfer_incoming.json │ │ │ └── ether_transfer_outgoing.json │ │ ├── macros.rs │ │ ├── main.rs │ │ ├── models │ │ ├── backend │ │ │ ├── about.rs │ │ │ ├── balances.rs │ │ │ ├── chains.rs │ │ │ ├── mod.rs │ │ │ ├── notifications.rs │ │ │ ├── safes.rs │ │ │ ├── transactions.rs │ │ │ ├── transfers.rs │ │ │ └── webhooks.rs │ │ ├── commons.rs │ │ ├── converters │ │ │ ├── .DS_Store │ │ │ ├── balances.rs │ │ │ ├── chains.rs │ │ │ ├── data_decoded.rs │ │ │ ├── mod.rs │ │ │ ├── page_metadata.rs │ │ │ ├── safes.rs │ │ │ ├── tests │ │ │ │ ├── balances.rs │ │ │ │ ├── data_decoded.rs │ │ │ │ ├── get_address_ex_from_any_source.rs │ │ │ │ ├── get_transfer_direction.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── page_metadata.rs │ │ │ │ ├── safes.rs │ │ │ │ ├── transfer_erc20.rs │ │ │ │ ├── transfer_erc721.rs │ │ │ │ ├── transfer_ether.rs │ │ │ │ └── transfers.rs │ │ │ ├── transactions │ │ │ │ ├── details.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── safe_app_info.rs │ │ │ │ ├── summary.rs │ │ │ │ └── tests │ │ │ │ │ ├── check_sender_or_receiver.rs │ │ │ │ │ ├── data_size_calculation.rs │ │ │ │ │ ├── details.rs │ │ │ │ │ ├── is_cancellation.rs │ │ │ │ │ ├── map_status.rs │ │ │ │ │ ├── missing_signers.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── safe_app_info.rs │ │ │ │ │ ├── summary.rs │ │ │ │ │ ├── transaction_types.rs │ │ │ │ │ └── transfer_type_checks.rs │ │ │ └── transfers.rs │ │ ├── mod.rs │ │ ├── service │ │ │ ├── about.rs │ │ │ ├── addresses.rs │ │ │ ├── balances.rs │ │ │ ├── chains.rs │ │ │ ├── mod.rs │ │ │ ├── notifications.rs │ │ │ ├── safes.rs │ │ │ ├── transactions │ │ │ │ ├── details.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── requests.rs │ │ │ │ └── summary.rs │ │ │ └── utils.rs │ │ └── tests │ │ │ ├── chains.rs │ │ │ ├── commons.rs │ │ │ └── mod.rs │ │ ├── monitoring │ │ ├── mod.rs │ │ ├── performance.rs │ │ └── tests │ │ │ ├── mod.rs │ │ │ └── path_patterns.rs │ │ ├── providers │ │ ├── address_info.rs │ │ ├── ext.rs │ │ ├── fiat.rs │ │ ├── info.rs │ │ └── mod.rs │ │ ├── routes │ │ ├── about.rs │ │ ├── balances.rs │ │ ├── chains.rs │ │ ├── collectibles.rs │ │ ├── health.rs │ │ ├── hooks.rs │ │ ├── mod.rs │ │ ├── notifications.rs │ │ ├── safes.rs │ │ ├── transactions.rs │ │ └── utils.rs │ │ ├── services │ │ ├── about.rs │ │ ├── balances.rs │ │ ├── chains.rs │ │ ├── collectibles.rs │ │ ├── hooks.rs │ │ ├── mod.rs │ │ ├── notifications.rs │ │ ├── safes.rs │ │ ├── tests │ │ │ ├── backend_url.rs │ │ │ ├── invalidate_caches.rs │ │ │ ├── mod.rs │ │ │ ├── parse_id.rs │ │ │ ├── transactions_history.rs │ │ │ └── transactions_queued.rs │ │ ├── transactions_details.rs │ │ ├── transactions_history.rs │ │ ├── transactions_proposal.rs │ │ ├── transactions_queued.rs │ │ └── utils.rs │ │ └── utils │ │ ├── context.rs │ │ ├── cors.rs │ │ ├── errors.rs │ │ ├── json.rs │ │ ├── mod.rs │ │ ├── tests │ │ ├── data_decoded_utils.rs │ │ ├── errors.rs │ │ ├── json.rs │ │ ├── macros.rs │ │ ├── method_names.rs │ │ ├── mod.rs │ │ ├── transactions.rs │ │ └── urls.rs │ │ ├── transactions.rs │ │ └── urls.rs ├── safe-config-service │ ├── .coveragerc │ ├── .dockerignore │ ├── .env.example │ ├── .flake8 │ ├── .github │ │ ├── CODEOWNERS │ │ ├── dependabot.yml │ │ └── workflows │ │ │ ├── publish-staging.yml │ │ │ ├── publish-tag.yml │ │ │ └── test.yml │ ├── .gitignore │ ├── .pre-commit-config.yaml │ ├── Dockerfile │ ├── LICENSE │ ├── README.md │ ├── docker-compose.override.yml.example │ ├── docker-compose.yml │ ├── docker-entrypoint.sh │ ├── nginx │ │ └── templates │ │ │ └── nginx.conf.template │ ├── pyproject.toml │ ├── requirements-dev.txt │ ├── requirements.txt │ ├── run │ └── src │ │ ├── about │ │ ├── __init__.py │ │ ├── apps.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ └── test_views.py │ │ ├── urls.py │ │ └── views.py │ │ ├── chains │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_chain_transaction_service_url.py │ │ │ ├── 0003_auto_20210617_1444.py │ │ │ ├── 0004_auto_20210622_1353.py │ │ │ ├── 0005_chain_relevance.py │ │ │ ├── 0006_change_color_default_help_text.py │ │ │ ├── 0007_chain_currency_logo_url.py │ │ │ ├── 0008_chain_ens_registry_address.py │ │ │ ├── 0009_chain_gas_price_oracle_gwei_factor.py │ │ │ ├── 0010_chain_min_master_copy_version.py │ │ │ ├── 0011_rename_min_master_copy_version_chain_recommended_master_copy_version.py │ │ │ ├── 0012_chain_gas_price_fixed_wei.py │ │ │ ├── 0013_rename_url_uri.py │ │ │ ├── 0014_alter_chain_transaction_service_uri.py │ │ │ ├── 0015_alter_chain_currency_name.py │ │ │ ├── 0016_alter_chain_block_explorer_uri.py │ │ │ ├── 0017_alter_chain_block_explorer_uri.py │ │ │ ├── 0018_chain_rpc_authentication.py │ │ │ ├── 0019_add_safe_apps_rpc.py │ │ │ ├── 0020_block_explorer_templates.py │ │ │ ├── 0021_alter_chain_safe_apps_rpc_authentication.py │ │ │ ├── 0022_remove_chain_block_explorer_uri.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── serializers.py │ │ ├── signals.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── factories.py │ │ │ ├── test_models.py │ │ │ ├── test_signals.py │ │ │ └── test_views.py │ │ ├── urls.py │ │ └── views.py │ │ ├── config │ │ ├── __init__.py │ │ ├── asgi.py │ │ ├── gunicorn.py │ │ ├── middleware.py │ │ ├── settings.py │ │ ├── swagger_info.py │ │ ├── urls.py │ │ └── wsgi.py │ │ ├── manage.py │ │ ├── safe_apps │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_rename_networks_safeapp_chain_ids.py │ │ │ ├── 0003_alter_safeapp_provider.py │ │ │ ├── 0004_add_auto_pk.py │ │ │ ├── 0005_safeapp_visible.py │ │ │ ├── 0006_safeapp_chain_ids_big_int.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── serializers.py │ │ ├── signals.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── factories.py │ │ │ ├── test_admin.py │ │ │ ├── test_models.py │ │ │ └── test_views.py │ │ ├── urls.py │ │ └── views.py │ │ └── version.py └── safe-transaction-service │ ├── .coveragerc │ ├── .dockerignore │ ├── .env.dev │ ├── .env.l2.sample │ ├── .env.local │ ├── .env.test │ ├── .env.tracing.sample │ ├── .gitattributes │ ├── .github │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ └── workflows │ │ └── python.yml │ ├── .gitignore │ ├── CONTRIBUTORS.txt │ ├── LICENSE │ ├── README.md │ ├── config │ ├── __init__.py │ ├── celery_app.py │ ├── settings │ │ ├── __init__.py │ │ ├── base.py │ │ ├── local.py │ │ ├── production.py │ │ └── test.py │ ├── urls.py │ └── wsgi.py │ ├── docker-compose.dev.yml │ ├── docker-compose.yml │ ├── docker │ ├── nginx │ │ └── nginx.conf │ └── web │ │ ├── Dockerfile │ │ ├── Dockerfile_alpine │ │ ├── celery │ │ ├── scheduler │ │ │ └── run.sh │ │ └── worker │ │ │ └── run.sh │ │ └── run_web.sh │ ├── docker_instructions.txt │ ├── docs │ ├── Docs.mdj │ ├── Makefile │ ├── __init__.py │ ├── conf.py │ ├── deploy.rst │ ├── docker_ec2.rst │ ├── index.rst │ └── install.rst │ ├── gunicorn.conf.py │ ├── manage.py │ ├── requirements-dev.txt │ ├── requirements-test.txt │ ├── requirements.txt │ ├── run_tests.sh │ ├── safe_transaction_service │ ├── __init__.py │ ├── contracts │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── decoder_abis │ │ │ ├── __init__.py │ │ │ ├── aave.py │ │ │ ├── admin_upgradeability_proxy.py │ │ │ ├── balancer.py │ │ │ ├── chainlink.py │ │ │ ├── compound.py │ │ │ ├── gnosis_protocol.py │ │ │ ├── gnosis_safe.py │ │ │ ├── idle.py │ │ │ ├── maker_dao.py │ │ │ ├── open_zeppelin.py │ │ │ ├── request.py │ │ │ ├── sablier.py │ │ │ ├── sight.py │ │ │ ├── snapshot.py │ │ │ └── timelock.py │ │ ├── management │ │ │ ├── __init__.py │ │ │ └── commands │ │ │ │ ├── __init__.py │ │ │ │ └── index_contracts_with_metadata.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_auto_20210119_1136.py │ │ │ ├── 0003_auto_20210122_1352.py │ │ │ ├── 0004_auto_20210125_0925.py │ │ │ ├── 0005_alter_contractabi_id.py │ │ │ ├── 0006_contractabi_abi_hash.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── pagination.py │ │ ├── serializers.py │ │ ├── signals.py │ │ ├── tasks.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── factories.py │ │ │ ├── test_models.py │ │ │ ├── test_tasks.py │ │ │ ├── test_tx_decoder.py │ │ │ └── test_views.py │ │ ├── tx_decoder.py │ │ ├── urls.py │ │ └── views.py │ ├── history │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── clients │ │ │ ├── __init__.py │ │ │ └── ens_client.py │ │ ├── decorators.py │ │ ├── exceptions.py │ │ ├── filters.py │ │ ├── helpers.py │ │ ├── indexers │ │ │ ├── __init__.py │ │ │ ├── abis │ │ │ │ ├── __init__.py │ │ │ │ └── gnosis.py │ │ │ ├── erc20_events_indexer.py │ │ │ ├── ethereum_indexer.py │ │ │ ├── events_indexer.py │ │ │ ├── internal_tx_indexer.py │ │ │ ├── proxy_factory_indexer.py │ │ │ ├── safe_events_indexer.py │ │ │ └── tx_processor.py │ │ ├── management │ │ │ ├── __init__.py │ │ │ └── commands │ │ │ │ ├── __init__.py │ │ │ │ ├── bind_confirmations.py │ │ │ │ ├── check_index_problems.py │ │ │ │ ├── decode_txs_again.py │ │ │ │ ├── export_multisig_tx_data.py │ │ │ │ ├── fix_ethereum_logs.py │ │ │ │ ├── fix_ethereum_txs.py │ │ │ │ ├── index_erc20.py │ │ │ │ ├── process_txs_again.py │ │ │ │ ├── send_slack_notification.py │ │ │ │ └── setup_service.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_auto_20190725_0857.py │ │ │ ├── 0003_auto_20191107_1459.py │ │ │ ├── 0004_auto_20191118_1001.py │ │ │ ├── 0005_multisigtransaction_failed.py │ │ │ ├── 0006_auto_20200113_1204.py │ │ │ ├── 0007_auto_20200122_1305.py │ │ │ ├── 0008_ethereumtx_logs.py │ │ │ ├── 0009_multisigtransaction_origin.py │ │ │ ├── 0010_auto_20200226_1508.py │ │ │ ├── 0011_auto_20200303_0956.py │ │ │ ├── 0012_moduletransaction.py │ │ │ ├── 0013_multisigtransaction_fix_failed.py │ │ │ ├── 0014_auto_20200327_0954.py │ │ │ ├── 0015_auto_20200327_1233.py │ │ │ ├── 0016_multisigconfirmation_signature_type.py │ │ │ ├── 0017_safecontractdelegate.py │ │ │ ├── 0018_multisigtransaction_trusted.py │ │ │ ├── 0019_transactions_data_none.py │ │ │ ├── 0020_safemastercopy_version.py │ │ │ ├── 0021_moduletransaction_failed.py │ │ │ ├── 0022_auto_20200903_1045.py │ │ │ ├── 0023_auto_20200924_0841.py │ │ │ ├── 0024_auto_20201014_1523.py │ │ │ ├── 0025_auto_20201015_1147.py │ │ │ ├── 0026_auto_20201030_1355.py │ │ │ ├── 0027_remove_errored_internal_txs_20201112_1547.py │ │ │ ├── 0028_auto_20201112_1613.py │ │ │ ├── 0029_auto_20201118_1015.py │ │ │ ├── 0030_auto_20210203_1541.py │ │ │ ├── 0031_webhook_new_safe.py │ │ │ ├── 0032_webhook_new_module_transaction.py │ │ │ ├── 0033_auto_20210318_1654.py │ │ │ ├── 0034_webhook_new_outgoing_transaction.py │ │ │ ├── 0035_safemastercopy_deployer.py │ │ │ ├── 0036_fix_exec_from_module.py │ │ │ ├── 0037_fix_failed_module_transactions.py │ │ │ ├── 0038_safestatus_guard.py │ │ │ ├── 0039_safel2mastercopy_20210519.py │ │ │ ├── 0040_auto_20210607_1007.py │ │ │ ├── 0041_auto_20210729_0916.py │ │ │ ├── 0042_safestatus_history_saf_address_1c362b_idx.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── pagination.py │ │ ├── serializers.py │ │ ├── services │ │ │ ├── __init__.py │ │ │ ├── balance_service.py │ │ │ ├── collectibles_service.py │ │ │ ├── index_service.py │ │ │ ├── reorg_service.py │ │ │ ├── safe_service.py │ │ │ └── transaction_service.py │ │ ├── signals.py │ │ ├── tasks.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── clients │ │ │ │ ├── __init__.py │ │ │ │ └── test_ens_client.py │ │ │ ├── factories.py │ │ │ ├── mocks │ │ │ │ ├── __init__.py │ │ │ │ ├── mocks_internal_tx_indexer.py │ │ │ │ └── traces.py │ │ │ ├── test_balance_service.py │ │ │ ├── test_collectibles_service.py │ │ │ ├── test_commands.py │ │ │ ├── test_delegate_signature_helper.py │ │ │ ├── test_erc20_events_indexer.py │ │ │ ├── test_index_service.py │ │ │ ├── test_internal_tx_indexer.py │ │ │ ├── test_models.py │ │ │ ├── test_proxy_factory_indexer.py │ │ │ ├── test_reorg_service.py │ │ │ ├── test_safe_events_indexer.py │ │ │ ├── test_safe_service.py │ │ │ ├── test_signals.py │ │ │ ├── test_tasks.py │ │ │ ├── test_transaction_service.py │ │ │ ├── test_tx_processor.py │ │ │ ├── test_views.py │ │ │ └── utils.py │ │ ├── urls.py │ │ ├── utils.py │ │ └── views.py │ ├── notifications │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── clients │ │ │ ├── __init__.py │ │ │ └── firebase_client.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_auto_20200806_1534.py │ │ │ ├── 0003_firebasedeviceowner.py │ │ │ ├── 0004_alter_firebasedeviceowner_id.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── serializers.py │ │ ├── tasks.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── factories.py │ │ │ ├── test_models.py │ │ │ ├── test_tasks.py │ │ │ └── test_views.py │ │ ├── urls.py │ │ ├── utils.py │ │ └── views.py │ ├── static │ │ ├── .gitignore │ │ └── safe │ │ │ ├── favicon.png │ │ │ ├── gnosis_safe_rgb_sticke_geen.png │ │ │ └── logo.svg │ ├── templates │ │ └── drf-yasg │ │ │ └── swagger-ui.html │ ├── tokens │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── clients │ │ │ ├── __init__.py │ │ │ ├── binance_client.py │ │ │ ├── coingecko_client.py │ │ │ ├── coinmarketcap_client.py │ │ │ ├── exceptions.py │ │ │ ├── kleros_abi.py │ │ │ ├── kleros_client.py │ │ │ ├── kraken_client.py │ │ │ ├── kucoin_client.py │ │ │ ├── safe_relay_token_client.py │ │ │ └── zerion_client.py │ │ ├── constants.py │ │ ├── filters.py │ │ ├── management │ │ │ ├── __init__.py │ │ │ └── commands │ │ │ │ ├── __init__.py │ │ │ │ ├── add_token.py │ │ │ │ ├── update_tokens_from_coinmarketcap.py │ │ │ │ └── update_tokens_from_relay.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_auto_20200903_1045.py │ │ │ ├── 0003_auto_20201222_1053.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── serializers.py │ │ ├── services │ │ │ ├── __init__.py │ │ │ └── price_service.py │ │ ├── tasks.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── clients │ │ │ │ ├── __init__.py │ │ │ │ ├── test_clients.py │ │ │ │ ├── test_coingecko_client.py │ │ │ │ ├── test_coinmarketcap_client.py │ │ │ │ ├── test_kleros_client.py │ │ │ │ ├── test_safe_relay_token_client.py │ │ │ │ └── test_zerion_client.py │ │ │ ├── factories.py │ │ │ ├── test_commands.py │ │ │ ├── test_models.py │ │ │ ├── test_price_service.py │ │ │ ├── test_tasks.py │ │ │ └── test_views.py │ │ ├── urls.py │ │ └── views.py │ └── utils │ │ ├── __init__.py │ │ ├── celery.py │ │ ├── ethereum.py │ │ ├── loggers.py │ │ ├── redis.py │ │ ├── tasks.py │ │ ├── tests │ │ ├── __init__.py │ │ └── test_tasks.py │ │ └── utils.py │ ├── scripts │ ├── benchmark_node.py │ └── deploy_docker.sh │ └── setup.cfg └── hoprnet └── safe-react ├── .dockerignore ├── .env.example ├── .eslintignore ├── .eslintrc.js ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.md │ └── feature-request.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── cla.yml │ ├── comment-on-e2e-success.yml │ ├── deploy-bsc.yml │ ├── deploy-ewc.yml │ ├── deploy-mainnet.yml │ ├── deploy-polygon.yml │ ├── deploy-rinkeby.yml │ ├── deploy-volta.yml │ ├── deploy-xdai.yml │ ├── lint.yml │ ├── release-mainnet-desktop.yml │ └── test.yml ├── .gitignore ├── .husky ├── pre-commit └── pre-push ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .rescriptsrc ├── .storybook ├── main.js ├── preview-body.html └── preview.js ├── Dockerfile ├── GNOSISCLA.md ├── LICENSE.md ├── README.md ├── config └── jest │ ├── LocalStorageMock.js │ ├── Web3Mock.js │ ├── cssTransform.js │ └── fileTransform.js ├── dev-app-update.yml ├── docker-compose.yml ├── docs ├── networks.md └── release-procedure.md ├── package.json ├── patches ├── ethereum-cryptography++secp256k1+4.0.2.patch ├── web3-eth+1.3.6.patch └── web3-eth-ens+1.3.6.patch ├── public ├── auto-updater │ └── index.ts ├── electron.ts ├── favicon.ico ├── index.html ├── resources │ ├── all-certs.p12 │ ├── background.png │ ├── entitlements.mac.plist │ ├── icon.icns │ ├── icon.ico │ └── safe.png └── ssl │ ├── client.crt │ ├── client.csr │ ├── client.key │ ├── client.p12 │ ├── rootCA.crt │ ├── rootCA.key │ ├── rootCA.srl │ ├── server.crt │ ├── server.csr │ ├── server.key │ └── setup.sh ├── scripts ├── github │ ├── deploy_pull_request.sh │ ├── deploy_release.sh │ └── prepare_production_deployment.sh ├── notarize.js ├── preload.js └── rescripts │ └── webpack.js ├── src ├── assets │ ├── fonts │ │ ├── Averta-ExtraBold.woff2 │ │ └── Averta-normal.woff2 │ └── icons │ │ ├── alert.svg │ │ ├── apps.svg │ │ ├── check.svg │ │ ├── check_bg.svg │ │ ├── error.svg │ │ ├── info.svg │ │ ├── info_red.svg │ │ ├── qrcode.svg │ │ └── shape.svg ├── components │ ├── App │ │ ├── ReceiveModal.tsx │ │ └── index.tsx │ ├── AppLayout │ │ ├── AppLayout.stories.tsx │ │ ├── Footer │ │ │ └── index.tsx │ │ ├── Header │ │ │ ├── assets │ │ │ │ ├── dotRinkeby.svg │ │ │ │ ├── gnosis-safe-multisig-logo.svg │ │ │ │ ├── key.svg │ │ │ │ ├── triangle.svg │ │ │ │ └── wallet.svg │ │ │ ├── components │ │ │ │ ├── CircleDot.tsx │ │ │ │ ├── KeyRing.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ ├── NetworkLabel.tsx │ │ │ │ ├── NetworkSelector.tsx │ │ │ │ ├── Provider.tsx │ │ │ │ ├── ProviderDetails │ │ │ │ │ ├── ConnectDetails.tsx │ │ │ │ │ └── UserDetails.tsx │ │ │ │ ├── ProviderInfo │ │ │ │ │ ├── ProviderAccessible.tsx │ │ │ │ │ └── ProviderDisconnected.tsx │ │ │ │ └── WalletIcon │ │ │ │ │ ├── icons │ │ │ │ │ ├── icon-authereum.png │ │ │ │ │ ├── icon-coinbase.svg │ │ │ │ │ ├── icon-fortmatic.svg │ │ │ │ │ ├── icon-lattice.svg │ │ │ │ │ ├── icon-ledger.svg │ │ │ │ │ ├── icon-metamask.png │ │ │ │ │ ├── icon-opera-touch.png │ │ │ │ │ ├── icon-opera.png │ │ │ │ │ ├── icon-portis.svg │ │ │ │ │ ├── icon-squarelink.png │ │ │ │ │ ├── icon-torus.svg │ │ │ │ │ ├── icon-trezor.svg │ │ │ │ │ ├── icon-trust.svg │ │ │ │ │ ├── icon-wallet-connect.svg │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── MobileNotSupported │ │ │ └── index.tsx │ │ ├── MobileStart │ │ │ └── assets │ │ │ │ └── phone@2x.png │ │ ├── Sidebar │ │ │ ├── SafeHeader │ │ │ │ ├── index.stories.tsx │ │ │ │ └── index.tsx │ │ │ ├── index.stories.tsx │ │ │ ├── index.tsx │ │ │ └── useSidebarItems.tsx │ │ └── index.tsx │ ├── ButtonHelper │ │ └── index.tsx │ ├── Collapse │ │ └── index.tsx │ ├── ConnectButton │ │ └── index.tsx │ ├── CookiesBanner │ │ ├── assets │ │ │ ├── alert-red.svg │ │ │ └── intercom.png │ │ └── index.tsx │ ├── CustomIconText │ │ └── index.tsx │ ├── DecodeTxs │ │ ├── __tests__ │ │ │ └── index.ts │ │ └── index.tsx │ ├── Divider │ │ ├── divider.stories.tsx │ │ └── index.tsx │ ├── FlexSpacer │ │ └── index.tsx │ ├── GlobalErrorBoundary │ │ └── index.tsx │ ├── InfiniteScroll │ │ └── index.tsx │ ├── List │ │ ├── ListIcon.tsx │ │ ├── ListItemText │ │ │ └── index.tsx │ │ ├── index.tsx │ │ └── list.stories.tsx │ ├── ListContentLayout │ │ ├── Layout.ts │ │ ├── List.tsx │ │ ├── index.ts │ │ └── style.ts │ ├── LoaderContainer │ │ └── index.tsx │ ├── Modal │ │ ├── index.stories.tsx │ │ └── index.tsx │ ├── ModalTitle │ │ └── index.tsx │ ├── Notifier │ │ ├── actions.ts │ │ ├── index.ts │ │ └── selector.ts │ ├── Root │ │ ├── OnboardCustom.module.scss │ │ ├── index.module.scss │ │ └── index.tsx │ ├── SafeListSidebar │ │ ├── SafeList │ │ │ ├── AddressWrapper.tsx │ │ │ ├── DefaultBadge.tsx │ │ │ ├── OwnedAddress.tsx │ │ │ ├── assets │ │ │ │ └── star.svg │ │ │ └── index.tsx │ │ ├── index.tsx │ │ ├── selectors.ts │ │ └── style.ts │ ├── ScanQRModal │ │ ├── ScanQRWrapper │ │ │ └── index.tsx │ │ ├── index.tsx │ │ └── style.ts │ ├── Spacer │ │ └── index.tsx │ ├── Stepper │ │ ├── Controls │ │ │ └── index.tsx │ │ ├── OpenPaper │ │ │ └── index.tsx │ │ └── index.tsx │ ├── Table │ │ ├── TableHead.tsx │ │ ├── index.tsx │ │ ├── sorting.ts │ │ └── types.d.ts │ ├── TextBox │ │ └── index.tsx │ ├── TransactionFailText │ │ └── index.tsx │ ├── TransactionsFees │ │ └── index.tsx │ ├── WhenFieldChanges │ │ └── index.tsx │ ├── forms │ │ ├── AddressInput │ │ │ └── index.tsx │ │ ├── Field │ │ │ └── index.tsx │ │ ├── GnoForm │ │ │ └── index.tsx │ │ ├── SelectField │ │ │ └── index.tsx │ │ ├── TextAreaField │ │ │ └── index.tsx │ │ ├── TextField │ │ │ └── index.tsx │ │ ├── validator.test.ts │ │ └── validator.ts │ └── layout │ │ ├── Backdrop │ │ └── index.tsx │ │ ├── Block │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Bold │ │ └── index.tsx │ │ ├── Button │ │ └── index.tsx │ │ ├── ButtonLink │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Col │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Divider │ │ └── index.tsx │ │ ├── Hairline │ │ └── index.tsx │ │ ├── Heading │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Img │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Link │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Page │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Paragraph │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Pre │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Row │ │ ├── index.module.scss │ │ └── index.tsx │ │ ├── Span │ │ └── index.tsx │ │ └── Table │ │ └── index.tsx ├── config │ ├── __tests__ │ │ └── config.test.ts │ ├── assets │ │ ├── token_bnb.svg │ │ ├── token_eth.svg │ │ ├── token_ewc.svg │ │ ├── token_matic.svg │ │ └── token_xdai.svg │ ├── index.ts │ └── networks │ │ ├── __tests__ │ │ └── networks.test.ts │ │ ├── bsc.ts │ │ ├── energy_web_chain.ts │ │ ├── index.ts │ │ ├── local.ts │ │ ├── mainnet.ts │ │ ├── network.d.ts │ │ ├── polygon.ts │ │ ├── rinkeby.ts │ │ ├── volta.ts │ │ └── xdai.ts ├── index.tsx ├── logic │ ├── addressBook │ │ ├── model │ │ │ └── addressBook.ts │ │ ├── store │ │ │ ├── actions │ │ │ │ └── index.ts │ │ │ ├── middleware │ │ │ │ └── index.ts │ │ │ ├── reducer │ │ │ │ └── index.ts │ │ │ └── selectors │ │ │ │ └── index.ts │ │ └── utils │ │ │ ├── __tests__ │ │ │ └── addressBookUtils.test.ts │ │ │ ├── index.ts │ │ │ └── v2-migration.ts │ ├── collectibles │ │ ├── sources │ │ │ ├── Gnosis.ts │ │ │ ├── collectibles.d.ts │ │ │ └── index.ts │ │ ├── store │ │ │ ├── actions │ │ │ │ ├── addCollectibles.ts │ │ │ │ └── fetchCollectibles.ts │ │ │ ├── reducer │ │ │ │ └── collectibles.ts │ │ │ └── selectors │ │ │ │ └── index.ts │ │ └── utils │ │ │ ├── __tests__ │ │ │ └── getTransferMethodByContractAddress.test.ts │ │ │ └── index.ts │ ├── configService │ │ └── index.ts │ ├── contractInteraction │ │ └── sources │ │ │ └── ABIService │ │ │ └── index.ts │ ├── contracts │ │ ├── api │ │ │ └── masterCopies.ts │ │ ├── artifacts │ │ │ └── AllowanceModule.json │ │ ├── generateBatchRequests.ts │ │ ├── methodIds.ts │ │ ├── safeContracts.ts │ │ └── spendingLimitContracts.ts │ ├── cookies │ │ ├── model │ │ │ └── cookie.ts │ │ ├── store │ │ │ ├── actions │ │ │ │ └── openCookieBanner.ts │ │ │ ├── reducer │ │ │ │ └── cookies.ts │ │ │ └── selectors │ │ │ │ └── index.ts │ │ └── utils │ │ │ └── index.ts │ ├── currencyValues │ │ ├── api │ │ │ └── fetchAvailableCurrencies.ts │ │ └── store │ │ │ ├── actions │ │ │ ├── fetchSelectedCurrency.ts │ │ │ ├── setAvailableCurrencies.ts │ │ │ ├── setSelectedCurrency.ts │ │ │ └── updateAvailableCurrencies.ts │ │ │ ├── middleware │ │ │ └── currencyValuesStorageMiddleware.ts │ │ │ ├── reducer │ │ │ └── currencyValues.ts │ │ │ └── selectors │ │ │ └── index.ts │ ├── currentSession │ │ ├── store │ │ │ ├── actions │ │ │ │ ├── addViewedSafe.ts │ │ │ │ ├── loadCurrentSession.ts │ │ │ │ ├── loadCurrentSessionFromStorage.ts │ │ │ │ └── updateViewedSafes.ts │ │ │ └── reducer │ │ │ │ └── currentSession.ts │ │ └── utils │ │ │ └── index.ts │ ├── exceptions │ │ ├── CodedException.test.ts │ │ ├── CodedException.ts │ │ └── registry.ts │ ├── hooks │ │ ├── __tests__ │ │ │ ├── useEstimateTransactionGas.test.ts │ │ │ └── useMnemonicName.test.ts │ │ ├── useDebounce.tsx │ │ ├── useEstimateSafeCreationGas.tsx │ │ ├── useEstimateTransactionGas.tsx │ │ ├── useEstimationStatus.tsx │ │ ├── useMnemonicName.dict.ts │ │ ├── useMnemonicName.ts │ │ ├── useSafeAppUrl.tsx │ │ ├── useStateHandler.tsx │ │ └── useWindowDimensions.tsx │ ├── notifications │ │ ├── index.ts │ │ ├── notificationBuilder.tsx │ │ ├── notificationTypes.ts │ │ └── store │ │ │ ├── actions │ │ │ ├── closeSnackbar.ts │ │ │ ├── enqueueSnackbar.tsx │ │ │ └── removeSnackbar.ts │ │ │ ├── reducer │ │ │ └── notifications.ts │ │ │ └── selectors │ │ │ └── index.ts │ ├── safe │ │ ├── api │ │ │ ├── __tests__ │ │ │ │ └── fetchTokenCurrenciesBalances.test.ts │ │ │ ├── fetchSafeTxGasEstimation.ts │ │ │ ├── fetchSafesByOwner.ts │ │ │ └── fetchTokenCurrenciesBalances.ts │ │ ├── hooks │ │ │ ├── useFetchTokens.tsx │ │ │ ├── useLoadSafe.tsx │ │ │ ├── useOwnerSafes.ts │ │ │ ├── useSafeActions.tsx │ │ │ ├── useSafeScheduledUpdates.tsx │ │ │ └── useTokenInfo.tsx │ │ ├── safeTxSigner.ts │ │ ├── store │ │ │ ├── actions │ │ │ │ ├── __tests__ │ │ │ │ │ ├── fetchSafe.test.ts │ │ │ │ │ ├── transactionHelpers.test.ts │ │ │ │ │ └── utils.test.ts │ │ │ │ ├── addOrUpdateSafe.ts │ │ │ │ ├── createTransaction.ts │ │ │ │ ├── fetchLatestMasterContractVersion.ts │ │ │ │ ├── fetchSafe.ts │ │ │ │ ├── fetchTransactionDetails.ts │ │ │ │ ├── loadDefaultSafe.ts │ │ │ │ ├── loadSafesFromStorage.ts │ │ │ │ ├── mocks │ │ │ │ │ └── safeInformation.ts │ │ │ │ ├── processTransaction.ts │ │ │ │ ├── removeSafe.ts │ │ │ │ ├── setDefaultSafe.ts │ │ │ │ ├── setLatestMasterContractVersion.ts │ │ │ │ ├── transactions │ │ │ │ │ ├── fetchTransactions │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── loadGatewayTransactions.ts │ │ │ │ │ │ └── loadOutgoingTransactions.ts │ │ │ │ │ ├── gatewayTransactions.ts │ │ │ │ │ └── utils │ │ │ │ │ │ └── transactionHelpers.ts │ │ │ │ ├── types.d.ts │ │ │ │ ├── updateSafe.ts │ │ │ │ ├── updateTransactionStatus.ts │ │ │ │ └── utils.ts │ │ │ ├── middleware │ │ │ │ ├── notificationsMiddleware.ts │ │ │ │ └── safeStorage.ts │ │ │ ├── models │ │ │ │ ├── confirmation.ts │ │ │ │ ├── safe.ts │ │ │ │ └── types │ │ │ │ │ ├── confirmation.ts │ │ │ │ │ ├── gateway.d.ts │ │ │ │ │ ├── transaction.ts │ │ │ │ │ └── transactions.d.ts │ │ │ ├── reducer │ │ │ │ ├── gatewayTransactions.ts │ │ │ │ ├── safe.ts │ │ │ │ └── types │ │ │ │ │ └── safe.ts │ │ │ └── selectors │ │ │ │ ├── gatewayTransactions.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ ├── transactions │ │ │ ├── __tests__ │ │ │ │ └── txMonitor.test.ts │ │ │ ├── api │ │ │ │ └── fetchSafeTransaction.ts │ │ │ ├── awaitingTransactions.ts │ │ │ ├── gas.ts │ │ │ ├── index.ts │ │ │ ├── multisend.ts │ │ │ ├── notifiedTransactions.ts │ │ │ ├── offchainSigner │ │ │ │ ├── EIP712Signer.ts │ │ │ │ ├── ethSigner.ts │ │ │ │ ├── index.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ │ ├── send.ts │ │ │ ├── txHistory.ts │ │ │ └── txMonitor.ts │ │ └── utils │ │ │ ├── __tests__ │ │ │ ├── modules.test.ts │ │ │ └── shouldSafeStoreBeUpdated.test.ts │ │ │ ├── aboutToExecuteTx.ts │ │ │ ├── currencyValuesStorage.ts │ │ │ ├── index.ts │ │ │ ├── modules.ts │ │ │ ├── safeInformation.ts │ │ │ ├── safeStorage.ts │ │ │ ├── safeVersion.test.ts │ │ │ ├── safeVersion.ts │ │ │ ├── shouldSafeStoreBeUpdated.ts │ │ │ ├── spendingLimits.ts │ │ │ ├── upgradeSafe.test.ts │ │ │ └── upgradeSafe.ts │ ├── tokens │ │ ├── api │ │ │ ├── fetchErc20AndErc721AssetsList.ts │ │ │ ├── fetchSafeCollectibles.ts │ │ │ └── index.ts │ │ ├── store │ │ │ ├── actions │ │ │ │ ├── addToken.ts │ │ │ │ ├── addTokens.ts │ │ │ │ ├── fetchSafeTokens.ts │ │ │ │ └── fetchTokens.ts │ │ │ ├── model │ │ │ │ └── token.ts │ │ │ ├── reducer │ │ │ │ └── tokens.ts │ │ │ └── selectors │ │ │ │ └── index.ts │ │ └── utils │ │ │ ├── __tests__ │ │ │ └── formatAmount.test.ts │ │ │ ├── formatAmount.ts │ │ │ ├── humanReadableValue.ts │ │ │ └── tokenHelpers.ts │ └── wallets │ │ ├── __tests__ │ │ ├── ethAddresses.test.ts │ │ ├── getWeb3.test.ts │ │ └── network.test.ts │ │ ├── ethAddresses.ts │ │ ├── ethTransactions.ts │ │ ├── getWeb3.ts │ │ ├── store │ │ ├── actions │ │ │ ├── addProvider.ts │ │ │ ├── fetchProvider.ts │ │ │ ├── index.ts │ │ │ └── removeProvider.ts │ │ ├── middlewares │ │ │ └── providerWatcher.ts │ │ ├── model │ │ │ └── provider.ts │ │ ├── reducer │ │ │ └── provider.ts │ │ └── selectors │ │ │ └── index.ts │ │ ├── transactionDataCheck │ │ ├── images │ │ │ └── contractData.png │ │ └── index.ts │ │ └── utils │ │ ├── network.ts │ │ ├── unstoppableDomains.ts │ │ └── walletList.ts ├── react-app-env.d.ts ├── routes │ ├── index.tsx │ ├── load │ │ ├── components │ │ │ ├── DetailsForm │ │ │ │ └── index.tsx │ │ │ ├── Layout.tsx │ │ │ ├── OwnerList │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── ReviewInformation │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ └── fields.ts │ │ └── container │ │ │ └── Load.tsx │ ├── open │ │ ├── components │ │ │ ├── Layout.tsx │ │ │ ├── ReviewInformation │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── SafeNameForm │ │ │ │ └── index.tsx │ │ │ ├── SafeOwnersConfirmationsForm │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ ├── tests │ │ │ │ │ └── calculateValuesAfterRemoving.test.ts │ │ │ │ └── validators.ts │ │ │ └── fields.ts │ │ ├── container │ │ │ └── Open.tsx │ │ └── utils │ │ │ ├── padOwnerIndex.ts │ │ │ ├── safeDataExtractor.spec.ts │ │ │ └── safeDataExtractor.ts │ ├── opening │ │ ├── assets │ │ │ ├── creation-process.gif │ │ │ ├── safe-created.svg │ │ │ ├── vault-error.svg │ │ │ └── vault.svg │ │ ├── components │ │ │ └── Footer.tsx │ │ ├── container │ │ │ ├── index.tsx │ │ │ └── selector.ts │ │ ├── index.tsx │ │ ├── steps.ts │ │ └── utils │ │ │ └── getSafeAddressFromLogs.ts │ ├── routes.ts │ ├── safe │ │ ├── components │ │ │ ├── AddressBook │ │ │ │ ├── CreateEditEntryModal │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── DeleteEntryModal │ │ │ │ │ └── index.tsx │ │ │ │ ├── EllipsisTransactionDetails │ │ │ │ │ ├── copy.svg │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExportEntriesModal │ │ │ │ │ ├── assets │ │ │ │ │ │ ├── error.svg │ │ │ │ │ │ ├── success.svg │ │ │ │ │ │ └── wait.svg │ │ │ │ │ └── index.tsx │ │ │ │ ├── HelpInfo │ │ │ │ │ └── index.tsx │ │ │ │ ├── ImportEntriesModal │ │ │ │ │ └── index.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ └── utils.test.ts │ │ │ │ ├── columns.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── utils.ts │ │ │ ├── Apps │ │ │ │ ├── __tests__ │ │ │ │ │ └── utils.test.ts │ │ │ │ ├── assets │ │ │ │ │ └── addApp.svg │ │ │ │ ├── communicator.ts │ │ │ │ ├── components │ │ │ │ │ ├── AddAppForm │ │ │ │ │ │ ├── AppAgreement.tsx │ │ │ │ │ │ ├── AppUrl.tsx │ │ │ │ │ │ ├── FormButtons.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AppCard │ │ │ │ │ │ ├── index.stories.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── skeleton.tsx │ │ │ │ │ ├── AppFrame.tsx │ │ │ │ │ ├── AppsList.tsx │ │ │ │ │ ├── ConfirmTxModal │ │ │ │ │ │ ├── DecodedTxDetail.tsx │ │ │ │ │ │ ├── ReviewConfirm.tsx │ │ │ │ │ │ ├── SafeAppLoadError.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── LegalDisclaimer.tsx │ │ │ │ ├── hooks │ │ │ │ │ ├── useAppList.ts │ │ │ │ │ ├── useIframeMessageHandler.ts │ │ │ │ │ └── useLegalConsent.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── Balances │ │ │ │ ├── AssetTableCell │ │ │ │ │ └── index.tsx │ │ │ │ ├── Coins │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.ts │ │ │ │ ├── Collectibles │ │ │ │ │ ├── components │ │ │ │ │ │ └── Item.tsx │ │ │ │ │ ├── img │ │ │ │ │ │ ├── cryptokitties.png │ │ │ │ │ │ └── marblecards.png │ │ │ │ │ └── index.tsx │ │ │ │ ├── SendModal │ │ │ │ │ ├── SafeInfo │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── screens │ │ │ │ │ │ ├── AddressBookInput │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── ChooseTxType │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── ContractInteraction │ │ │ │ │ │ ├── Buttons │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ContractABI │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── EthAddressInput │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── FormErrorMessage │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Header │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── MethodsDropdown │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── NativeCoinValue │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RenderInputParams │ │ │ │ │ │ │ ├── InputComponent │ │ │ │ │ │ │ │ ├── ArrayTypeInput.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RenderOutputParams │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Review │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ReviewCustomTx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── SendCustomTx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── ReviewCollectible │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── ReviewSendFundsTx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── SendCollectible │ │ │ │ │ │ ├── CollectibleSelectField │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── TokenSelectField │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── SendFunds │ │ │ │ │ │ ├── SpendingLimitRow.tsx │ │ │ │ │ │ ├── TokenSelectField │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ └── assets │ │ │ │ │ │ ├── arrow-down.svg │ │ │ │ │ │ ├── code.svg │ │ │ │ │ │ ├── collectibles.svg │ │ │ │ │ │ └── token.svg │ │ │ │ ├── assets │ │ │ │ │ ├── nft_icon.png │ │ │ │ │ └── token_placeholder.svg │ │ │ │ ├── dataFetcher.ts │ │ │ │ ├── index.tsx │ │ │ │ └── utils │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── setCollectibleImageToPlaceholder.ts │ │ │ │ │ └── setTokenImgToPlaceholder.ts │ │ │ ├── CurrencyDropdown │ │ │ │ ├── img │ │ │ │ │ └── check.svg │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── Settings │ │ │ │ ├── Advanced │ │ │ │ │ ├── ModulesTable.tsx │ │ │ │ │ ├── RemoveModuleModal.tsx │ │ │ │ │ ├── dataFetcher.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── ManageOwners │ │ │ │ │ ├── AddOwnerModal │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── screens │ │ │ │ │ │ │ ├── OwnerForm │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ │ ├── Review │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ │ └── ThresholdForm │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── EditOwnerModal │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── RemoveOwnerModal │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── screens │ │ │ │ │ │ │ ├── CheckOwner │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ │ ├── Review │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ │ └── ThresholdForm │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── ReplaceOwnerModal │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── screens │ │ │ │ │ │ │ ├── OwnerForm │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ │ └── Review │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── dataFetcher.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── RemoveSafeModal │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── SafeDetails │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── SpendingLimit │ │ │ │ │ ├── FormFields │ │ │ │ │ │ ├── Amount.tsx │ │ │ │ │ │ ├── Beneficiary.tsx │ │ │ │ │ │ ├── ResetTime.tsx │ │ │ │ │ │ ├── Token.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── InfoDisplay │ │ │ │ │ │ ├── AddressInfo.tsx │ │ │ │ │ │ ├── DataDisplay.tsx │ │ │ │ │ │ ├── ResetTimeInfo.tsx │ │ │ │ │ │ ├── TokenInfo.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── LimitsTable │ │ │ │ │ │ ├── SpentVsAmount.tsx │ │ │ │ │ │ ├── dataFetcher.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── NewLimitModal │ │ │ │ │ │ ├── Create.tsx │ │ │ │ │ │ ├── Review.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── NewLimitSteps.tsx │ │ │ │ │ ├── RemoveLimitModal.tsx │ │ │ │ │ ├── assets │ │ │ │ │ │ ├── asset-amount.svg │ │ │ │ │ │ ├── beneficiary.svg │ │ │ │ │ │ └── time.svg │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── ThresholdSettings │ │ │ │ │ ├── ChangeThreshold │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── UpdateSafeModal │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── assets │ │ │ │ │ └── icons │ │ │ │ │ │ ├── OwnersIcon.tsx │ │ │ │ │ │ ├── RequiredConfirmationsIcon.tsx │ │ │ │ │ │ ├── SafeDetailsIcon.tsx │ │ │ │ │ │ ├── bin.svg │ │ │ │ │ │ └── disabled-bin.svg │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── Transactions │ │ │ │ ├── TxList │ │ │ │ │ ├── ActionModal.tsx │ │ │ │ │ ├── AddressInfo.tsx │ │ │ │ │ ├── HexEncodedData.tsx │ │ │ │ │ ├── HistoryTransactions.tsx │ │ │ │ │ ├── HistoryTxList.tsx │ │ │ │ │ ├── InfoDetails.tsx │ │ │ │ │ ├── MethodDetails.tsx │ │ │ │ │ ├── MethodValue.tsx │ │ │ │ │ ├── MultiSendDetails.tsx │ │ │ │ │ ├── OwnerRow.tsx │ │ │ │ │ ├── QueueTransactions.tsx │ │ │ │ │ ├── QueueTxList.tsx │ │ │ │ │ ├── SpendingLimitDetails.tsx │ │ │ │ │ ├── TokenTransferAmount.tsx │ │ │ │ │ ├── TxActionProvider.tsx │ │ │ │ │ ├── TxCollapsed.tsx │ │ │ │ │ ├── TxCollapsedActions.tsx │ │ │ │ │ ├── TxData.tsx │ │ │ │ │ ├── TxDetails.tsx │ │ │ │ │ ├── TxExpandedActions.tsx │ │ │ │ │ ├── TxHistoryCollapsed.tsx │ │ │ │ │ ├── TxHistoryRow.tsx │ │ │ │ │ ├── TxHoverProvider.tsx │ │ │ │ │ ├── TxInfo.tsx │ │ │ │ │ ├── TxInfoCreation.tsx │ │ │ │ │ ├── TxInfoDetails.tsx │ │ │ │ │ ├── TxInfoSettings.tsx │ │ │ │ │ ├── TxInfoTransfer.tsx │ │ │ │ │ ├── TxLocationProvider.tsx │ │ │ │ │ ├── TxOwners.tsx │ │ │ │ │ ├── TxQueueCollapsed.tsx │ │ │ │ │ ├── TxQueueRow.tsx │ │ │ │ │ ├── TxSummary.tsx │ │ │ │ │ ├── TxsInfiniteScroll.tsx │ │ │ │ │ ├── assets │ │ │ │ │ │ ├── check-circle-green.svg │ │ │ │ │ │ ├── circle-cross-red.svg │ │ │ │ │ │ ├── custom.svg │ │ │ │ │ │ ├── incoming.svg │ │ │ │ │ │ ├── no-transactions.svg │ │ │ │ │ │ ├── outgoing.svg │ │ │ │ │ │ ├── plus-circle-green.svg │ │ │ │ │ │ ├── settings.svg │ │ │ │ │ │ ├── transactions-list-active.svg │ │ │ │ │ │ └── transactions-list-inactive.svg │ │ │ │ │ ├── hooks │ │ │ │ │ │ ├── useActionButtonsHandlers.ts │ │ │ │ │ │ ├── useAssetInfo.ts │ │ │ │ │ │ ├── useHistoryTransactions.ts │ │ │ │ │ │ ├── useKnownAddress.ts │ │ │ │ │ │ ├── usePagedHistoryTransactions.ts │ │ │ │ │ │ ├── usePagedQueuedTransactions.ts │ │ │ │ │ │ ├── useQueueTransactions.ts │ │ │ │ │ │ ├── useTransactionActions.ts │ │ │ │ │ │ ├── useTransactionDetails.ts │ │ │ │ │ │ ├── useTransactionStatus.ts │ │ │ │ │ │ └── useTransactionType.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── modals │ │ │ │ │ │ ├── ApproveTxModal.tsx │ │ │ │ │ │ ├── RejectTxModal.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── styled.tsx │ │ │ │ │ └── utils.ts │ │ │ │ └── helpers │ │ │ │ │ ├── EditTxParametersForm │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ │ ├── EditableTxParameters.tsx │ │ │ │ │ ├── TxParametersDetail │ │ │ │ │ └── index.tsx │ │ │ │ │ └── utils.ts │ │ │ └── assets │ │ │ │ ├── AddressBookIcon.tsx │ │ │ │ ├── BalancesIcon.tsx │ │ │ │ ├── SettingsIcon.tsx │ │ │ │ └── TransactionsIcon.tsx │ │ └── container │ │ │ ├── hooks │ │ │ └── useTransactionParameters.ts │ │ │ ├── index.tsx │ │ │ └── selector.ts │ └── welcome │ │ ├── assets │ │ ├── new.svg │ │ └── safe.svg │ │ ├── components │ │ └── index.tsx │ │ └── container │ │ └── index.tsx ├── setupTests.js ├── store │ └── index.ts ├── test │ └── utils │ │ ├── ethereumErrors.ts │ │ └── safeHelper.ts ├── theme │ ├── mui.ts │ ├── size.ts │ ├── variables.js │ └── variables.scss ├── types │ ├── definitions.d.ts │ ├── helpers.d.ts │ └── transactions │ │ └── decode.d.ts └── utils │ ├── __tests__ │ ├── checksumAddress.test.ts │ ├── isValidAddress.test.ts │ └── strings.test.ts │ ├── checksumAddress.ts │ ├── clipboard.ts │ ├── constants.ts │ ├── css.ts │ ├── date.ts │ ├── decodeTx.ts │ ├── googleAnalytics.ts │ ├── intercom.ts │ ├── isValidAddress.ts │ ├── logBoundaries.ts │ ├── mm_warnings.ts │ ├── objects.ts │ ├── singleton.ts │ ├── storage │ └── index.ts │ ├── strings.ts │ ├── timer.ts │ ├── url.ts │ └── wrapInSuspense.tsx ├── tsconfig.electron.json ├── tsconfig.json └── yarn.lock /configs/gnosis-safe-client-gateway.env.local: -------------------------------------------------------------------------------- 1 | ROCKET_SECRET_KEY=DO_NOT_USE_THIS_SECRET_IN_PRODUCTION_dfkjj19dksnbcSYDUn21kj208yucAwo3jcfna2f908y 2 | WEBHOOK_TOKEN=DO_NOT_USE_THIS_SECRET_IN_PRODUCTION_sldk10cij9ALKJNEFKB1290uvlakn2f0vlkmasdfbg 3 | -------------------------------------------------------------------------------- /configs/gnosis-safe-client-gateway.env.production: -------------------------------------------------------------------------------- 1 | ROCKET_SECRET_KEY=PLACEHOLDER_CHANGE_ME 2 | WEBHOOK_TOKEN=PLACEHOLDER_CHANGE_ME 3 | -------------------------------------------------------------------------------- /configs/gnosis-safe-react.env.local: -------------------------------------------------------------------------------- 1 | REACT_APP_NETWORK=rinkeby 2 | 3 | REACT_APP_INFURA_TOKEN=PLACEHOLDER_CHANGE_ME 4 | 5 | REACT_APP_SAFE_URL=http://localhost:17007/app 6 | REACT_APP_CLIENT_GATEWAY_URL=http://localhost:17001/v1 7 | REACT_APP_TRANSACTION_SERVICE_URL=http://localhost:17000/api/v1 8 | -------------------------------------------------------------------------------- /configs/gnosis-safe-react.env.production: -------------------------------------------------------------------------------- 1 | REACT_APP_NETWORK=mainnet 2 | 3 | REACT_APP_INFURA_TOKEN=PLACEHOLDER_CHANGE_ME 4 | 5 | REACT_APP_SAFE_URL=https://PLACEHOLDER_CHANGE_ME/app 6 | REACT_APP_CLIENT_GATEWAY_URL=https://PLACEHOLDER_CHANGE_ME/v1 7 | REACT_APP_TRANSACTION_SERVICE_URL=https://PLACEHOLDER_CHANGE_ME/api/v1 8 | -------------------------------------------------------------------------------- /configs/gnosis-safe-transaction-service.env.common: -------------------------------------------------------------------------------- 1 | PYTHONPATH=/app/ 2 | DJANGO_SETTINGS_MODULE=config.settings.production 3 | C_FORCE_ROOT=true 4 | DEBUG=0 5 | DATABASE_URL=psql://postgres:postgres@transaction-service-db:5432/postgres 6 | ETH_L2_NETWORK=0 7 | REDIS_URL=redis://transaction-service-redis:6379/0 8 | CELERY_BROKER_URL=redis://transaction-service-redis:6379/1 9 | -------------------------------------------------------------------------------- /configs/gnosis-safe-transaction-service.env.local: -------------------------------------------------------------------------------- 1 | DJANGO_SECRET_KEY='DO_NOT_USE_THIS_SECRET_IN_PRODUCTION_Dkjadf98mclansc0a8uyr978ynlknfa0cyh28' 2 | ETHEREUM_NODE_URL=PLACEHOLDER_CHANGE_ME 3 | ETHEREUM_TRACING_NODE_URL=PLACEHOLDER_CHANGE_ME 4 | -------------------------------------------------------------------------------- /configs/gnosis-safe-transaction-service.env.production: -------------------------------------------------------------------------------- 1 | DJANGO_SECRET_KEY='PLACEHOLDER_CHANGE_ME' 2 | ETHEREUM_NODE_URL=PLACEHOLDER_CHANGE_ME 3 | ETHEREUM_TRACING_NODE_URL=PLACEHOLDER_CHANGE_ME 4 | -------------------------------------------------------------------------------- /docker-compose.local.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | caddy: 5 | ports: 6 | - "127.0.0.1:17000:17000" 7 | - "127.0.0.1:17001:17001" 8 | - "127.0.0.1:17002:17002" 9 | - "127.0.0.1:17007:17007" 10 | volumes: 11 | - "./Caddyfile.local:/etc/caddy/Caddyfile:ro" 12 | 13 | transaction-service-worker: 14 | env_file: 15 | - "configs/gnosis-safe-transaction-service.env.local" 16 | 17 | client-gateway-web: 18 | env_file: 19 | - "configs/gnosis-safe-client-gateway.env.local" 20 | 21 | config-service-web: 22 | env_file: 23 | - "configs/gnosis-safe-config-service.env.local" 24 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/.dockerignore: -------------------------------------------------------------------------------- 1 | ### Rust ### 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | # These are backup files generated by rustfmt 6 | **/*.rs.bk -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | - Call url `...` 16 | 17 | **Expected behavior** 18 | A clear and concise description of what you expected to happen. 19 | 20 | **Desktop (please complete the following information):** 21 | - OS: [e.g. iOS] 22 | - Browser [e.g. chrome, safari] 23 | - Version [e.g. 22] 24 | 25 | **Additional context** 26 | Add any other context about the problem here. 27 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/.github/action-rs/grcov.yml: -------------------------------------------------------------------------------- 1 | branch: true 2 | ignore-not-existing: true 3 | llvm: true 4 | filter: covered 5 | output-type: lcov 6 | output-path: ./lcov.info 7 | coveralls-token: ${{ secrets.COVERALLS_TOKEN }} 8 | prefix-dir: . 9 | ignore: 10 | - "/*" 11 | - "/**/tests/**" 12 | - "target/debug/build/**" 13 | 14 | excl-line: "#\\[cfg\\(test\\)\\]|#\\[derive|#\\[serde" 15 | excl-br-line: "#\\[derive\\(" 16 | excl-start: "mod tests \\{" 17 | excl-br-start: "mod tests \\{" 18 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | - package-ecosystem: cargo 5 | directory: "/" 6 | schedule: 7 | interval: weekly 8 | day: monday 9 | reviewers: 10 | - "fmrsabino" 11 | - "jpalvarezl" 12 | - "rmeissner" 13 | open-pull-requests-limit: 3 14 | ignore: 15 | - dependency-name: "*" 16 | update-types: ["version-update:semver-patch"] 17 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/.github/landing_page/gnosis_safe_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-client-gateway/.github/landing_page/gnosis_safe_logo.png -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | Make sure these boxes are checked! 📦✅ 2 | 3 | - [ ] You are using the nightly version of rust `rustup default nighly` 4 | - [ ] You have the latest version of `rustfmt` installed 5 | ```bash 6 | $ rustup component add rustfmt 7 | ``` 8 | - [ ] You ran `cargo fmt` on the code base before submitting 9 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 6 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 7 | # Cargo.lock 8 | 9 | # These are backup files generated by rustfmt 10 | **/*.rs.bk 11 | 12 | .idea 13 | 14 | .env 15 | 16 | dump.rdb 17 | 18 | **/venv 19 | 20 | *.DS_Store* 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/Procfile: -------------------------------------------------------------------------------- 1 | web: ROCKET_PORT=$PORT target/release/safe-client-gateway -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.5' 2 | 3 | volumes: 4 | nginx-shared: 5 | 6 | services: 7 | redis: 8 | image: redis:5-alpine 9 | ports: 10 | - "6379:6379" 11 | 12 | web: 13 | build: 14 | context: . 15 | dockerfile: ./Dockerfile 16 | env_file: 17 | - .env 18 | environment: 19 | - REDIS_URL=redis://redis 20 | depends_on: 21 | - redis 22 | ports: 23 | - "8000:3666" -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/rust-toolchain: -------------------------------------------------------------------------------- 1 | nightly-2021-05-21 -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/rustfmt.toml: -------------------------------------------------------------------------------- 1 | ignore = ["src/json"] -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/scripts/cache_warmer/requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | python-dotenv 3 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/cache/tests/mod.rs: -------------------------------------------------------------------------------- 1 | mod cache_inner; 2 | mod cache_operations; 3 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/balances/balance_compound_ether.json: -------------------------------------------------------------------------------- 1 | { 2 | "tokenAddress": "0xd6801a1DfFCd0a410336Ef88DeF4320D6DF1883e", 3 | "token": { 4 | "name": "Compound Ether 📈", 5 | "symbol": "cETH", 6 | "decimals": 8, 7 | "logoUri": "https://gnosis-safe-token-logos.s3.amazonaws.com/0xd6801a1DfFCd0a410336Ef88DeF4320D6DF1883e.png" 8 | }, 9 | "balance": "5002", 10 | "fiatBalance": "0.0014", 11 | "fiatConversion": "28.5462", 12 | "fiatCode": "USD" 13 | } 14 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/balances/balance_ether.json: -------------------------------------------------------------------------------- 1 | { 2 | "tokenAddress": null, 3 | "token": null, 4 | "balance": "7457594371050000001", 5 | "fiatBalance": "2523.7991", 6 | "fiatConversion": "338.42", 7 | "fiatCode": "USD" 8 | } 9 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_add_owner_with_threshold.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "addOwnerWithThreshold", 3 | "parameters": [ 4 | { 5 | "name": "owner", 6 | "type": "address", 7 | "value": "0xBEA2F9227230976d2813a2f8b922c22bE1DE1B23" 8 | }, 9 | { 10 | "name": "_threshold", 11 | "type": "uint256", 12 | "value": "1" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_change_master_copy.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "changeMasterCopy", 3 | "parameters": [ 4 | { 5 | "name": "_masterCopy", 6 | "type": "address", 7 | "value": "0xb6029EA3B2c51D09a50B53CA8012FeEB05bDa35A" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_change_threshold.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "changeThreshold", 3 | "parameters": [ 4 | { 5 | "name": "_threshold", 6 | "type": "uint256", 7 | "value": "2" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_disable_module.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "disableModule", 3 | "parameters": [ 4 | { 5 | "name": "prevModule", 6 | "type": "address", 7 | "value": "0xF5dC3718EEbC5b003F1672A499F2ACBE77Ba790d" 8 | }, 9 | { 10 | "name": "module", 11 | "type": "address", 12 | "value": "0x25F73b24B866963B0e560fFF9bbA7908be0263E8" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_enable_module.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "enableModule", 3 | "parameters": [ 4 | { 5 | "name": "module", 6 | "type": "address", 7 | "value": "0xF5dC3718EEbC5b003F1672A499F2ACBE77Ba790d" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_exec_transaction_from_module.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "execTransactionFromModule", 3 | "parameters": [ 4 | { 5 | "name": "to", 6 | "type": "address", 7 | "value": "0x08c841202D77513d0865Fbae847cBc2e1DDe3912" 8 | }, 9 | { 10 | "name": "value", 11 | "type": "uint256", 12 | "value": "1" 13 | }, 14 | { 15 | "name": "data", 16 | "type": "bytes", 17 | "value": "0x00" 18 | }, 19 | { 20 | "name": "operation", 21 | "type": "uint8", 22 | "value": "1" 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_remove_owner.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "removeOwner", 3 | "parameters": [ 4 | { 5 | "name": "prevOwner", 6 | "type": "address", 7 | "value": "0x65F8236309e5A99Ff0d129d04E486EBCE20DC7B0" 8 | }, 9 | { 10 | "name": "owner", 11 | "type": "address", 12 | "value": "0xF2CeA96575d6b10f51d9aF3b10e3e4E5738aa6bd" 13 | }, 14 | { 15 | "name": "_threshold", 16 | "type": "uint256", 17 | "value": "2" 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_set_fallback_handler.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "setFallbackHandler", 3 | "parameters": [ 4 | { 5 | "name": "handler", 6 | "type": "address", 7 | "value": "0xd5D82B6aDDc9027B22dCA772Aa68D5d74cdBdF44" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/commons/data_decoded_swap_owner.json: -------------------------------------------------------------------------------- 1 | { 2 | "method": "swapOwner", 3 | "parameters": [ 4 | { 5 | "name": "prevOwner", 6 | "type": "address", 7 | "value": "0x0000000000000000000000000000000000000001" 8 | }, 9 | { 10 | "name": "oldOwner", 11 | "type": "address", 12 | "value": "0xA3DAa0d9Ae02dAA17a664c232aDa1B739eF5ae8D" 13 | }, 14 | { 15 | "name": "newOwner", 16 | "type": "address", 17 | "value": "0xF2CeA96575d6b10f51d9aF3b10e3e4E5738aa6bd" 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/safes/with_guard_safe_v130.json: -------------------------------------------------------------------------------- 1 | { 2 | "address": "0x4cb09344de5bCCD45F045c5Defa0E0452869FF0f", 3 | "nonce": 7, 4 | "threshold": 1, 5 | "owners": [ 6 | "0x5aC255889882aCd3da2aA939679E3f3d4cea221e" 7 | ], 8 | "masterCopy": "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", 9 | "modules": [], 10 | "fallbackHandler": "0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4", 11 | "guard": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", 12 | "version": "1.3.0" 13 | } 14 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/safes/with_module_transactions.json: -------------------------------------------------------------------------------- 1 | { 2 | "address": "0x9422ff6AFB126C31F62057e2853d65cBB73f4608", 3 | "nonce": 0, 4 | "threshold": 1, 5 | "owners": [ 6 | "0x424a46612794dbb8000194937834250Dc723fFa5", 7 | "0x3B376a725A36147db5D4b91aBf1F3FDf97122f0D", 8 | "0x7D05218D5f6EdEE9dd0b4BdA34508D440417cBe3", 9 | "0x6484a2514AEE516DdaC6f67Dd2322f23e0A4A7D6" 10 | ], 11 | "masterCopy": "0x8942595A2dC5181Df0465AF0D7be08c8f23C93af", 12 | "modules": [ 13 | "0xfa559f0932b7B60d90B4af0b8813d4088465096b" 14 | ], 15 | "fallbackHandler": "0x0000000000000000000000000000000000000000", 16 | "guard": "0x0000000000000000000000000000000000000000", 17 | "version": "0.1.0" 18 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/safes/with_threshold_two.json: -------------------------------------------------------------------------------- 1 | { 2 | "address": "0x9422ff6AFB126C31F62057e2853d65cBB73f4608", 3 | "nonce": 140, 4 | "threshold": 2, 5 | "owners": [ 6 | "0x424a46612794dbb8000194937834250Dc723fFa5", 7 | "0x3B376a725A36147db5D4b91aBf1F3FDf97122f0D", 8 | "0x7D05218D5f6EdEE9dd0b4BdA34508D440417cBe3", 9 | "0x6484a2514AEE516DdaC6f67Dd2322f23e0A4A7D6" 10 | ], 11 | "masterCopy": "0x8942595A2dC5181Df0465AF0D7be08c8f23C93af", 12 | "modules": [ 13 | "0xfa559f0932b7B60d90B4af0b8813d4088465096b" 14 | ], 15 | "fallbackHandler": "0x0000000000000000000000000000000000000000", 16 | "guard": "0x0000000000000000000000000000000000000000", 17 | "version": "0.1.0" 18 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/tokens/bat.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ERC20", 3 | "address": "0xD81F7D71ed570D121A1Ef9e3Bc0fc2bd6192De46", 4 | "name": "BigAmount", 5 | "symbol": "BA-T", 6 | "decimals": 1, 7 | "logoUri": "https://gnosis-safe-token-logos.s3.amazonaws.com/0xD81F7D71ed570D121A1Ef9e3Bc0fc2bd6192De46.png" 8 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/tokens/crypto_kitties.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ERC721", 3 | "address": "0x16baF0dE678E52367adC69fD067E5eDd1D33e3bF", 4 | "name": "CryptoKitties", 5 | "symbol": "CK", 6 | "decimals": 0, 7 | "logoUri": "https://gnosis-safe-token-logos.s3.amazonaws.com/0x16baF0dE678E52367adC69fD067E5eDd1D33e3bF.png" 8 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/tokens/dai.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ERC20", 3 | "address": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", 4 | "name": "Dai", 5 | "symbol": "DAI", 6 | "decimals": 18, 7 | "logoUri": "https://gnosis-safe-token-logos.s3.amazonaws.com/0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa.png" 8 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/tokens/pv_memorial_token.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ERC721", 3 | "address": "0x8979D84FF2c2B797dFEc02469d3a5322cBEf4b98", 4 | "name": "PV Memorial Token", 5 | "symbol": "PVT", 6 | "decimals": 0, 7 | "logoUri": "https://gnosis-safe-token-logos.s3.amazonaws.com/0x8979D84FF2c2B797dFEc02469d3a5322cBEf4b98.png" 8 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/tokens/usdt.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ERC20", 3 | "address": "0xD9BA894E0097f8cC2BBc9D24D308b98e36dc6D02", 4 | "name": "Compound USDT", 5 | "symbol": "USDT", 6 | "decimals": 18, 7 | "logoUri": "https://gnosis-safe-token-logos.s3.amazonaws.com/0xD9BA894E0097f8cC2BBc9D24D308b98e36dc6D02.png" 8 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/transactions/module_ether_transfer.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2020-12-01T18:04:14Z", 3 | "executionDate": "2020-12-01T18:04:14Z", 4 | "blockNumber": 7645325, 5 | "isSuccessful": true, 6 | "transactionHash": "0xcd10b23687bf336d0f4c0a3383590d3d1722aaa99a41fd0d289a5f69a8266c8f", 7 | "safe": "0x1230B3d59858296A31053C1b8562Ecf89A2f888b", 8 | "module": "0xCFbFaC74C26F8647cBDb8c5caf80BB5b32E43134", 9 | "to": "0xD9BA894E0097f8cC2BBc9D24D308b98e36dc6D02", 10 | "value": "100000000000000000", 11 | "data": null, 12 | "operation": 0, 13 | "dataDecoded": null, 14 | "transfers": [], 15 | "txType": "MODULE_TRANSACTION" 16 | } 17 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/transfers/erc_20_transfer_without_token_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ERC20_TRANSFER", 3 | "executionDate": "2020-08-11T16:12:33Z", 4 | "blockNumber": 7000442, 5 | "transactionHash": "0x3663ae11e5414620b0fd7fe7c8175e4356070a0a403e6e6516d7aece29b7680d", 6 | "to": "0x1230B3d59858296A31053C1b8562Ecf89A2f888b", 7 | "value": "1000000000000000000", 8 | "tokenId": null, 9 | "tokenAddress": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", 10 | "from": "0xfFfa5813ED9a5DB4880D7303DB7d0cBe41bC771F" 11 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/transfers/erc_721_transfer_without_token_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ERC721_TRANSFER", 3 | "executionDate": "2020-07-24T12:34:11Z", 4 | "blockNumber": 6895900, 5 | "transactionHash": "0x6b4ddfcf19320e1edaad5bcdef3da54f463ee5cb609ba4a1e2042fbff702e718", 6 | "to": "0x1230B3d59858296A31053C1b8562Ecf89A2f888b", 7 | "value": null, 8 | "tokenId": "37", 9 | "tokenAddress": "0x8979D84FF2c2B797dFEc02469d3a5322cBEf4b98", 10 | "from": "0x938bae50a210b80EA233112800Cd5Bc2e7644300" 11 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/transfers/ether_transfer_incoming.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ETHER_TRANSFER", 3 | "executionDate": "2020-08-18T06:53:51Z", 4 | "blockNumber": 7038526, 5 | "transactionHash": "0x41b610e8cce50bbe3aa06d6953ecc5f92a838aedc024a265c0afca7ec4f33bdf", 6 | "to": "0x1230B3d59858296A31053C1b8562Ecf89A2f888b", 7 | "value": "1000000000000000", 8 | "tokenId": null, 9 | "tokenAddress": null, 10 | "tokenInfo": null, 11 | "from": "0xfFfa5813ED9a5DB4880D7303DB7d0cBe41bC771F" 12 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/json/transfers/ether_transfer_outgoing.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ETHER_TRANSFER", 3 | "executionDate": "2020-08-18T06:53:51Z", 4 | "blockNumber": 7038526, 5 | "transactionHash": "0x41b610e8cce50bbe3aa06d6953ecc5f92a838aedc024a265c0afca7ec4f33bdf", 6 | "to": "0xfFfa5813ED9a5DB4880D7303DB7d0cBe41bC771F", 7 | "value": "1000000000000000", 8 | "tokenId": null, 9 | "tokenAddress": null, 10 | "tokenInfo": null, 11 | "from": "0x1230B3d59858296A31053C1b8562Ecf89A2f888b" 12 | } -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/backend/about.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | 3 | #[derive(Deserialize, Debug)] 4 | pub struct About { 5 | pub name: String, 6 | pub version: String, 7 | pub api_version: String, 8 | pub secure: bool, 9 | pub settings: SettingsDto, 10 | } 11 | 12 | #[derive(Deserialize, Debug)] 13 | #[serde(rename_all = "SCREAMING_SNAKE_CASE")] 14 | pub struct SettingsDto { 15 | ethereum_node_url: String, 16 | ethereum_tracing_node_url: String, 17 | eth_internal_txs_block_process_limit: Option, 18 | eth_reorg_blocks: usize, 19 | eth_uniswap_factory_address: String, 20 | } 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/backend/balances.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | 3 | #[derive(Deserialize, Debug, Hash)] 4 | #[serde(rename_all = "camelCase")] 5 | pub struct Balance { 6 | pub token_address: Option, 7 | pub token: Option, 8 | pub balance: String, 9 | pub fiat_balance: String, 10 | pub fiat_conversion: String, 11 | } 12 | 13 | #[derive(Deserialize, Debug, Hash)] 14 | #[serde(rename_all = "camelCase")] 15 | pub struct BalanceToken { 16 | pub name: String, 17 | pub symbol: String, 18 | pub decimals: u64, 19 | pub logo_uri: String, 20 | } 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/backend/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod about; 2 | pub mod balances; 3 | pub mod chains; 4 | pub mod notifications; 5 | pub mod safes; 6 | pub mod transactions; 7 | pub mod transfers; 8 | pub mod webhooks; 9 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/backend/notifications.rs: -------------------------------------------------------------------------------- 1 | use crate::models::service::notifications::DeviceData; 2 | use serde::Serialize; 3 | 4 | #[derive(Serialize, Debug, Clone, PartialEq)] 5 | #[serde(rename_all = "camelCase")] 6 | pub struct NotificationRegistrationRequest { 7 | #[serde(flatten)] 8 | pub notification_device_data: DeviceData, 9 | pub safes: Vec, 10 | pub signatures: Vec, 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/backend/safes.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | 3 | #[derive(Deserialize, Debug)] 4 | #[serde(rename_all = "camelCase")] 5 | pub struct MasterCopy { 6 | pub address: String, 7 | pub version: String, 8 | pub deployer: String, 9 | pub deployed_block_number: u64, 10 | pub last_indexed_block_number: u64, 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/converters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-client-gateway/src/models/converters/.DS_Store -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/converters/tests/mod.rs: -------------------------------------------------------------------------------- 1 | pub(super) mod balances; 2 | mod data_decoded; 3 | mod get_address_ex_from_any_source; 4 | mod get_transfer_direction; 5 | mod page_metadata; 6 | mod safes; 7 | mod transfer_erc20; 8 | mod transfer_erc721; 9 | mod transfer_ether; 10 | mod transfers; 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/converters/transactions/safe_app_info.rs: -------------------------------------------------------------------------------- 1 | use crate::providers::info::{InfoProvider, SafeAppInfo}; 2 | use serde::Deserialize; 3 | 4 | pub async fn safe_app_info_from( 5 | origin: &str, 6 | info_provider: &impl InfoProvider, 7 | ) -> Option { 8 | let origin_internal = serde_json::from_str::(origin).ok()?; 9 | info_provider 10 | .safe_app_info( 11 | &origin_internal 12 | .url 13 | .replace("ipfs.io", "cloudflare-ipfs.com"), 14 | ) 15 | .await 16 | .ok() 17 | } 18 | 19 | #[derive(Deserialize, Debug, PartialEq)] 20 | pub(super) struct OriginInternal { 21 | pub(super) url: String, 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/converters/transactions/tests/mod.rs: -------------------------------------------------------------------------------- 1 | pub(super) mod check_sender_or_receiver; 2 | mod data_size_calculation; 3 | mod details; 4 | mod is_cancellation; 5 | pub(super) mod map_status; 6 | pub(super) mod missing_signers; 7 | mod safe_app_info; 8 | mod summary; 9 | pub(super) mod transaction_types; 10 | pub(super) mod transfer_type_checks; 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/mod.rs: -------------------------------------------------------------------------------- 1 | #[doc(hidden)] 2 | pub mod backend; 3 | pub mod commons; 4 | #[doc(hidden)] 5 | pub mod converters; 6 | pub mod service; 7 | 8 | #[cfg(test)] 9 | mod tests; 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/service/balances.rs: -------------------------------------------------------------------------------- 1 | use crate::providers::info::TokenInfo; 2 | use serde::Serialize; 3 | 4 | #[derive(Serialize, Debug, PartialEq)] 5 | #[serde(rename_all = "camelCase")] 6 | pub struct Balance { 7 | pub token_info: TokenInfo, 8 | pub balance: String, 9 | pub fiat_balance: String, 10 | pub fiat_conversion: String, 11 | } 12 | 13 | #[derive(Serialize, Debug, PartialEq)] 14 | #[serde(rename_all = "camelCase")] 15 | pub struct Balances { 16 | /// Aggregated fiat balance 17 | pub fiat_total: String, 18 | /// Individual [Balance] entries for each ERC20 in the Safe 19 | pub items: Vec, 20 | } 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/service/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod about; 2 | pub mod addresses; 3 | pub mod balances; 4 | pub mod chains; 5 | pub mod notifications; 6 | pub mod safes; 7 | pub mod transactions; 8 | pub mod utils; 9 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/models/tests/mod.rs: -------------------------------------------------------------------------------- 1 | mod chains; 2 | mod commons; 3 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/monitoring/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod performance; 2 | 3 | #[cfg(test)] 4 | mod tests; 5 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/monitoring/tests/mod.rs: -------------------------------------------------------------------------------- 1 | mod path_patterns; 2 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/providers/address_info.rs: -------------------------------------------------------------------------------- 1 | use crate::utils::json::default_if_null; 2 | use serde::Deserialize; 3 | 4 | #[derive(Deserialize, Debug)] 5 | #[serde(rename_all = "camelCase")] 6 | pub struct ContractInfo { 7 | pub address: String, 8 | #[serde(deserialize_with = "default_if_null")] 9 | pub name: String, 10 | #[serde(deserialize_with = "default_if_null")] 11 | pub display_name: String, 12 | pub logo_uri: Option, 13 | // pub contract_abi: Option, //Ignored for now 14 | } 15 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/providers/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod address_info; 2 | pub mod ext; 3 | pub mod fiat; 4 | pub mod info; 5 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/routes/health.rs: -------------------------------------------------------------------------------- 1 | use crate::cache::cache_operations::CacheResponse; 2 | use crate::utils::context::Context; 3 | use crate::utils::errors::ApiResult; 4 | use rocket::response::content; 5 | 6 | #[get("/health")] 7 | pub async fn health(context: Context<'_>) -> ApiResult> { 8 | CacheResponse::new(String::from("/health")) 9 | .resp_generator(|| async { Ok(String::new()) }) 10 | .execute(context.cache()) 11 | .await 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/services/mod.rs: -------------------------------------------------------------------------------- 1 | use crate::models::commons::PageMetadata; 2 | use std::cmp::max; 3 | 4 | pub mod about; 5 | pub mod balances; 6 | pub mod chains; 7 | pub mod collectibles; 8 | pub mod hooks; 9 | pub mod notifications; 10 | pub mod safes; 11 | pub mod transactions_details; 12 | pub mod transactions_history; 13 | pub mod transactions_proposal; 14 | pub mod transactions_queued; 15 | pub mod utils; 16 | 17 | #[cfg(test)] 18 | mod tests; 19 | 20 | pub fn offset_page_meta(meta: &PageMetadata, offset: i64) -> String { 21 | PageMetadata { 22 | offset: (max(0, (meta.offset as i64) + offset)) as u64, 23 | limit: meta.limit, 24 | } 25 | .to_url_string() 26 | } 27 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/services/tests/mod.rs: -------------------------------------------------------------------------------- 1 | mod backend_url; 2 | mod invalidate_caches; 3 | mod parse_id; 4 | mod transactions_history; 5 | mod transactions_queued; 6 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/utils/json.rs: -------------------------------------------------------------------------------- 1 | use serde::{Deserialize, Deserializer}; 2 | 3 | pub fn try_deserialize<'de, D, T>(deserializer: D) -> Result, D::Error> 4 | where 5 | D: Deserializer<'de>, 6 | T: Deserialize<'de>, 7 | { 8 | Ok(T::deserialize(deserializer).ok()) 9 | } 10 | 11 | pub fn default_if_null<'de, D, T>(deserializer: D) -> Result 12 | where 13 | D: serde::Deserializer<'de>, 14 | T: Default + serde::Deserialize<'de>, 15 | { 16 | as serde::Deserialize>::deserialize(deserializer) 17 | .map(|result| result.unwrap_or_default()) 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/utils/tests/macros.rs: -------------------------------------------------------------------------------- 1 | use std::env; 2 | 3 | #[test] 4 | fn config_uri_formats_correctly() { 5 | env::set_var("CONFIG_SERVICE_URI", "https://config-url-example.com"); 6 | let expected = "https://config-url-example.com/api/example"; 7 | 8 | let actual = config_uri!("/example"); 9 | 10 | assert_eq!(expected, actual) 11 | } 12 | 13 | #[test] 14 | fn config_uri_formats_correctly_with_substitution() { 15 | env::set_var("CONFIG_SERVICE_URI", "https://config-url-example.com"); 16 | let expected = "https://config-url-example.com/api/example/safe"; 17 | 18 | let actual = config_uri!("/example/{}", "safe"); 19 | 20 | assert_eq!(expected, actual) 21 | } 22 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-client-gateway/src/utils/tests/mod.rs: -------------------------------------------------------------------------------- 1 | mod data_decoded_utils; 2 | mod errors; 3 | mod json; 4 | mod macros; 5 | mod method_names; 6 | mod transactions; 7 | mod urls; 8 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | omit = 3 | src/config/asgi.py 4 | src/config/gunicorn.py 5 | src/config/swagger_info.py 6 | src/config/wsgi.py 7 | src/manage.py 8 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/.dockerignore: -------------------------------------------------------------------------------- 1 | .dockerignore 2 | __pycache__/ 3 | .gitignore 4 | .git 5 | .env* 6 | venv/ 7 | .idea/ 8 | .pytest_cache/ 9 | .coverage* 10 | htmlcov/ 11 | data/ 12 | .flake8 13 | .pre-commit-config.yaml 14 | docker-compose.override.yml 15 | docker-compose.override.yml.example 16 | docker-compose.yml 17 | pyproject.toml 18 | nginx/ 19 | *.md 20 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | max-line-length = 119 3 | extend-ignore = E203, W503 4 | exclude = src/safe_apps/migrations 5 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners will be the default owners for everything in 2 | # the repo. Unless a later match takes precedence, 3 | * @fmrsabino @Uxio0 4 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: pip 4 | directory: "/" 5 | schedule: 6 | interval: weekly 7 | day: monday 8 | 9 | - package-ecosystem: docker 10 | directory: "/" 11 | schedule: 12 | interval: weekly 13 | day: monday 14 | 15 | - package-ecosystem: github-actions 16 | directory: "/" 17 | schedule: 18 | interval: weekly 19 | day: monday 20 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pycqa/isort 3 | rev: 5.9.3 4 | hooks: 5 | - id: isort 6 | args: [ "--profile", "black", "--filter-files" ] 7 | - repo: https://github.com/psf/black 8 | rev: 21.7b0 9 | hooks: 10 | - id: black 11 | language_version: python3 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/docker-compose.override.yml.example: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | 3 | services: 4 | web: 5 | volumes: 6 | - "${DOCKER_WEB_VOLUME}" 7 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/ash 2 | 3 | set -euo pipefail 4 | 5 | echo "==> $(date +%H:%M:%S) ==> Collecting static files..." 6 | python src/manage.py collectstatic --noinput 7 | rm -rf ${DOCKER_NGINX_VOLUME_ROOT}/* 8 | cp -r staticfiles/ ${DOCKER_NGINX_VOLUME_ROOT}/ 9 | 10 | echo "==> $(date +%H:%M:%S) ==> Migrating Django models..." 11 | python src/manage.py migrate --noinput 12 | 13 | echo "==> $(date +%H:%M:%S) ==> Running Gunicorn..." 14 | exec gunicorn -c /app/src/config/gunicorn.py config.wsgi -b ${GUNICORN_BIND_SOCKET} -b 0.0.0.0:${GUNICORN_BIND_PORT} --chdir /app/src/ 15 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.isort] 2 | profile = "black" 3 | multi_line_output = 3 4 | 5 | [tool.pytest.ini_options] 6 | DJANGO_SETTINGS_MODULE = "config.settings" 7 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/requirements-dev.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | black==21.7b0 3 | coverage==5.5 4 | coveralls==3.2.0 5 | factory-boy==3.2.0 6 | flake8==3.9.2 7 | isort==5.9.3 8 | pre-commit==2.14.0 9 | pytest-django==4.4.0 10 | responses==0.13.4 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/requirements.txt: -------------------------------------------------------------------------------- 1 | Django==3.2.6 2 | django-cors-headers==3.8.0 3 | djangorestframework==3.12.4 4 | djangorestframework-camel-case==1.2.0 5 | drf-yasg[validation]==1.20.0 6 | gnosis-py==3.1.16 7 | gunicorn==20.1.0 8 | psycopg2-binary==2.9.1 9 | requests==2.26.0 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/about/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/about/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/about/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AboutAppConfig(AppConfig): 5 | name = "about" 6 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/about/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/about/tests/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/about/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from .views import AboutView 4 | 5 | app_name = "about" 6 | 7 | urlpatterns = [ 8 | path("", AboutView.as_view(), name="detail"), 9 | ] 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/about/views.py: -------------------------------------------------------------------------------- 1 | from rest_framework.response import Response 2 | from rest_framework.views import APIView 3 | 4 | from version import __name__, __version__ 5 | 6 | 7 | class AboutView(APIView): 8 | def get(self, request, format=None): 9 | response = { 10 | "name": __name__, 11 | "version": __version__, 12 | "api_version": self.request.version, 13 | "secure": self.request.is_secure(), 14 | } 15 | return Response(response) 16 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/chains/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from .models import Chain 4 | 5 | 6 | @admin.register(Chain) 7 | class ChainAdmin(admin.ModelAdmin): 8 | list_display = ( 9 | "id", 10 | "name", 11 | "rpc_uri", 12 | "safe_apps_rpc_uri", 13 | "relevance", 14 | ) 15 | search_fields = ("name", "id") 16 | ordering = ( 17 | "relevance", 18 | "name", 19 | ) 20 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AppsConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "chains" 7 | 8 | def ready(self): 9 | import chains.signals # noqa: F401 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0002_chain_transaction_service_url.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-14 13:09 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0001_initial"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name="chain", 15 | name="transaction_service_url", 16 | field=models.URLField(null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0005_chain_relevance.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-28 10:34 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0004_auto_20210622_1353"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name="chain", 15 | name="relevance", 16 | field=models.SmallIntegerField(default=100), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0007_chain_currency_logo_url.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-07 08:46 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0006_change_color_default_help_text"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name="chain", 15 | name="currency_logo_url", 16 | field=models.URLField( 17 | default="https://cryptologos.cc/logos/ethereum-eth-logo.png" 18 | ), 19 | preserve_default=False, 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0008_chain_ens_registry_address.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-08 11:48 2 | 3 | import gnosis.eth.django.models 4 | from django.db import migrations 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ("chains", "0007_chain_currency_logo_url"), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name="chain", 16 | name="ens_registry_address", 17 | field=gnosis.eth.django.models.EthereumAddressField(blank=True, null=True), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0011_rename_min_master_copy_version_chain_recommended_master_copy_version.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-13 08:43 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0010_chain_min_master_copy_version"), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name="chain", 15 | old_name="min_master_copy_version", 16 | new_name="recommended_master_copy_version", 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0014_alter_chain_transaction_service_uri.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-16 11:53 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0013_rename_url_uri"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name="chain", 15 | name="transaction_service_uri", 16 | field=models.URLField(), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0015_alter_chain_currency_name.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-16 12:16 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0014_alter_chain_transaction_service_uri"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name="chain", 15 | name="currency_name", 16 | field=models.CharField(max_length=255), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0016_alter_chain_block_explorer_uri.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-16 12:23 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0015_alter_chain_currency_name"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name="chain", 15 | name="block_explorer_uri", 16 | field=models.URLField(blank=True, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0017_alter_chain_block_explorer_uri.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-16 14:21 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0016_alter_chain_block_explorer_uri"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name="chain", 15 | name="block_explorer_uri", 16 | field=models.URLField(), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/0022_remove_chain_block_explorer_uri.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.6 on 2021-08-03 08:25 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("chains", "0021_alter_chain_safe_apps_rpc_authentication"), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name="chain", 15 | name="block_explorer_uri", 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/chains/migrations/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/chains/tests/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/chains/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from chains.views import ChainsDetailView, ChainsListView 4 | 5 | app_name = "chains" 6 | 7 | urlpatterns = [ 8 | path("", ChainsListView.as_view(), name="list"), 9 | path("/", ChainsDetailView.as_view(), name="detail"), 10 | ] 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/config/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/config/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for safe_client_config_service project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/config/gunicorn.py: -------------------------------------------------------------------------------- 1 | import multiprocessing 2 | import os 3 | from distutils.util import strtobool 4 | 5 | bind = f"0.0.0.0:{os.getenv('GUNICORN_BIND_PORT', '8000')}" 6 | accesslog = "-" 7 | 8 | workers = int(os.getenv("WEB_CONCURRENCY", multiprocessing.cpu_count() * 2)) 9 | threads = int(os.getenv("PYTHON_MAX_THREADS", 1)) 10 | 11 | reload = bool(strtobool(os.getenv("WEB_RELOAD", "false"))) 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/config/swagger_info.py: -------------------------------------------------------------------------------- 1 | from drf_yasg import openapi 2 | 3 | SAFE_CONFIG_SERVICE_SWAGGER_INFO = openapi.Info( 4 | title="Gnosis Safe Config Service API", 5 | default_version="v1", 6 | description="Service that provides configuration information in the context of the Safe clients environment", 7 | contact=openapi.Contact(email="safe@gnosis.io"), 8 | license=openapi.License(name="MIT License"), 9 | ) 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/config/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for safe_client_config_service project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/safe_apps/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AppsConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "safe_apps" 7 | 8 | def ready(self): 9 | import safe_apps.signals # noqa: F401 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/migrations/0002_rename_networks_safeapp_chain_ids.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-05-27 14:38 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("safe_apps", "0001_initial"), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name="safeapp", 15 | old_name="networks", 16 | new_name="chain_ids", 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/migrations/0005_safeapp_visible.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-29 14:44 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("safe_apps", "0004_add_auto_pk"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name="safeapp", 15 | name="visible", 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/migrations/0006_safeapp_chain_ids_big_int.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-07-02 12:42 2 | 3 | import django.contrib.postgres.fields 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ("safe_apps", "0005_safeapp_visible"), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name="safeapp", 16 | name="chain_ids", 17 | field=django.contrib.postgres.fields.ArrayField( 18 | base_field=models.PositiveBigIntegerField(), size=None 19 | ), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/safe_apps/migrations/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/signals.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from django.core.cache import caches 4 | from django.db.models.signals import post_delete, post_save 5 | from django.dispatch import receiver 6 | 7 | from .models import Provider, SafeApp 8 | 9 | logger = logging.getLogger(__name__) 10 | 11 | 12 | @receiver(post_save, sender=SafeApp) 13 | @receiver(post_delete, sender=SafeApp) 14 | @receiver(post_save, sender=Provider) 15 | @receiver(post_delete, sender=Provider) 16 | def on_safe_app_update(sender, **kwargs): 17 | logger.info("Clearing safe-apps cache") 18 | caches["safe-apps"].clear() 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-config-service/src/safe_apps/tests/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/safe_apps/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from .views import SafeAppsListView 4 | 5 | app_name = "apps" 6 | 7 | urlpatterns = [ 8 | path("", SafeAppsListView.as_view(), name="list"), 9 | ] 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-config-service/src/version.py: -------------------------------------------------------------------------------- 1 | __name__ = "Safe Config Service" 2 | __version__ = "2.0.1" 3 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | omit = 3 | *__init__.py* 4 | *tests* 5 | */migrations/* 6 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.dockerignore: -------------------------------------------------------------------------------- 1 | .cache 2 | .dockerignore 3 | .gitignore 4 | .git 5 | .env 6 | .pylintrc 7 | __pycache__ 8 | *.pyc 9 | *.egg-info 10 | .idea/ 11 | 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.env.dev: -------------------------------------------------------------------------------- 1 | PYTHONPATH=/app/ 2 | DJANGO_SETTINGS_MODULE=config.settings.local 3 | C_FORCE_ROOT=true 4 | DEBUG=0 5 | DATABASE_URL=psql://postgres:postgres@db:5432/postgres 6 | ETHEREUM_NODE_URL=http://ganache:8545 7 | ETHEREUM_TRACING_NODE_URL= 8 | ETH_L2_NETWORK=1 9 | REDIS_URL=redis://redis:6379/0 10 | CELERY_BROKER_URL=redis://redis:6379/1 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.env.l2.sample: -------------------------------------------------------------------------------- 1 | PYTHONPATH=/app/ 2 | DJANGO_SETTINGS_MODULE=config.settings.production 3 | # DJANGO_SETTINGS_MODULE=config.settings.local 4 | DJANGO_SECRET_KEY='Very-secure-secret-string' 5 | C_FORCE_ROOT=true 6 | DEBUG=0 7 | DATABASE_URL=psql://postgres:postgres@db:5432/postgres 8 | ETHEREUM_NODE_URL=https://polygon-mainnet.infura.io/v3/your-infura-id 9 | ETH_L2_NETWORK=1 10 | REDIS_URL=redis://redis:6379/0 11 | CELERY_BROKER_URL=redis://redis:6379/1 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.env.local: -------------------------------------------------------------------------------- 1 | PYTHONPATH=/app/ 2 | DJANGO_SETTINGS_MODULE=config.settings.local 3 | C_FORCE_ROOT=true 4 | DEBUG=0 5 | DATABASE_URL=psql://postgres:postgres@db:5432/postgres 6 | ETHEREUM_NODE_URL=http://172.17.0.1:8545 7 | ETHEREUM_TRACING_NODE_URL=http://172.17.0.1:8545 8 | ETH_L2_NETWORK=0 9 | REDIS_URL=redis://redis:6379/0 10 | CELERY_BROKER_URL=redis://redis:6379/1 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.env.test: -------------------------------------------------------------------------------- 1 | # Test project outside docker 2 | PYTHONPATH=/app/ 3 | C_FORCE_ROOT=true 4 | DEBUG=0 5 | USE_DOCKER=False 6 | DJANGO_SETTINGS_MODULE=config.settings.test 7 | DJANGO_SECRET_KEY=test-secret#-!key 8 | DATABASE_URL=psql://postgres:postgres@localhost:5432/postgres 9 | REDIS_URL=redis://localhost/0 10 | CELERY_BROKER_URL=redis://localhost/0 11 | ETHEREUM_NODE_URL=http://localhost:8545 12 | ETHEREUM_TRACING_NODE_URL=http://localhost:8545 13 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.env.tracing.sample: -------------------------------------------------------------------------------- 1 | PYTHONPATH=/app/ 2 | DJANGO_SETTINGS_MODULE=config.settings.production 3 | # DJANGO_SETTINGS_MODULE=config.settings.local 4 | DJANGO_SECRET_KEY='Very-secure-secret-string' 5 | C_FORCE_ROOT=true 6 | DEBUG=0 7 | DATABASE_URL=psql://postgres:postgres@db:5432/postgres 8 | ETHEREUM_NODE_URL=https://polygon-mainnet.infura.io/v3/your-infura-id 9 | ETHEREUM_TRACING_NODE_URL=http://tracing-node-url 10 | ETH_L2_NETWORK=0 11 | REDIS_URL=redis://redis:6379/0 12 | CELERY_BROKER_URL=redis://redis:6379/1 13 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners will be the default owners for everything in 2 | # the repo. Unless a later match takes precedence. 3 | * @uxio0 4 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: Uxio0 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Do POST on '...' 16 | 2. Then GET on '....' 17 | 18 | **Expected behavior** 19 | A clear and concise description of what you expected to happen. 20 | 21 | **Additional context** 22 | Add any other context about the problem here. 23 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### What was wrong? 2 | 3 | Related to Issue # 4 | 5 | ### How was it fixed? 6 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: pip 4 | directory: "/" 5 | schedule: 6 | interval: weekly 7 | day: monday 8 | reviewers: 9 | - "uxio0" 10 | 11 | - package-ecosystem: docker 12 | directory: "/docker/web" 13 | schedule: 14 | interval: weekly 15 | day: monday 16 | reviewers: 17 | - "uxio0" 18 | 19 | - package-ecosystem: github-actions 20 | directory: "/" 21 | schedule: 22 | interval: weekly 23 | day: monday 24 | reviewers: 25 | - "uxio0" 26 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/CONTRIBUTORS.txt: -------------------------------------------------------------------------------- 1 | Gnosis 2 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/config/__init__.py: -------------------------------------------------------------------------------- 1 | # This will make sure the app is always imported when 2 | # Django starts so that shared_task will use this app. 3 | from .celery_app import app as celery_app 4 | 5 | __all__ = ("celery_app",) 6 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/config/settings/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/config/settings/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/docker/web/celery/scheduler/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | # DEBUG set in .env 6 | if [ ${DEBUG:-0} = 1 ]; then 7 | log_level="debug" 8 | else 9 | log_level="info" 10 | fi 11 | 12 | sleep 10 13 | echo "==> $(date +%H:%M:%S) ==> Running Celery beat <==" 14 | exec celery -A config.celery_app beat -S django_celery_beat.schedulers:DatabaseScheduler --loglevel $log_level 15 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/docker/web/celery/worker/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | # DEBUG set in .env_docker_compose 6 | if [ ${DEBUG:-0} = 1 ]; then 7 | log_level="debug" 8 | else 9 | log_level="info" 10 | fi 11 | 12 | sleep 10 # Wait for migrations 13 | echo "==> $(date +%H:%M:%S) ==> Running Celery worker <==" 14 | exec celery -A config.celery_app worker --loglevel $log_level --pool=gevent --autoscale=120,80 15 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/docker_instructions.txt: -------------------------------------------------------------------------------- 1 | # Add the docker group if it doesn't already exist. 2 | $ sudo groupadd docker 3 | 4 | # Add the connected user "${USER}" to the docker group. 5 | # Change the user name to match your preferred user. 6 | # You may have to logout and log back in again for 7 | # this to take effect. 8 | $ sudo gpasswd -a ${USER} docker 9 | 10 | # Restart the Docker daemon. 11 | $ sudo service docker restart 12 | 13 | sudo docker-compose build 14 | sudo docker-compose up 15 | 16 | # Run container in bash mode 17 | sudo docker-compose run web bash 18 | 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/docs/__init__.py: -------------------------------------------------------------------------------- 1 | # Included so that Django's startproject comment runs against the docs directory 2 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/docs/deploy.rst: -------------------------------------------------------------------------------- 1 | Deploy 2 | ======== 3 | 4 | This is where you describe how the project is deployed in production. 5 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/docs/index.rst: -------------------------------------------------------------------------------- 1 | .. Gnosis Safe Push Service documentation master file, created by 2 | sphinx-quickstart. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to Gnosis Safe Push Service's documentation! 7 | ==================================================================== 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | install 15 | deploy 16 | docker_ec2 17 | tests 18 | 19 | 20 | 21 | Indices and tables 22 | ================== 23 | 24 | * :ref:`genindex` 25 | * :ref:`modindex` 26 | * :ref:`search` 27 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/docs/install.rst: -------------------------------------------------------------------------------- 1 | Install 2 | ========= 3 | 4 | This is where you write how to get a new laptop to run this project. 5 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/requirements-dev.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | -r requirements-test.txt 3 | flake8 4 | isort 5 | ipdb 6 | ipython 7 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/requirements-test.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | coverage==5.5 3 | django-stubs==1.8.0 4 | factory-boy==3.2.0 5 | faker==8.12.1 6 | mypy==0.910 7 | pytest-celery==0.0.0 8 | pytest-django==4.4.0 9 | pytest-env==0.6.2 10 | pytest-sugar==0.9.4 11 | pytest==6.2.4 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/run_tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | docker-compose -f docker-compose.yml -f docker-compose.dev.yml build --force-rm db redis ganache 6 | docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --no-start db redis ganache 7 | docker restart safe-transaction-service_db_1 safe-transaction-service_redis_1 safe-transaction-service_ganache_1 8 | sleep 2 9 | DJANGO_SETTINGS_MODULE=config.settings.test DJANGO_DOT_ENV_FILE=.env.test python manage.py check 10 | DJANGO_SETTINGS_MODULE=config.settings.test DJANGO_DOT_ENV_FILE=.env.test pytest -rxXs 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "3.1.25" 2 | __version_info__ = tuple( 3 | [ 4 | int(num) if num.isdigit() else num 5 | for num in __version__.replace("-", ".", 1).split(".") 6 | ] 7 | ) 8 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class ContractsConfig(AppConfig): 5 | name = 'safe_transaction_service.contracts' 6 | verbose_name = 'Ethereum Contracts app' 7 | 8 | def ready(self): 9 | from . import signals # noqa 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/decoder_abis/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/decoder_abis/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/management/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/management/commands/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/migrations/0003_auto_20210122_1352.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-22 13:52 2 | 3 | from django.db import migrations, models 4 | 5 | import safe_transaction_service.contracts.models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('contracts', '0002_auto_20210119_1136'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='contract', 17 | name='logo', 18 | field=models.ImageField(blank=True, default='', upload_to=safe_transaction_service.contracts.models.get_contract_logo_path), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/migrations/0004_auto_20210125_0925.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-25 09:25 2 | 3 | import django.db.models.deletion 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('contracts', '0003_auto_20210122_1352'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='contract', 16 | name='contract_abi', 17 | field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contracts', to='contracts.contractabi'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/migrations/0005_alter_contractabi_id.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-07 10:07 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('contracts', '0004_auto_20210125_0925'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='contractabi', 15 | name='id', 16 | field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/migrations/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/pagination.py: -------------------------------------------------------------------------------- 1 | from rest_framework.pagination import LimitOffsetPagination 2 | 3 | 4 | class DefaultPagination(LimitOffsetPagination): 5 | max_limit = 200 6 | default_limit = 100 7 | 8 | 9 | class SmallPagination(LimitOffsetPagination): 10 | max_limit = 100 11 | default_limit = 20 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/serializers.py: -------------------------------------------------------------------------------- 1 | from rest_framework import serializers 2 | 3 | from gnosis.eth.django.serializers import EthereumAddressField 4 | 5 | 6 | class ContractAbiSerializer(serializers.Serializer): 7 | abi = serializers.ListField(child=serializers.DictField()) 8 | description = serializers.CharField() 9 | relevance = serializers.IntegerField() 10 | 11 | 12 | class ContractSerializer(serializers.Serializer): 13 | address = EthereumAddressField() 14 | name = serializers.CharField() 15 | display_name = serializers.CharField() 16 | logo_uri = serializers.ImageField(source='logo') 17 | contract_abi = ContractAbiSerializer() 18 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/tests/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/contracts/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = "contracts" 6 | 7 | urlpatterns = [ 8 | path('', views.ContractsView.as_view(), name='list'), 9 | path('/', views.ContractView.as_view(), name='detail'), 10 | ] 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/apps.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from django.apps import AppConfig 4 | 5 | 6 | class HistoryConfig(AppConfig): 7 | name = 'safe_transaction_service.history' 8 | verbose_name = 'Safe Transaction Service' 9 | 10 | def ready(self): 11 | from . import signals # noqa 12 | 13 | for argument in sys.argv: 14 | if 'gunicorn' in argument: 15 | # Just run this on production 16 | # TODO Find a better way 17 | from safe_transaction_service.contracts.tx_decoder import \ 18 | get_db_tx_decoder 19 | get_db_tx_decoder() # Build tx decoder cache 20 | break 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/clients/__init__.py: -------------------------------------------------------------------------------- 1 | # flake8: noqa F401 2 | from .ens_client import EnsClient 3 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/indexers/__init__.py: -------------------------------------------------------------------------------- 1 | # flake8: noqa F401 2 | from .erc20_events_indexer import (Erc20EventsIndexer, 3 | Erc20EventsIndexerProvider) 4 | from .ethereum_indexer import EthereumIndexer, FindRelevantElementsException 5 | from .internal_tx_indexer import InternalTxIndexer, InternalTxIndexerProvider 6 | from .proxy_factory_indexer import (ProxyFactoryIndexer, 7 | ProxyFactoryIndexerProvider) 8 | from .safe_events_indexer import SafeEventsIndexer, SafeEventsIndexerProvider 9 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/indexers/abis/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/indexers/abis/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/management/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/management/commands/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0009_multisigtransaction_origin.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.3 on 2020-02-12 13:04 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0008_ethereumtx_logs'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='multisigtransaction', 15 | name='origin', 16 | field=models.CharField(default=None, max_length=100, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0010_auto_20200226_1508.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.3 on 2020-02-26 15:08 2 | 3 | from django.db import migrations 4 | 5 | import gnosis.eth.django.models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('history', '0009_multisigtransaction_origin'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='webhook', 17 | name='address', 18 | field=gnosis.eth.django.models.EthereumAddressField(blank=True, db_index=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0020_safemastercopy_version.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.8 on 2020-07-27 12:13 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0019_transactions_data_none'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='safemastercopy', 15 | name='version', 16 | field=models.CharField(default='unknown', max_length=20), 17 | preserve_default=False, 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0022_auto_20200903_1045.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.9 on 2020-09-03 10:45 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0021_moduletransaction_failed'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='multisigconfirmation', 15 | options={'ordering': ['created']}, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0023_auto_20200924_0841.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.9 on 2020-09-24 08:41 2 | 3 | from django.db import migrations 4 | 5 | import gnosis.eth.django.models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('history', '0022_auto_20200903_1045'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='multisigconfirmation', 17 | name='signature', 18 | field=gnosis.eth.django.models.HexField(default=None, max_length=2000, null=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0024_auto_20201014_1523.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.10 on 2020-10-14 15:23 2 | 3 | import django.contrib.postgres.indexes 4 | from django.db import migrations 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('history', '0023_auto_20200924_0841'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddIndex( 15 | model_name='ethereumevent', 16 | index=django.contrib.postgres.indexes.GinIndex(fields=['arguments'], name='history_eth_argumen_ba76e0_gin'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0030_auto_20210203_1541.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-02-03 15:41 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0029_auto_20201118_1015'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='multisigtransaction', 15 | name='origin', 16 | field=models.CharField(default=None, max_length=200, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0031_webhook_new_safe.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.7 on 2021-03-08 13:58 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0030_auto_20210203_1541'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='webhook', 15 | name='new_safe', 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0032_webhook_new_module_transaction.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.7 on 2021-03-18 13:17 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0031_webhook_new_safe'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='webhook', 15 | name='new_module_transaction', 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0034_webhook_new_outgoing_transaction.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.7 on 2021-03-31 12:20 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0033_auto_20210318_1654'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='webhook', 15 | name='new_outgoing_transaction', 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0035_safemastercopy_deployer.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.7 on 2021-04-05 10:38 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0034_webhook_new_outgoing_transaction'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='safemastercopy', 15 | name='deployer', 16 | field=models.CharField(default='Gnosis', max_length=50), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0038_safestatus_guard.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.8 on 2021-04-28 12:44 2 | 3 | from django.db import migrations 4 | 5 | import gnosis.eth.django.models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('history', '0037_fix_failed_module_transactions'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='safestatus', 17 | name='guard', 18 | field=gnosis.eth.django.models.EthereumAddressField(default=None, null=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/0042_safestatus_history_saf_address_1c362b_idx.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-30 12:55 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('history', '0041_auto_20210729_0916'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddIndex( 14 | model_name='safestatus', 15 | index=models.Index(fields=['address', '-nonce', '-internal_tx'], name='history_saf_address_1c362b_idx'), 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/migrations/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/pagination.py: -------------------------------------------------------------------------------- 1 | from rest_framework.pagination import LimitOffsetPagination 2 | 3 | 4 | class DefaultPagination(LimitOffsetPagination): 5 | max_limit = 200 6 | default_limit = 100 7 | 8 | 9 | class SmallPagination(LimitOffsetPagination): 10 | max_limit = 100 11 | default_limit = 20 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/services/__init__.py: -------------------------------------------------------------------------------- 1 | # flake8: noqa F401 2 | from .balance_service import BalanceService, BalanceServiceProvider 3 | from .collectibles_service import (CollectiblesService, 4 | CollectiblesServiceProvider) 5 | from .index_service import (IndexingException, IndexService, 6 | IndexServiceProvider) 7 | from .reorg_service import ReorgService, ReorgServiceProvider 8 | from .safe_service import SafeService, SafeServiceProvider 9 | from .transaction_service import TransactionService, TransactionServiceProvider 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/tests/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/tests/clients/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/tests/clients/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/tests/mocks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/tests/mocks/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/history/utils.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, Optional 2 | 3 | 4 | def clean_receipt_log(receipt_log: Dict[str, Any]) -> Optional[Dict[str, Any]]: 5 | """ 6 | Clean receipt log and make them JSON compliant 7 | :param receipt_log: 8 | :return: 9 | """ 10 | parsed_log = {'address': receipt_log['address'], 11 | 'data': receipt_log['data'], 12 | 'topics': [topic.hex() for topic in receipt_log['topics']]} 13 | return parsed_log 14 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class NotificationsConfig(AppConfig): 5 | name = 'safe_transaction_service.notifications' 6 | verbose_name = 'Notifications for Safe Transaction Service' 7 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/clients/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/clients/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/migrations/0002_auto_20200806_1534.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.8 on 2020-08-06 15:34 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('notifications', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='firebasedevice', 15 | name='cloud_messaging_token', 16 | field=models.CharField(max_length=200, null=True, unique=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/migrations/0004_alter_firebasedeviceowner_id.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-07 10:07 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('notifications', '0003_firebasedeviceowner'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='firebasedeviceowner', 15 | name='id', 16 | field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/migrations/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/tests/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/notifications/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = "notifications" 6 | 7 | urlpatterns = [ 8 | path('devices/', views.FirebaseDeviceCreateView.as_view(), 9 | name='devices'), 10 | path('devices//', views.FirebaseDeviceDeleteView.as_view(), 11 | name='devices-delete'), 12 | path('devices//safes//', views.FirebaseDeviceSafeDeleteView.as_view(), 13 | name='devices-safes-delete'), 14 | ] 15 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/static/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/static/.gitignore -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/static/safe/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/static/safe/favicon.png -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/static/safe/gnosis_safe_rgb_sticke_geen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/static/safe/gnosis_safe_rgb_sticke_geen.png -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from .models import Token 4 | 5 | 6 | @admin.register(Token) 7 | class TokenAdmin(admin.ModelAdmin): 8 | list_display = ('address', 'trusted', 'spam', 'events_bugged', 'name', 'symbol', 'decimals') 9 | list_filter = ('trusted', 'spam', 'events_bugged', 'decimals') 10 | ordering = ('name',) 11 | search_fields = ['symbol', 'address', 'name'] 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class TokensConfig(AppConfig): 5 | name = 'safe_transaction_service.tokens' 6 | verbose_name = 'Tokens for Safe Transaction Service' 7 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/clients/__init__.py: -------------------------------------------------------------------------------- 1 | # flake8: noqa F401 2 | from .binance_client import BinanceClient 3 | from .coingecko_client import CoingeckoClient 4 | from .coinmarketcap_client import CoinMarketCapClient, CoinMarketCapToken 5 | from .exceptions import CannotGetPrice 6 | from .kleros_client import KlerosClient, KlerosToken 7 | from .kraken_client import KrakenClient 8 | from .kucoin_client import KucoinClient 9 | from .safe_relay_token_client import SafeRelayToken, SafeRelayTokenClient 10 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/clients/exceptions.py: -------------------------------------------------------------------------------- 1 | class CannotGetPrice(Exception): 2 | pass 3 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/constants.py: -------------------------------------------------------------------------------- 1 | CRYPTO_KITTIES_CONTRACT_ADDRESSES = { 2 | '0x06012c8cf97BEaD5deAe237070F9587f8E7A266d', # Mainnet 3 | '0x16baF0dE678E52367adC69fD067E5eDd1D33e3bF' # Rinkeby 4 | } 5 | 6 | ENS_CONTRACTS_WITH_TLD = { 7 | '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85': 'eth', # ENS .eth registrar (Every network) 8 | } 9 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/filters.py: -------------------------------------------------------------------------------- 1 | from django_filters import rest_framework as filters 2 | 3 | from .models import Token 4 | 5 | 6 | class TokenFilter(filters.FilterSet): 7 | class Meta: 8 | model = Token 9 | fields = { 10 | 'name': ['exact'], 11 | 'address': ['exact'], 12 | 'symbol': ['exact'], 13 | 'decimals': ['lt', 'gt', 'exact'], 14 | } 15 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/management/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/management/commands/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/migrations/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/services/__init__.py: -------------------------------------------------------------------------------- 1 | # flake8: noqa F401 2 | from .price_service import PriceService, PriceServiceProvider 3 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/tests/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/tests/clients/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/tests/clients/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/tests/factories.py: -------------------------------------------------------------------------------- 1 | import factory 2 | from eth_account import Account 3 | from factory.django import DjangoModelFactory 4 | 5 | from .. import models 6 | 7 | 8 | class TokenFactory(DjangoModelFactory): 9 | class Meta: 10 | model = models.Token 11 | 12 | address = factory.LazyFunction(lambda: Account.create().address) 13 | name = factory.Faker('cryptocurrency_name') 14 | symbol = factory.Faker('cryptocurrency_code') 15 | decimals = 18 16 | logo_uri = '' 17 | trusted = False 18 | spam = False 19 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/tokens/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | app_name = "tokens" 6 | 7 | urlpatterns = [ 8 | path('', views.TokensView.as_view(), name='list'), 9 | path('/', views.TokenView.as_view(), name='detail'), 10 | path('/prices/usd/', views.TokenPriceView.as_view(), name='price-usd'), 11 | ] 12 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/utils/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/utils/ethereum.py: -------------------------------------------------------------------------------- 1 | from functools import cache 2 | 3 | from gnosis.eth import EthereumClientProvider, EthereumNetwork 4 | 5 | 6 | @cache 7 | def get_ethereum_network() -> EthereumNetwork: 8 | return EthereumClientProvider().get_network() 9 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/utils/redis.py: -------------------------------------------------------------------------------- 1 | from functools import cache 2 | 3 | from django.conf import settings 4 | 5 | from redis import Redis 6 | 7 | 8 | @cache 9 | def get_redis() -> Redis: 10 | return Redis.from_url(settings.REDIS_URL) 11 | -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/utils/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/utils/tests/__init__.py -------------------------------------------------------------------------------- /vendor/github.com/gnosis/safe-transaction-service/safe_transaction_service/utils/tests/test_tasks.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | from celery.app.task import Task as CeleryTask 4 | from redis.exceptions import LockError 5 | 6 | from ..tasks import only_one_running_task 7 | 8 | 9 | class TestTasks(TestCase): 10 | def test_only_one_running_task(self): 11 | celery_task = CeleryTask() 12 | celery_task.name = 'Test Name' 13 | with only_one_running_task(celery_task): 14 | with self.assertRaises(LockError): 15 | with only_one_running_task(celery_task): 16 | pass 17 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/coverage 3 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.eslintignore: -------------------------------------------------------------------------------- 1 | !.eslintrc.js 2 | build 3 | config 4 | contracts 5 | flow-typed 6 | flow-typed/npm 7 | migrations 8 | node_modules 9 | src/assets 10 | src/config 11 | test 12 | *.spec* 13 | *.test* -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create an issue to fix a bug 4 | --- 5 | 6 | 9 | 10 | ## Description 11 | 12 | ## Environment 13 | - Browser: 14 | - Wallet: MetaMask 15 | - Safe: 16 | - Environment: 17 | - production (rinkeby) 18 | 19 | ## Steps to reproduce 20 | 1. Go to 21 | 22 | ## Expected result 23 | 24 | ## Obtained result 25 | 26 | ## Screenshots 27 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Create a feature request for the Gnosis Safe 4 | 5 | --- 6 | 7 | ## Overview 8 | 9 | ## Goals 10 | 11 | ## Requirements 12 | 13 | ## Screens 14 | - Figma: 15 | - Zeplin: 16 | 17 | ## Links 18 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## What it solves 2 | Resolves # 3 | 4 | ## How this PR fixes it 5 | 6 | ## How to test it 7 | 8 | ## Screenshots 9 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: 'ESLint check' 2 | on: [pull_request] 3 | 4 | jobs: 5 | eslint: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v2 9 | - uses: gnosis/safe-react-eslint-plus-action@main 10 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /build 3 | .DS_Store 4 | yarn-error.log 5 | .env* 6 | .eslintcache 7 | /.idea 8 | dist 9 | electron-builder.yml 10 | /.yalc 11 | yalc.lock 12 | # testing 13 | /coverage/ 14 | src/types/contracts/ 15 | src/types/gateway/ 16 | tsconfig.tsbuildinfo 17 | public/**/*.js 18 | jest.results.json 19 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | yarn lint-staged --allow-empty 5 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | yarn tsc --noEmit --incremental 5 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.nvmrc: -------------------------------------------------------------------------------- 1 | 14 2 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.prettierignore: -------------------------------------------------------------------------------- 1 | !.eslintrc.js 2 | build 3 | /config 4 | /contracts 5 | flow-typed 6 | flow-typed/npm 7 | migrations 8 | node_modules 9 | src/assets 10 | src/types/contracts 11 | test -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "printWidth": 120, 4 | "trailingComma": "all", 5 | "singleQuote": true, 6 | "semi": false 7 | } 8 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.rescriptsrc: -------------------------------------------------------------------------------- 1 | module.exports = [require.resolve('./scripts/rescripts/webpack.js')] -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | stories: ['../src/**/*.stories.tsx'], 3 | addons: [ 4 | '@storybook/preset-create-react-app', 5 | '@storybook/addon-actions', 6 | '@storybook/addon-links', 7 | ], 8 | }; 9 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/.storybook/preview-body.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:14 2 | 3 | RUN apt-get update && apt-get install -y libusb-1.0-0 libusb-1.0-0-dev libudev-dev 4 | 5 | WORKDIR /app 6 | 7 | COPY package.json ./ 8 | 9 | COPY yarn.lock ./ 10 | 11 | RUN yarn install 12 | 13 | COPY . . 14 | 15 | EXPOSE 3000 16 | 17 | CMD ["yarn", "start"] 18 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/config/jest/LocalStorageMock.js: -------------------------------------------------------------------------------- 1 | class LocalStorageMock { 2 | store 3 | 4 | constructor() { 5 | this.store = {} 6 | } 7 | 8 | clear() { 9 | this.store = {} 10 | } 11 | 12 | getItem(key) { 13 | return this.store[key] || null 14 | } 15 | 16 | setItem(key, value) { 17 | this.store[key] = value.toString() 18 | } 19 | 20 | removeItem(key) { 21 | delete this.store[key] 22 | } 23 | } 24 | 25 | global.localStorage = new LocalStorageMock() 26 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/config/jest/Web3Mock.js: -------------------------------------------------------------------------------- 1 | import Web3 from 'web3' 2 | 3 | const window = global.window || {} 4 | window.web3 = {} 5 | window.web3.currentProvider = new Web3.providers.HttpProvider('http://localhost:8545') 6 | 7 | global.window = window 8 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | // This is a custom Jest transformer turning style imports into empty objects. 2 | // http://facebook.github.io/jest/docs/tutorial-webpack.html 3 | 4 | module.exports = { 5 | process() { 6 | return 'module.exports = {};' 7 | }, 8 | getCacheKey(fileData, filename) { 9 | // The output is always the same. 10 | return 'cssTransform' 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/config/jest/fileTransform.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | // This is a custom Jest transformer turning file imports into filenames. 4 | // http://facebook.github.io/jest/docs/tutorial-webpack.html 5 | 6 | module.exports = { 7 | process(src, filename) { 8 | return `module.exports = ${JSON.stringify(path.basename(filename))};` 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/dev-app-update.yml: -------------------------------------------------------------------------------- 1 | owner: gnosis 2 | repo: safe-react 3 | provider: github 4 | updaterCacheDirName: safe-react-updater 5 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | 3 | services: 4 | safe-react: 5 | build: ./ 6 | volumes: 7 | - /app/node_modules 8 | - ./:/app 9 | ports: 10 | - 3000:3000 11 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/public/favicon.ico -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/public/resources/all-certs.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/public/resources/all-certs.p12 -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/public/resources/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/public/resources/background.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/public/resources/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/public/resources/icon.icns -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/public/resources/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/public/resources/icon.ico -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/public/resources/safe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/public/resources/safe.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/public/ssl/client.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/public/ssl/client.p12 -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/public/ssl/rootCA.srl: -------------------------------------------------------------------------------- 1 | 0DE7FFB7FF93E6FD83FED6EB3A1D83EBB6A82DC1 2 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/scripts/github/prepare_production_deployment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -ev 4 | 5 | # Only: 6 | # - Tagged commits 7 | # - Security env variables are available. 8 | if [ -n "$VERSION_TAG" ] && [ -n "$PROD_DEPLOYMENT_HOOK_TOKEN" ] && [ -n "$PROD_DEPLOYMENT_HOOK_URL" ] 9 | then 10 | curl --silent --output /dev/null --write-out "%{http_code}" -X POST \ 11 | -F token="$PROD_DEPLOYMENT_HOOK_TOKEN" \ 12 | -F ref=master \ 13 | -F "variables[TRIGGER_RELEASE_COMMIT_TAG]=$VERSION_TAG" \ 14 | $PROD_DEPLOYMENT_HOOK_URL 15 | else 16 | echo "[ERROR] Production deployment could not be prepared" 17 | fi 18 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/scripts/rescripts/webpack.js: -------------------------------------------------------------------------------- 1 | const { removeWebpackPlugin } = require('@rescripts/utilities') 2 | 3 | module.exports = (config) => { 4 | const webpackWithoutEsLint = removeWebpackPlugin('ESLintWebpackPlugin', config) 5 | return webpackWithoutEsLint 6 | } 7 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/assets/fonts/Averta-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/assets/fonts/Averta-ExtraBold.woff2 -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/assets/fonts/Averta-normal.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/assets/fonts/Averta-normal.woff2 -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/assets/icons/alert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/assets/icons/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/assets/icons/check_bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/assets/icons/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/assets/icons/info.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/assets/icons/shape.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/assets/dotRinkeby.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/assets/key.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/assets/triangle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/assets/wallet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/CircleDot.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react' 2 | import Dot from '@material-ui/icons/FiberManualRecord' 3 | import { getNetworkConfigById } from 'src/config' 4 | import { ETHEREUM_NETWORK } from 'src/config/networks/network' 5 | 6 | type Props = { 7 | networkId: ETHEREUM_NETWORK 8 | className: string 9 | } 10 | 11 | export const CircleDot = (props: Props): React.ReactElement => { 12 | const networkInfo = getNetworkConfigById(props.networkId)?.network 13 | 14 | return 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-authereum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-authereum.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-fortmatic.svg: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-metamask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-metamask.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-opera-touch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-opera-touch.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-opera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-opera.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-squarelink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Header/components/WalletIcon/icons/icon-squarelink.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/MobileStart/assets/phone@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/components/AppLayout/MobileStart/assets/phone@2x.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/AppLayout/Sidebar/SafeHeader/index.stories.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | import WalletInfo from './index' 4 | 5 | export default { 6 | title: 'Layout/WalletInfo', 7 | component: WalletInfo, 8 | } 9 | 10 | export const SimpleLayout = (): React.ReactElement => ( 11 | ({})} 17 | onReceiveClick={console.log} 18 | onNewTransactionClick={console.log} 19 | /> 20 | ) 21 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/CookiesBanner/assets/intercom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoprnet/gnosis-hosted/e4fb6475bd457edcf10685abb54eac58640e379b/vendor/github.com/hoprnet/safe-react/src/components/CookiesBanner/assets/intercom.png -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/CustomIconText/index.tsx: -------------------------------------------------------------------------------- 1 | import { EthHashInfo } from '@gnosis.pm/safe-react-components' 2 | import React, { ReactElement } from 'react' 3 | 4 | type Props = { 5 | address: string 6 | iconUrl?: string 7 | iconUrlFallback?: string 8 | text?: string 9 | } 10 | 11 | export const CustomIconText = ({ address, iconUrl, text, iconUrlFallback }: Props): ReactElement => ( 12 | 22 | ) 23 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/Divider/divider.stories.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | import Divider from './index' 4 | 5 | export default { 6 | title: 'Data Display/Divider', 7 | component: Divider, 8 | parameters: { 9 | componentSubtitle: 'Used to separate content.', 10 | }, 11 | } 12 | 13 | export const Horizontal = (): React.ReactElement => ( 14 | <> 15 |
Some content
16 | 17 |
Some content2
18 | 19 | ) 20 | 21 | export const Arrow = (): React.ReactElement => ( 22 | <> 23 |
Some content
24 | 25 |
Some content2
26 | 27 | ) 28 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/FlexSpacer/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | // This component is used to create an empty div element to use inside a flex container. 4 | // It can be added into a flex component and use to justify content leaving space around with easier alignment rules. 5 | const FlexSpacer = (): React.ReactElement =>
6 | 7 | export default FlexSpacer 8 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/List/ListIcon.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | import { Icon, IconTypes } from '@gnosis.pm/safe-react-components' 4 | 5 | const StyledIcon = styled(Icon)` 6 | min-width: 32px !important; 7 | ` 8 | 9 | type Props = { 10 | type: IconTypes 11 | } 12 | 13 | const ListItemIcon = ({ type }: Props): React.ReactElement => 14 | 15 | export default ListItemIcon 16 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/ListContentLayout/index.ts: -------------------------------------------------------------------------------- 1 | import * as LayoutComponents from './Layout' 2 | import List from './List' 3 | 4 | const ListContentLayout = { 5 | ...LayoutComponents, 6 | List, 7 | } 8 | 9 | export default ListContentLayout 10 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/LoaderContainer/index.tsx: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components' 2 | 3 | export const LoadingContainer = styled.div` 4 | width: 100%; 5 | height: 100%; 6 | display: flex; 7 | align-items: center; 8 | justify-content: center; 9 | ` 10 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/Notifier/actions.ts: -------------------------------------------------------------------------------- 1 | import removeSnackbar from 'src/logic/notifications/store/actions/removeSnackbar' 2 | 3 | export default { 4 | removeSnackbar, 5 | } 6 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/Notifier/selector.ts: -------------------------------------------------------------------------------- 1 | import { createStructuredSelector } from 'reselect' 2 | 3 | import { notificationsListSelector } from 'src/logic/notifications/store/selectors' 4 | 5 | export default createStructuredSelector({ 6 | notifications: notificationsListSelector, 7 | }) 8 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/Root/OnboardCustom.module.scss: -------------------------------------------------------------------------------- 1 | /* Onboard.js custom styles */ 2 | 3 | :global(.bn-onboard-custom.bn-onboard-modal) { 4 | font-family: 'Averta'; 5 | z-index: 2001; 6 | } 7 | 8 | :global(.torusIframe) { 9 | z-index: 9999; 10 | } 11 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/SafeListSidebar/SafeList/assets/star.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/SafeListSidebar/selectors.ts: -------------------------------------------------------------------------------- 1 | import { createSelector } from 'reselect' 2 | 3 | import { safesWithNamesAsList } from 'src/logic/safe/store/selectors' 4 | 5 | /** 6 | * Sort safe list by the name in the address book 7 | */ 8 | export const sortedSafeListSelector = createSelector([safesWithNamesAsList], (safes) => 9 | safes.sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1)), 10 | ) 11 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/Spacer/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react' 2 | 3 | const style = { 4 | flexGrow: 1, 5 | } 6 | 7 | // eslint-disable-next-line react/display-name 8 | export default ({ className }: any) =>
9 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/Table/types.d.ts: -------------------------------------------------------------------------------- 1 | export interface TableColumn { 2 | align?: 'inherit' | 'left' | 'center' | 'right' | 'justify' 3 | custom: boolean 4 | disablePadding: boolean 5 | id: string 6 | label: string 7 | order: boolean 8 | static?: boolean 9 | style?: any 10 | formatTypeSort?: (value: string | number) => string | number 11 | width?: number 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/TextBox/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styled from 'styled-components' 3 | 4 | import { border } from 'src/theme/variables' 5 | 6 | const Box = styled.p` 7 | padding: 10px; 8 | word-wrap: break-word; 9 | border: solid 2px ${border}; 10 | ` 11 | 12 | type Props = { 13 | children: React.ReactNode 14 | className?: string 15 | } 16 | 17 | const TextBox = ({ children, ...rest }: Props): React.ReactElement => { 18 | return {children} 19 | } 20 | 21 | export default TextBox 22 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/WhenFieldChanges/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { OnChange } from 'react-final-form-listeners' 3 | 4 | import GnoField from 'src/components/forms/Field' 5 | 6 | const WhenFieldChanges = ({ field, set, to }) => ( 7 | 8 | {( 9 | // No subscription. We only use Field to get to the change function 10 | { input: { onChange } }, 11 | ) => ( 12 | 13 | {() => { 14 | onChange(to) 15 | }} 16 | 17 | )} 18 | 19 | ) 20 | export default WhenFieldChanges 21 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/forms/Field/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Field } from 'react-final-form' 3 | 4 | // $FlowFixMe 5 | const GnoField = ({ ...props }: any) => 6 | 7 | export default GnoField 8 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/layout/Backdrop/index.tsx: -------------------------------------------------------------------------------- 1 | import Backdrop from '@material-ui/core/Backdrop' 2 | import { makeStyles } from '@material-ui/core/styles' 3 | import React, { ReactElement } from 'react' 4 | import ReactDOM from 'react-dom' 5 | 6 | const useStyles = makeStyles({ 7 | root: { 8 | zIndex: 1300, 9 | top: '52px', 10 | }, 11 | }) 12 | 13 | const BackdropLayout = (props: { isOpen: boolean }): ReactElement | null => { 14 | const classes = useStyles() 15 | 16 | if (!props.isOpen) { 17 | return null 18 | } 19 | 20 | return ReactDOM.createPortal(, document.body) 21 | } 22 | 23 | export default BackdropLayout 24 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/layout/Block/index.tsx: -------------------------------------------------------------------------------- 1 | import classNames from 'classnames/bind' 2 | import * as React from 'react' 3 | 4 | import { capitalize } from 'src/utils/css' 5 | import styles from './index.module.scss' 6 | 7 | const cx = classNames.bind(styles) 8 | 9 | class Block extends React.PureComponent { 10 | render() { 11 | const { children, className, justify, margin, padding, ...props } = this.props 12 | 13 | const paddingStyle = padding ? capitalize(padding, 'padding') : undefined 14 | return ( 15 |
16 | {children} 17 |
18 | ) 19 | } 20 | } 21 | 22 | export default Block 23 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/layout/Bold/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react' 2 | 3 | class Bold extends React.PureComponent { 4 | render() { 5 | const { children, ...props } = this.props 6 | 7 | return {children} 8 | } 9 | } 10 | 11 | export default Bold 12 | -------------------------------------------------------------------------------- /vendor/github.com/hoprnet/safe-react/src/components/layout/Button/index.tsx: -------------------------------------------------------------------------------- 1 | import Button from '@material-ui/core/Button' 2 | import * as React from 'react' 3 | 4 | const calculateStyleBased = (minWidth, minHeight) => ({ 5 | minWidth: minWidth && `${minWidth}px`, 6 | minHeight: minHeight && `${minHeight}px`, 7 | }) 8 | 9 | const GnoButton = ({ minWidth, minHeight = 35, testId = '', style = {}, ...props }: any) => { 10 | const calculatedStyle = calculateStyleBased(minWidth, minHeight) 11 | 12 | return