import { AiUsageTokenService } from '../services/token.service';
import { AiUsageDashboardService } from '../services/dashboard.service';
import { CreateTokenDto, DashboardQueryDto } from '../dto';
import type { Response } from 'express';
export declare class AiUsageMeController {
    private readonly tokenSvc;
    private readonly dashboardSvc;
    constructor(tokenSvc: AiUsageTokenService, dashboardSvc: AiUsageDashboardService);
    listMyTokens(userId: string): Promise<{
        items: {
            id: string;
            createdAt: Date;
            name: string;
            revokedAt: Date | null;
            prefix: string;
            lastUsedAt: Date | null;
            lastUsedIp: string | null;
        }[];
    }>;
    createMyToken(dto: CreateTokenDto, userId: string, req: any): Promise<{
        id: string;
        name: string;
        prefix: string;
        token: string;
        createdAt: Date;
    }>;
    revokeMyToken(id: string, userId: string): Promise<void>;
    summary(q: DashboardQueryDto, userId: string, req: any): Promise<{
        totalTokens: number;
        totalCostUsd: string;
        activeDevices: number;
        activeProjects: number;
        activeUsers: number;
    }>;
    trend(q: DashboardQueryDto, userId: string, req: any): Promise<{
        series: {
            key: string;
            points: {
                bucket: any;
                tokens: number;
                costUsd: any;
            }[];
        }[];
    } | {
        series: {
            key: string;
            label: string;
            points: {
                bucket: string;
                tokens: number;
                costUsd: string;
            }[];
        }[];
    }>;
    breakdown(q: DashboardQueryDto, userId: string, req: any): Promise<{
        items: {
            key: any;
            tokens: number;
            costUsd: any;
            share: number;
        }[];
        pagination: {
            page: number;
            pageSize: number;
            total: number;
            totalPages: number;
        };
    }>;
    myDevices(userId: string): Promise<{
        items: {
            id: string;
            hostname: string;
            osUser: string | null;
            osPlatform: import("@prisma/client").$Enums.AiUsageOsPlatform;
            agentVersion: string | null;
            firstSeenAt: Date;
            lastSeenAt: Date;
            blockedAt: Date | null;
            blockedReason: string | null;
        }[];
    }>;
    myBlocks(userId: string, req: any): Promise<{
        blocks: {
            isActive: boolean;
            elapsedHours: number;
            remainingHours: number;
            burnRateUsdPerHour: string;
            startedAt: Date;
            endsAt: Date;
            events: number;
            tokens: number;
            costUsd: string;
            models: string[];
        }[];
    }>;
    myToolFrequency(q: DashboardQueryDto, userId: string, req: any): Promise<{
        items: {
            name: any;
            eventCount: number;
            useCount: number;
            share: number;
        }[];
    }>;
    mySessionStats(q: DashboardQueryDto & {
        projectBasename?: string;
    }, userId: string, req: any): Promise<{
        sessionCount: number;
        avgDurationSec: number;
        avgTurns: number;
        durationBuckets: Record<string, number>;
        turnBuckets: Record<string, number>;
        recentSessions: {
            sessionId: any;
            userId: any;
            userLabel: any;
            projectBasename: any;
            model: any;
            startedAt: any;
            endedAt: any;
            durationSec: number;
            turnCount: number;
            tokens: number;
            costUsd: any;
        }[];
        pagination: {
            page: number;
            pageSize: number;
            total: number;
            totalPages: number;
        };
    }>;
    mySessionTurns(sessionId: string, userId: string, req: any): Promise<{
        sessionId: string;
        turns: never[];
        summary: null;
    } | {
        sessionId: string;
        summary: {
            userId: string;
            userLabel: string;
            projectBasename: string;
            projectPath: string;
            tool: import("@prisma/client").$Enums.AiUsageTool;
            startedAt: Date;
            endedAt: Date;
            durationSec: number;
            turnCount: number;
            totalTokens: number;
            totalCostUsd: string;
            toolUseAgg: {
                name: string;
                count: number;
            }[];
        };
        turns: {
            id: string;
            ts: Date;
            turnIndex: number | null;
            model: string;
            inputTokens: number;
            outputTokens: number;
            cacheCreationTokens: number;
            cacheReadTokens: number;
            totalTokens: number;
            costUsd: string;
            toolUseCount: number | null;
            toolNames: import("@prisma/client/runtime/library").JsonValue;
            stopReason: string | null;
            serviceTier: string | null;
            gitBranch: string | null;
            agentVersionEvent: string | null;
            worktreeLabel: string | null;
            cwdBasename: string | null;
        }[];
    }>;
    myTurnGapDistribution(q: DashboardQueryDto, userId: string, req: any): Promise<{
        buckets: {
            '<5s': number;
            '5-30s': number;
            '30s-2min': number;
            '>2min': number;
        };
        avgGapSec: number;
        medianGapSec: number;
    }>;
    myServiceTierMix(q: DashboardQueryDto, userId: string, req: any): Promise<{
        items: {
            tier: any;
            eventCount: number;
            tokens: number;
            costUsd: any;
            costShare: number;
        }[];
    }>;
    export(q: DashboardQueryDto, userId: string, req: any, res: Response): Promise<void>;
}
