import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { ProviderRegistry } from '../providers/provider-registry.service';
import type { RoutingRequest, RoutingDecision } from './routing.types';
export declare class ModelRouter {
    private readonly prisma;
    private readonly providerRegistry;
    constructor(prisma: PrismaService, providerRegistry: ProviderRegistry);
    decide(request: RoutingRequest): Promise<RoutingDecision>;
    persistDecision(args: {
        organizationId: string;
        sessionId?: string;
        turnId?: string;
        request: RoutingRequest;
        decision: RoutingDecision;
    }): Promise<{
        id: string;
        createdAt: Date;
        sessionId: string | null;
        organizationId: string;
        request: import("@prisma/client/runtime/library").JsonValue;
        estimatedCostUsd: number | null;
        decision: import("@prisma/client/runtime/library").JsonValue;
        turnId: string | null;
        matchSource: import("@prisma/client").$Enums.ModelRoutingMatchSource;
        matchedRuleId: string | null;
        primaryProvider: string;
        primaryModel: string;
        actualCostUsd: number | null;
        actualLatencyMs: number | null;
    }>;
    recordOutcome(args: {
        decisionId: string;
        actualCostUsd?: number;
        actualLatencyMs?: number;
    }): Promise<{
        id: string;
        createdAt: Date;
        sessionId: string | null;
        organizationId: string;
        request: import("@prisma/client/runtime/library").JsonValue;
        estimatedCostUsd: number | null;
        decision: import("@prisma/client/runtime/library").JsonValue;
        turnId: string | null;
        matchSource: import("@prisma/client").$Enums.ModelRoutingMatchSource;
        matchedRuleId: string | null;
        primaryProvider: string;
        primaryModel: string;
        actualCostUsd: number | null;
        actualLatencyMs: number | null;
    }>;
    private classifyWithLLM;
    private matchFirstInList;
}
