# flow-4.ts

{% hint style="info" %}
Давайте рассмотрим параметры каждого модуля по отдельности.\
При этом базовые параметры мы рассмотривать не будем. К базовым параметрам относится: delay, indexGroup, count и тд, описание этих полей вы сможете найти в default-module-configs.ts
{% endhint %}

***

```typescript
 {
    moduleName: 'bitget-withdraw',
    indexGroup: 3,
    stopWalletOnError: true,
    maxStrictCheckAttempts,

    minAndMaxAmount,
    usePercentBalance: false,
    tokenToWithdraw: 'ETH',
    randomNetworks: ['base', 'optimism', 'arbitrum'],
    minTokenBalance: minAmountValue,
    minDestTokenBalance: minAmountValue,
    minDestTokenNetwork: 'taiko',

    waitBalance: maxAmount,
    collectTokens: ['ETH'],
  },
```

<mark style="color:orange;">**stopWalletOnError:**</mark> если по какой-то причине мы получим ошибку с Bitget, тогда софт остановит своё выполнение для данного кошелька и перейдёт к следующему. То есть дальнейшие модули вызваны не будут!

<mark style="color:orange;">**maxStrictCheckAttempts:**</mark> максимальное количество попыток, прежде чем кошелёк упадёт с ошибкой и софт перейдёт к следующему кошельку

<mark style="color:orange;">**minAndMaxAmount:**</mark> сумма в диапазоне, которая будет выводиться с биржи

<mark style="color:orange;">**usePercentBalance:**</mark> в данном модуле нет никакого смысла использовать это поле по этому его отключили

<mark style="color:orange;">**tokenToWithdraw:**</mark> токен для вывода с биржи

<mark style="color:orange;">**randomNetworks:**</mark> список рандомных сетей, которые будут использоваться для вывода с биржи

<mark style="color:orange;">**minTokenBalance:**</mark>  минимальное значение, которое должно быть в сети в которую идёт отправка средств с биржи, если уже есть нужная сумма в любой из сетей, которые перечислили в randomNetworks, тогда вывод с биржи пропустим и пойдём сразу делать bridge в сеть Taiko

<mark style="color:orange;">**minDestTokenBalance:**</mark> минимальное значение ETH в сети, которая указана в параметре minDestTokenNetwork. То есть если в Taiko уже есть нужная сумма для объема, тогда мы так же пропустим модуль для вывода средств с биржи

<mark style="color:orange;">**collectTokens**</mark>: токены, которые будем собирать с суб-адрессов и переводить на main аккаунт для дальнейшего использования.

<mark style="color:orange;">**waitBalance:**</mark> ожидает конкретную сумму, которая должна быть на main аккаунте для вывода на кошелёк, если нужной суммы не будет, тогда будет проверять каждые 30 секунд, пока она не появится

***

```typescript
{
    moduleName: 'xy-finance-bridge',
    indexGroup: 5,
    count: [1, 1],
    stopWalletOnError: true,
    maxStrictCheckAttempts,

    randomNetworks: ['arbitrum', 'optimism', 'base'],
    minNativeBalance: minAmountValue,
    useUsd: false,
    destinationNetwork: 'taiko',
    minDestNativeBalance: minAmountValue,
    expectedBalance: [0, 0],
    balanceToLeft: minAndMaxTransferLeft,
    minAmount: 0,
    slippage: 1,

    waitTime: 60,
  },
```

> Один из способов закинуть деньги в сеть taiko (\~0.25$)

\ <mark style="color:orange;">**minStrictBalance / minNativeBalance:**</mark> минимальный баланс, который должен быть в сети перед тем, как делать bridge. Если баланс будет меньше указанного значения, тогда кошелёк упадёт на ошибку.

<mark style="color:orange;">**randomNetworks:**</mark> список рандомных сетей, которые будут использоваться для бриджа в сеть указанную в destinationNetwork. Мы найдём все сети в которых будет нужное количество ETH и рандомным способом возьмём одну из них.

<mark style="color:orange;">**useUsd:**</mark> использовать ли вместо ETH обычные $ при работе с модулем. Если это поле будет указано в true, тогда во всех параметрах, которые отвечают за значения (например: expectedBalance, minDestNativeBalance, balanceToLeft и тд) нужно указывать значения в $ эквиваленте.

<mark style="color:orange;">**destinationNetwork:**</mark> сеть в которую будем делать bridge

<mark style="color:orange;">**minDestNativeBalance:**</mark> минимальный баланс, который должен быть в сети в которую отправляем средства. Если там будет необходимый баланс, тогда софт выполнять данный модуль не будет.

<mark style="color:orange;">**balanceToLeft:**</mark> баланс, который мы оставим в сети из которой мы будем отправлять ETH в сеть Taiko

<mark style="color:orange;">**slippage:**</mark> процент возможной потери при выполнение транзакции

<mark style="color:orange;">**waitTime:**</mark> время ожиданиями между проверками баланса в destinationNetwork

***

```
{
    moduleName: 'hyperlane-merkly-bridge-token',
    indexGroup: 5,
    count: [1, 1],
    stopWalletOnError: true,
    maxStrictCheckAttempts,
    
    maxAmount: [0.495, 0.5],
    randomNetworks: ['arbitrum', 'optimism', 'base'],
    minNativeBalance: minAmountValue,
    useUsd: false,
    destinationNetwork: 'taiko',
    minDestNativeBalance: minAmountValue,
    expectedBalance: [0, 0],
    balanceToLeft: minAndMaxTransferLeft,
    minAmount: 0,
    slippage: 1,
    
    waitTime: 60,
},
```

> Второй способ отправки денег в taiko, более дорогой (1$)\
> Параметры схожи с **xy-finance-bridge**

<mark style="color:orange;">**maxAmount:**</mark> ограничитель для максимального эмаунта, необходим, так как верхний лимит при отправке через hyperlane - 0.5 ETH

***

```typescript
{
    moduleName: 'wrap-eth',
    indexGroup: 10,
    count: [39, 42],
    stopWalletOnError: true,
    maxStrictCheckAttempts: 50,

    network: 'taiko',
    minNativeBalance: minAmountValue,
    minTokenBalance: minAmountValue,
    minDestNativeBalance: minAmountValue,
    minDestTokenBalance: minAmountValue,
    minAndMaxAmount: minAndMaxWrapAmount,
    usePercentBalance: true,

    reverse: true,
    reverseMinAndMaxAmount: [100, 100],
  },
```

<mark style="color:orange;">**network:**</mark> сеть в которой модуль будет выполнять транзакции

<mark style="color:orange;">**minNativeBalance / minTokenBalance / minDestNativeBalance / minDestTokenBalance:**</mark> минимальное значение требуемое для выполнения данного модуля

<mark style="color:orange;">**minAndMaxAmount:**</mark> значение, которое будет использовать во время выполнения модуля. Тут нужно обратить внимание, что это поле работает в связке с **usePercentBalance: true**. Так как **usePercentBalance** поле включено, значит поле **minAndMaxAmount** уже принимает % вместо статической цифры.

***

```typescript
 {
    moduleName: 'random-approve',
    indexGroup: 10,
    count: [-1, 2],

    network: 'taiko',
    minAndMaxAmount: [100, 10000],

    // Токены по порядку: USDC, WETH, TKO, USDT, USDT, USDC.e, MAGA
    contractAddresses: [
      '0x07d83526730c7438048d55a4fc0b850e2aab6f0b',
      '...',
    ],

    // Адреса проектов, по порядку: ZUMi Finance, Bebop, DTX, Hana Finance, SyncSwap
    projectAddresses: [
      '0x04830cfced9772b8acbaf76cfc7a630ad82c9148',
      '...',
    ],
  },
```

<mark style="color:orange;">**minAndMaxAmount:**</mark> значение, которое будет использоваться для выдачи апрува в конкретном проекте для конкретного токена

<mark style="color:orange;">**contractAddresses:**</mark> список контрактов токенов, которые будут использоваться для апрува

<mark style="color:orange;">**projectAddresses:**</mark> список контрактов проектов, которые будут использоваться для апрува

***

```typescript
{
    moduleName: 'taiko-rubyscore-vote',
    indexGroup: 10,
    count: [-3, 1],

    network: 'taiko',
  },
```

<mark style="color:orange;">**count:**</mark> количество повторение данного модуля. Так же стоит 0, что указывает на то, что данный модуль может быть не выполнен на 33% кошельках.

***

```typescript
 {
    moduleName: 'brigadegame-...',
    indexGroup: 10,
    count: [-3, 1],

    network: 'taiko',
  },
```

***

```typescript
{
    moduleName: '0xastra-boost',
    indexGroup: 10,
    count: [-2, 1],

    network: 'taiko',
  },
```

***

```typescript
{
    moduleName: 'bitget-deposit',
    indexGroup: 50,
    maxStrictCheckAttempts,
    minStrictBalance: minAmountValue,

    balanceToLeft: minAndMaxTransferLeft,
    minTokenBalance: minAmountValue,
    tokenToSupply: 'ETH',
    network: 'arbitrum',
    randomNetworks: ['arbitrum', 'optimism'],
  },
```

<mark style="color:orange;">**balanceToLeft:**</mark> баланс, который нужно оставить в сети из которой мы отправляем средства на биржу

<mark style="color:orange;">**minTokenBalance:**</mark> минимальный баланс, который мы должны отправить на биржу

<mark style="color:orange;">**tokenToSupply:**</mark> токен, который будет отправлен на биржу

<mark style="color:orange;">**randomNetworks**</mark><mark style="color:orange;">:</mark> рандомные сети в которых мы будем проверять, есть ли нужный баланс для отправки на биржу и если он будет, тогда будем использовать данную сеть. Если вы указали так же поле **network**, то данное поле не будет никак учитываться. То есть поле **randomNetworks** стоит в приоритете.

***
