95 lines
2.0 KiB
TypeScript
95 lines
2.0 KiB
TypeScript
export type Network = 'ethereum' | 'arbitrum' | 'polygon' | 'optimism' | 'base';
|
|
|
|
export type WalletProviderType = 'private_key' | 'keystore' | 'eip1193';
|
|
|
|
export type DexProvider = 'uniswap_v3' | 'curve' | '1inch';
|
|
|
|
export type ExecutionMode = 'direct' | 'flash_loan';
|
|
|
|
export type TokenSymbol = 'USDC' | 'USDT' | 'DAI';
|
|
|
|
export interface NetworkConfig {
|
|
name: string;
|
|
chainId: number;
|
|
rpcUrl: string;
|
|
aavePoolAddress: string;
|
|
aavePoolDataProviderAddress: string;
|
|
tokens: {
|
|
[key in TokenSymbol]?: string;
|
|
};
|
|
dex: {
|
|
uniswapV3Router?: string;
|
|
uniswapV3Quoter?: string;
|
|
curvePool?: string;
|
|
curveRouter?: string;
|
|
};
|
|
}
|
|
|
|
export interface WalletConfig {
|
|
providerType: WalletProviderType;
|
|
privateKey?: string;
|
|
keystorePath?: string;
|
|
keystorePassword?: string;
|
|
eip1193ProviderUrl?: string;
|
|
}
|
|
|
|
export interface LoopConfig {
|
|
initialCollateralAmount: number;
|
|
collateralAsset: TokenSymbol;
|
|
borrowAsset: TokenSymbol;
|
|
ltvPercentage: number;
|
|
numLoops: number;
|
|
minHealthFactor: number;
|
|
maxLoops: number;
|
|
}
|
|
|
|
export interface DexConfig {
|
|
provider: DexProvider;
|
|
slippageTolerance: number;
|
|
oneInchApiKey?: string;
|
|
}
|
|
|
|
export interface SafetyConfig {
|
|
priceDeviationThreshold: number;
|
|
enablePriceChecks: boolean;
|
|
}
|
|
|
|
export interface GasConfig {
|
|
maxGasPriceGwei: number;
|
|
gasLimitMultiplier: number;
|
|
}
|
|
|
|
export interface AppConfig {
|
|
network: Network;
|
|
networkConfig: NetworkConfig;
|
|
wallet: WalletConfig;
|
|
loop: LoopConfig;
|
|
dex: DexConfig;
|
|
safety: SafetyConfig;
|
|
gas: GasConfig;
|
|
executionMode: ExecutionMode;
|
|
}
|
|
|
|
export interface LoopState {
|
|
currentLoop: number;
|
|
totalSupplied: bigint;
|
|
totalBorrowed: bigint;
|
|
healthFactor: number;
|
|
collateralBalance: bigint;
|
|
borrowBalance: bigint;
|
|
}
|
|
|
|
export interface SwapQuote {
|
|
amountOut: bigint;
|
|
priceImpact: number;
|
|
route?: string[];
|
|
}
|
|
|
|
export interface TransactionResult {
|
|
success: boolean;
|
|
txHash?: string;
|
|
error?: string;
|
|
gasUsed?: bigint;
|
|
}
|
|
|