/**
 * Тонкая обёртка над Prisma client, который **опционально** доступен.
 *
 * Подход:
 *   - Импорт `@prisma/client` (path: ../../node_modules/.prisma/mcp) делается
 *     лениво и в try/catch — если пакет не сгенерирован, audit/billing
 *     модули переходят в no-op режим.
 *   - Не требуем live Postgres для тестов / dev — все `prisma.*`-операции
 *     в тестах подменяются через `vi.mock`.
 *
 * Контракт:
 *   - `getPrisma()` возвращает либо живой client, либо null (если MCP_DATABASE_URL
 *     не задан или пакет не сгенерирован).
 *   - Идемпотентен: повторные вызовы возвращают тот же instance.
 */
import type { Logger } from 'pino';
/**
 * Минимальный интерфейс клиента, который мы используем.
 * Совпадает по форме с реальным Prisma client.
 */
export interface McpPrismaClient {
    $disconnect(): Promise<void>;
    $transaction<T>(fn: (tx: McpPrismaClient) => Promise<T>): Promise<T>;
    mcpAuditLog: {
        findFirst(args: {
            where?: Record<string, unknown>;
            orderBy?: Record<string, 'asc' | 'desc'>;
            select?: Record<string, boolean>;
        }): Promise<{
            rowHash: string;
        } | null>;
        findMany(args: {
            where?: Record<string, unknown>;
            orderBy?: Record<string, 'asc' | 'desc'>;
            select?: Record<string, boolean>;
            take?: number;
            skip?: number;
        }): Promise<Array<Record<string, unknown>>>;
        create(args: {
            data: Record<string, unknown>;
        }): Promise<unknown>;
    };
    mcpUsageDaily: {
        upsert(args: {
            where: Record<string, unknown>;
            update: Record<string, unknown>;
            create: Record<string, unknown>;
        }): Promise<unknown>;
        aggregate(args: {
            where: Record<string, unknown>;
            _sum: {
                count: true;
            };
        }): Promise<{
            _sum: {
                count: bigint | null;
            };
        }>;
    };
}
export interface PrismaInitOptions {
    databaseUrl?: string;
    log?: Logger;
}
/**
 * Lazy init. Если пакет недоступен — возвращает null, логирует warn.
 */
export declare function getPrisma(opts?: PrismaInitOptions): Promise<McpPrismaClient | null>;
/**
 * Для тестов — позволяет инжектировать mock-client.
 */
export declare function setPrismaForTests(client: McpPrismaClient | null): void;
export declare function resetPrismaForTests(): void;
//# sourceMappingURL=prisma.d.ts.map