import { FastifyReply } from "fastify"; import { TokenUsageReportService } from "../services/tokenusage.report.service"; /** * Self-service token-usage reporting: the caller's own company only. * * NO @Roles decorator anywhere — any authenticated user may read their own * company's usage. Scoping is the repository's job (buildDefaultMatch injects * the CLS company), and no route here accepts a companyId, so there is nothing * for a caller to point at somebody else's data. * * `metric` is allowlisted to credits and tokens: COST IS DELIBERATELY ABSENT. * Customers are billed in credits, and exposing the platform's monetary cost * would leak margin — enforcing that only in the UI would leave it one query * string away, so the boundary refuses it. * * Mounted at /tokenusages/reports/* — no overlap with /tokenusages, * /tokenusages/summary, /tokenusages/aggregated (a consuming app's own routes) * or /tokenusages/administration/*, so importing TokenUsageModule cannot * duplicate a Fastify route. * * Enum query params are validated against closed allowlists here rather than in * a DTO: DTOs are body validation for POST/PUT/PATCH, and GET filters use bare * @Query params. The allowlist matters — granularity and dimension select a * Cypher clause, they are not bound values. */ export declare class TokenUsageReportController { private readonly service; constructor(service: TokenUsageReportService); getSummary(reply: FastifyReply, from?: string, to?: string): Promise; getTimeline(reply: FastifyReply, from?: string, to?: string, granularity?: string): Promise; getBreakdown(reply: FastifyReply, from?: string, to?: string, dimension?: string, targetLabel?: string, metric?: string, limit?: string): Promise; private _oneOf; private _range; } //# sourceMappingURL=tokenusage.report.controller.d.ts.map