# default-module-configs.ts

### 1. Описание файла

**Данный файл предназначен для нескольких вещей:**\
1\. Просмотреть какие модули поддерживает данный софт и в будущем их добавить к себе в роут\
2\. Просмотреть какие параметры принимает модуль и если нужно, то как-то улучшить уже свои модули в уже готовом флоу\
3\. Просмотреть какие параметры указаны у модуля по умолчанию

{% hint style="info" %}
Файл default-module-configs.ts содержит параметры всех модулей.\
Параметр модуля - это `count:[1,1]` или `indexGroup: 1` и тд. \
Это всё то, что говорит модулю как именно он должен быть выполнен. \
Давайте рассмотрим пример ниже..
{% endhint %}

В данном случае:

* **merkly-refuel** - это название модуля
* **count, indexGroup, merklySrcNetworks и тд** - это параметры модуля

<figure><img src="https://2167770735-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdxvcw5hybcb3iGX5xC7P%2Fuploads%2FgZR5imuUSFJ2i65Ww5jp%2Fimage.png?alt=media&#x26;token=99439174-b601-4d1e-9cee-37ea6881944d" alt=""><figcaption><p>пример модуля из default-module-configs.ts</p></figcaption></figure>

***

### 2. Общие параметры для модулей:

Есть параметры, которые используются 1 раз для конкретного модуля. Их мы будем рассматривать во вкладке PROJECTS для софта под конкретный проект. А есть те, которые используются у нас почти во всех модулях, давай их и рассмотрим:

* <mark style="color:purple;">**count: \[1, 1],**</mark> - Количество повторений данного модуля в диапазоне ОТ и ДО
* <mark style="color:purple;">**delay: \[30, 60],**</mark> - Задержка между транзакциями внутри одного модуля ОТ и ДО
* <mark style="color:purple;">**indexGroup: 1,**</mark> - Индекс, который нам помогает понять в какой последовательности вы хотите запускать модули, а так же позволяет перемешивать все модули между собой с одинаковым индексом, если в settings включена настройка shuffle
* <mark style="color:purple;">**minNativeBalance: 0.0000001,**</mark> - Минимальный нативный баланс сети, который должен быть для выполнения модуля. Мы смотрим на нативный баланс сети и выполняем модуль, только если баланс выше значения, которое вы указали. В ином случае модуль пропустим и перейдём к следующему
* <mark style="color:purple;">**maxGas: \['eth', 25],**</mark> - Максимальный gwei в конкретной сети, если gwei будет выше указанного значение, тогда скрипт будет ждать, пока он не опустится. Это поле выполняет ровно тоже самое, что и maxGas в settings.ts
* <mark style="color:purple;">**gweiRange: \[0, 0],**</mark> - Диапазон вашего кастомного gwei, который будет применяться для транзакций. Это поле выполняет ровно тоже самое, что и gweiRange в settings.ts
* <mark style="color:purple;">**gasLimitRange: \[0, 0],**</mark> - Диапазон вашего кастомного gas limit, который будет применяться для транзакций
* <mark style="color:purple;">**network: 'bsc',**</mark> - Сеть в которой будет выполняться модуль (bsc | opBNB | eth | optimism | zkSync | arbitrum | polygon ). Мы подставим нужный клиент сети и выполним транзакцию в той сети, которую вы укажите в данном параметре
* <mark style="color:orange;">**minAndMaxAmount: \[0.2, 0.3],**</mark> - Количество токенов, которое будет использоваться в работе в диапазоне ОТ и ДО
* <mark style="color:orange;">**reverseMinAndMaxAmount: \[99.99, 99.99],**</mark> - Процент токенов в диапазоне ОТ и ДО, которое будет использовано при обратном свапе. То есть, если вы свапаете 100 USDC в USDT, этим параметров можно отрегулировать процент, который оставите в токенах USDT
* <mark style="color:orange;">**usePercentBalance: true,**</mark> - Нужно ли успользовать проценты, вместо целых чисел. Если стоит true, тогда minAndMaxAmount значение будет использоваться как проценты! minAndMaxAmount: \[80, 90] - от 80% до 90%. Если же будет стоять false, значит будут использоваться обычные числа и если вы работаете с ETH, тогда 0.2-0.3 ETH или если с USDC, тогда 0.2-0.3 USDC
* <mark style="color:orange;">**pairs: \['ETH', 'USDC'],**</mark> - Пара токенов, которые будут использоваться. Из какого токена и в какой токен нужно провести транзакцию.
* <mark style="color:orange;">**reverse: true,**</mark> - Выполняет точно такую же транзакцию, только наоборот. Если вы свапали например 0.1 ETH в USDC, тогда \~190 USDC вернётся обрано в 0.1 ETH, если вы указали в данном параметре true. Если же оставили false, тогда свап пройдёт лишь в одну сторону.
* <mark style="color:orange;">**contractAddress: 'native',**</mark> - Адрес контракта, который будет использоваться. 'native' или '0x92815....'. Можно например добавить этот параметр к модуля transfer и указать контракт native, тогда он отправит нативный токен сети на биржу или на другой адрес
* <mark style="color:orange;">**contractPairs: \['0xEe....eeE', '0x335...f4'],**</mark> - Пара контрактов, которая будет использоваться в работе. Первый контракт это ИЗ которого делаете swap, а второй В который оно прийдёт. Данное поле нужно в случаях, когда мы не поддерживаем какие-то токены. Тогда вы можете указать контракты.
* <mark style="color:red;">**stopWalletOnError: true,**</mark> - Если поле стоит в true, значит при получении ошибки внутри модуля скрипт остановит своё выполнение для этого кошелька и возьмёт следующий кошелёк. То есть дальнейшие модули, которые планировались выполниться после этого модуля, который упал поставятся на паузу. Вы можете продолжить выполнение этого модуля, который упал и тех модулей, который поставились на паузу, если выполните восстановление роута через npm run start.
* <mark style="color:red;">**stopWalletOnPassed: true,**</mark> - Если поле стоит в true, значит при выполнении модуля со статусом passed скрипт остановит своё выполнение для этого кошелька и возьмёт следующий кошелёк
* <mark style="color:red;">**skipClearInSaved: true,**</mark> - Если поле стоит в true, значит независимо от результата модуля, он не будет очищен в сохраненных модулях. Будет полезно, если какой-то модуль должен всегда выполняться, даже при восстановлении

{% hint style="warning" %}
ВНИМАНИЕ! Вам не обязательно в роутах дублировать для модулей их параметры, которые уже указаны в default-module-configs.ts, так как в первую очередь мы настройки берём из этого файла, а уже потом их переопределяем, если вы указали настройки в роуте для модуля, но вы так же можете и указывать все параметры в роуте - это не будет ошибкой. Работайте, как удобно.
{% endhint %}

{% hint style="danger" %}
Нельзя добавлять новые параметры для модулей в данном файле! Изменять можно только существующие!

Внутри роутов, можно добавлять параметры для модуля исходя из тех, которые указаны в этом конфиге.
{% endhint %}
