Bot & Automation
Market AI
/root/hermes-projects/Market AI
packages/core/src/types.ts
text
export type ChainId = "solana" | "ethereum" | "base" | "bsc" | "arbitrum" | "polygon" | string;
export type TradingMode = "scalp" | "momentum" | "snipe" | "conservative";
export type SignalAction = "BUY" | "SELL" | "WAIT";
export type TrendDirection = "Bullish" | "Bearish" | "Sideways" | "Mixed";
export type RiskLevel = "Medium" | "High" | "Extreme";
export type CandidateVerdict = "PRIORITY_WATCH" | "RESEARCH" | "SKIP";
export type TradeSide = "BUY" | "SELL";
export type TradeExecutionMode = "paper" | "live";
export interface MemeTokenProfile {
chainId: ChainId;
tokenAddress: string;
symbol: string;
name: string;
pairAddress?: string;
dexId?: string;
url?: string;
}
export interface MemePairMetrics {
priceUsd: number;
liquidityUsd: number;
fdv?: number;
marketCap?: number;
volumeH24: number;
buysH24: number;
sellsH24: number;
priceChangeM5?: number;
priceChangeH1?: number;
priceChangeH6?: number;
priceChangeH24?: number;
pairCreatedAt?: string;
}
export interface MemeCoinCandidate {
id: string;
token: MemeTokenProfile;
metrics: MemePairMetrics;
score: number;
verdict: CandidateVerdict;
riskLevel: RiskLevel;
labels: string[];
warnings: string[];
source: string;
scannedAt: string;
}
export interface ScannerCriteria {
chainId?: ChainId;
limit?: number;
minLiquidityUsd?: number;
minVolumeH24?: number;
maxAgeHours?: number;
minScore?: number;
}
export interface MemeSignalRequest {
query: string;
mode: TradingMode;
chainId?: ChainId;
}
export interface MemeSignalAnalysis {
id: string;
candidate: MemeCoinCandidate;
mode: TradingMode;
action: SignalAction;
trend: TrendDirection;
confidence: number;
entryPlan: string;
stopLossPlan: string;
takeProfitPlan: string;
riskLevel: RiskLevel;
maxPositionSize: string;
invalidation: string;
reasons: string[];
warnings: string[];
disclaimer: string;
generatedAt: string;
}
export interface TradeRequest {
userId?: string;
chainId: ChainId;
tokenAddress: string;
side: TradeSide;
amount: number;
slippageBps: number;
mode: TradeExecutionMode;
}
export interface TradeQuote {
id: string;
request: TradeRequest;
inputSymbol: string;
outputSymbol: string;
estimatedOutput: string;
priceImpactPct?: number;
routeSummary: string;
expiresAt: string;
warnings: string[];
}
export interface TradeExecutionResult {
id: string;
mode: TradeExecutionMode;
status: "prepared" | "submitted" | "filled" | "rejected" | "failed";
txHash?: string;
quote?: TradeQuote;
message: string;
executedAt: string;
}
export interface WatchlistItem {
userId: string;
chainId: ChainId;
tokenAddress: string;
symbol?: string;
createdAt: string;
}
export interface AlertRule {
userId: string;
chainId: ChainId;
tokenAddress: string;
condition: "price_above" | "price_below" | "volume_spike" | "score_above" | "liquidity_below";
target?: number;
enabled: boolean;
createdAt: string;
}
export interface ProviderStatus {
id: string;
displayName: string;
status: "healthy" | "degraded" | "not_configured";
coverage: string[];
rateLimit: string;
lastSyncedAt: string;
}