import { RangeByIdFilter } from '../helpers';
import { AutoGasNetworks } from '../managers/auto-gas/types';
import { NumberRange } from './common';
import { UserModuleConfig } from './module';
export interface SettingsDelays {
    betweenTransactions: NumberRange;
    betweenModules: NumberRange;
    betweenWallets: NumberRange;
    betweenRetries: number;
    betweenRestarts: number;
}
export interface AutoGasNetworkSettings {
    useAutoGas: boolean;
    cex: 'binance' | 'okx';
    minBalance: number;
    withdrawToAmount: NumberRange;
    withdrawSleep: NumberRange;
    expectedBalance?: NumberRange;
}
export type AutoGasSettings = Partial<Record<AutoGasNetworks, AutoGasNetworkSettings>>;
export interface ShuffleSettings {
    wallets: boolean;
    modules: boolean;
}
interface InvitesAmount {
}
export interface DefaultSettings {
    routes?: Route[];
    scrollRoutes: Route[];
    baseRoutes: Route[];
    zkSyncRoutes: Route[];
    zoraRoutes: Route[];
    layerZeroRoutes: Route[];
    shuffle: ShuffleSettings;
    threads: number;
    txAttempts: number;
    delay: SettingsDelays;
    invitesAmount: InvitesAmount;
    autoGas: AutoGasSettings;
    txAttemptsToChangeProxy: number;
    useProxy: boolean;
    useRestartInMain: boolean;
    useSavedModules: boolean;
    idFilter: RangeByIdFilter;
}
export type Route = 'base' | 'flow-1' | 'flow-2' | 'flow-3' | 'flow-4' | 'one-time' | 'low-cost' | 'top-up-balance' | 'warm-up' | 'volume' | 'dev' | 'checkers' | 'new-accounts' | 'polyhedra' | 'alt-layer' | 'check-balances';
export type Settings = DefaultSettings;
export type RouteSettings = {
    modules: UserModuleConfig[];
    countModules: NumberRange;
    limitWalletsToUse: number;
    splitModuleCount?: boolean;
};
export interface BinanceSettings {
    proxy: string;
    secretKeys: {
        secret: string;
        apiKey: string;
    };
}
export interface OkxSettings {
    proxy: string;
    accountName: string;
    accounts: {
        [key: string]: {
            apiKey: string;
            secret: string;
            password: string;
        };
    };
}
export interface TelegramSettings {
    token: {
        modulesInfo: string;
        criticalErrors: string;
    };
    IDs: {
        modulesInfo: number[];
        criticalErrors: number[];
    };
}
export {};
