import { PrismaService } from "../../../core/database/prisma/prisma.service";
import type { AgentQuotaScope } from '@prisma/client';
export interface QuotaCheck {
    readonly allowed: boolean;
    readonly degradeRequested: boolean;
    readonly remainingTokens: number;
    readonly remainingCostUsd: number;
    readonly limitingScope?: AgentQuotaScope;
}
export declare class QuotaService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    check(args: {
        organizationId: string;
        userId: string;
    }): Promise<QuotaCheck>;
    assertAllowed(args: {
        organizationId: string;
        userId: string;
    }): Promise<QuotaCheck>;
    recordUsage(args: {
        organizationId: string;
        userId: string;
        tokens: number;
        costUsd: number;
    }): Promise<void>;
    private checkScope;
    private upsertUsage;
}
