import { ReactNode } from "react";
/**
 * TokenCounter component props
 */
export interface TokenCounterProps extends React.HTMLAttributes<HTMLDivElement> {
    /**
     * The text to count tokens for
     */
    text?: string;
    /**
     * Token count (if pre-calculated)
     * Takes precedence over text-based estimation
     */
    tokens?: number;
    /**
     * AI model for token estimation and display
     * @default "gpt-4"
     */
    model?: TokenCounterModel;
    /**
     * Maximum tokens allowed (for progress display)
     */
    maxTokens?: number;
    /**
     * Whether to show cost estimation
     * @default false
     */
    showCost?: boolean;
    /**
     * Custom cost per 1K tokens (input)
     * If not provided, uses model defaults
     */
    costPer1kTokens?: number;
    /**
     * Size variant
     * @default "md"
     */
    size?: TokenCounterSize;
    /**
     * Display format
     * @default "compact"
     */
    format?: "compact" | "detailed";
    /**
     * Custom icon
     */
    icon?: ReactNode;
    /**
     * Additional className
     */
    className?: string;
    /**
     * Theme overrides
     */
    theme?: TokenCounterThemeOverrides;
}
/**
 * Supported AI models
 */
export type TokenCounterModel = "gpt-4" | "gpt-4-turbo" | "gpt-3.5-turbo" | "claude-3-opus" | "claude-3-sonnet" | "claude-3-haiku" | "gemini-pro" | "gemini-ultra" | "custom";
/**
 * Size variants
 */
export type TokenCounterSize = "sm" | "md" | "lg";
/**
 * Model configuration
 */
export interface ModelConfig {
    name: string;
    shortName: string;
    costPer1kTokens: number;
    maxTokens: number;
}
/**
 * Theme configuration
 */
export interface TokenCounterTheme {
    baseStyle: string;
    iconStyle: string;
    countStyle: string;
    labelStyle: string;
    costStyle: string;
    progressStyle: string;
    progressBarStyle: string;
    sizes: Record<TokenCounterSize, TokenCounterSizeConfig>;
}
export interface TokenCounterSizeConfig {
    container: string;
    icon: string;
    text: string;
}
/**
 * Theme overrides
 */
export interface TokenCounterThemeOverrides {
    baseStyle?: string;
    iconStyle?: string;
    countStyle?: string;
    labelStyle?: string;
    costStyle?: string;
    progressStyle?: string;
    progressBarStyle?: string;
    sizes?: Partial<Record<TokenCounterSize, Partial<TokenCounterSizeConfig>>>;
}
