export interface BaseResponse {
    success: boolean;
    message: string;
    error?: string;
}
export interface HelpResponse extends BaseResponse {
    commands: Array<{
        command: string;
        description: string;
        usage?: string;
    }>;
    currentContext?: {
        hasAI: boolean;
        currentModel?: string;
        currentRoom?: string;
        gameMode?: string;
        isAuthenticated: boolean;
    };
}
export interface LookResponse extends BaseResponse {
    roomData: {
        name: string;
        background?: string;
        objects: string[];
    };
}
export interface InspectResponse extends BaseResponse {
    objectData?: {
        name: string;
        description: string;
        puzzle?: string;
        answer?: string;
        unlocked: boolean;
        details?: string[];
    };
}
export interface GuessResponse extends BaseResponse {
    objectData: {
        name: string;
        unlocked: boolean;
        correctAnswer: boolean;
    };
}
export interface PasswordResponse extends BaseResponse {
    gameResult: {
        escaped: boolean;
        gameCompleted: boolean;
        timeElapsed?: number;
        hintsUsed?: number;
    };
}
export interface HintResponse extends BaseResponse {
    hintData: {
        hint: string;
        hintsUsed: number;
        hintType?: 'general' | 'object-specific' | 'puzzle-hint';
    };
}
export interface NewGameResponse extends BaseResponse {
    gameData: {
        id: string | number;
        name: string;
        background: string;
        mode: string;
        currentRoom: number;
        totalRooms: number;
        objectCount: number;
        startTime?: string;
    };
}
export interface LeaderboardResponse extends BaseResponse {
    leaderboardData: {
        entries: Array<{
            rank: number;
            userName: string;
            timeElapsed: number;
            hintsUsed: number;
            gameMode: string;
            completedAt?: string;
            totalCost?: number;
            totalTokens?: number;
            aiRequestsUsed?: number;
            costEfficiencyScore?: number;
        }>;
        count: number;
        mode: string;
    };
}
export interface InstructionsResponse extends BaseResponse {
    showInstructions: boolean;
}
export interface AuthResponse extends BaseResponse {
    userData?: {
        userId?: string;
        userName?: string;
        sessionToken?: string;
        apiKey?: string;
        apiKeyProvider?: 'openai' | 'anthropic';
    };
}
export interface AIResponse extends BaseResponse {
    response?: string;
    usage?: {
        cost?: number;
        tokens?: number;
        inputTokens?: number;
        outputTokens?: number;
        model?: string;
        modelBreakdown?: Record<string, {
            requests: number;
            cost: number;
            tokens?: number;
        }>;
    };
    model?: string;
}
export interface CostResponse extends BaseResponse {
    showCostMonitor?: boolean;
    costData?: {
        currentSessionCost?: number;
        currentSessionTokens?: number;
        userTotalCost?: number;
        userTotalTokens?: number;
        lastRequestCost?: number;
        lastRequestTokens?: number;
        averageCostPerRequest?: number;
        modelUsageBreakdown?: Record<string, {
            requests: number;
            cost: number;
            tokens: number;
        }>;
    };
}
export interface UsageResponse extends BaseResponse {
    showUsageDashboard?: boolean;
    usageData?: {
        currentSessionCost: number;
        currentSessionTokens: number;
        userTotalCost: number;
        userTotalTokens: number;
        lastRequestCost: number;
        lastRequestTokens: number;
        averageCostPerRequest: number;
        sessionStartTime?: string;
        modelUsageBreakdown: Record<string, {
            requests: number;
            cost: number;
            tokens: number;
        }>;
        budgetSettings?: {
            dailyLimit?: number;
            monthlyLimit?: number;
            warningThreshold?: number;
        };
        alerts?: Array<{
            id: string;
            type: 'warning' | 'limit' | 'info';
            message: string;
            timestamp: string;
        }>;
    };
}
export interface GameInfo {
    id?: string | number;
    name?: string;
    background?: string;
    currentRoom?: number;
    totalRooms?: number;
    mode?: string;
    objectCount?: number;
}
export interface UserContext {
    userId?: string;
    sessionToken?: string;
    userName?: string;
    cliApiKey?: string;
    hasAICapability: boolean;
    selectedModel?: any;
}
export interface GameContext {
    currentGameId: string | number | null;
    currentRoomName: string;
    currentRoomBackground: string;
    currentGameMode: 'default' | 'single-room' | 'unknown';
    totalRooms: number;
    unlockedObjects: string[];
    currentRoomObjects: string[];
}
