Files
27-combi/src/types/index.ts
2026-02-09 21:51:30 -08:00

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;
}