export declare enum CostMode {
    AUTO = "auto",
    CACHED = "cached",
    CALCULATED = "calculate"
}
export declare enum PlanType {
    PRO = "pro",
    MAX5 = "max5",
    MAX20 = "max20",
    CUSTOM = "custom"
}
export interface UsageEntry {
    timestamp: Date;
    inputTokens: number;
    outputTokens: number;
    cacheCreationTokens: number;
    cacheReadTokens: number;
    costUsd: number;
    model: string;
    messageId: string;
    requestId: string;
}
export interface TokenCounts {
    inputTokens: number;
    outputTokens: number;
    cacheCreationTokens: number;
    cacheReadTokens: number;
}
export declare function getTotalTokens(counts: TokenCounts): number;
export interface BurnRate {
    tokensPerMinute: number;
    costPerHour: number;
}
export interface UsageProjection {
    projectedTotalTokens: number;
    projectedTotalCost: number;
    remainingMinutes: number;
}
export interface ModelStats {
    inputTokens: number;
    outputTokens: number;
    cacheCreationTokens: number;
    cacheReadTokens: number;
    totalTokens: number;
    cost: number;
    messageCount: number;
}
export interface LimitMessage {
    type: 'warning' | 'critical' | 'info';
    message: string;
    timestamp: Date;
}
export interface SessionBlock {
    id: string;
    startTime: Date;
    endTime: Date;
    entries: UsageEntry[];
    tokenCounts: TokenCounts;
    isActive: boolean;
    isGap: boolean;
    burnRate: BurnRate | null;
    actualEndTime: Date | null;
    perModelStats: Record<string, ModelStats>;
    models: string[];
    sentMessagesCount: number;
    costUsd: number;
    limitMessages: LimitMessage[];
    projectionData: UsageProjection | null;
    burnRateSnapshot: BurnRate | null;
}
export declare function getSessionTotalTokens(session: SessionBlock): number;
export declare function getSessionDurationMinutes(session: SessionBlock): number;
export interface RawUsageEntry {
    timestamp: string;
    type: string;
    sessionId?: string;
    requestId?: string;
    uuid?: string;
    message?: {
        id?: string;
        role?: string;
        model?: string;
        usage?: {
            input_tokens?: number;
            output_tokens?: number;
            cache_creation_input_tokens?: number;
            cache_read_input_tokens?: number;
        };
    };
    project_path?: string;
    model?: string;
    usage?: {
        input_tokens?: number;
        output_tokens?: number;
        cache_creation_input_tokens?: number;
        cache_read_input_tokens?: number;
    };
    cost?: {
        total_cost?: number;
    };
    message_id?: string;
    request_id?: string;
}
export interface Settings {
    hoursBack: number;
    costMode: CostMode;
    planType: PlanType;
    customLimit: number | null;
    showNotifications: boolean;
    theme: 'auto' | 'light' | 'dark';
    timeFormat: '12' | '24';
    timezone: string;
    updateInterval: number;
}
export interface Plan {
    name: string;
    tokenLimit: number;
    messageLimit: number;
    description: string;
}
export interface ModelPricing {
    inputPricePerMillion: number;
    outputPricePerMillion: number;
    cacheCreationPricePerMillion: number;
    cacheReadPricePerMillion: number;
}
export type DisplayState = 'loading' | 'error' | 'active_session' | 'no_session' | 'idle';
export interface MonitorError extends Error {
    code?: string;
    context?: Record<string, unknown>;
}
export declare function normalizeModelName(model: string): string;
//# sourceMappingURL=index.d.ts.map