import { PrismaOperation } from "./events.js"; import { Prisma } from "@prisma/client"; import type { FastifyRequest } from "fastify"; export type PrismaModelNames = keyof typeof Prisma.ModelName; export type PrismaOperationArgs = Prisma.TypeMap["model"][Model]["operations"][Operation]["args"]; export type PrismaOperationResults = Prisma.TypeMap["model"][Model]["operations"][Operation]["result"]; export type PrismaHookPayload = { operation: PrismaOperation; args: PrismaOperationArgs; query: any; model: Prisma.ModelName; result?: PrismaOperationResults; request?: FastifyRequest; }; export type GlobalPrismaHookHandler = (args: any, model: PrismaModelNames, operation: PrismaOperation, request?: FastifyRequest) => Promise | any; declare class PrismaHookRegistry { private hooks; private globalHooks; registerHook(model: M, operation: O, handler: (args: PrismaOperationArgs, request?: FastifyRequest) => Promise> | PrismaOperationArgs): void; registerGlobalHook(operation: PrismaOperation | '*', handler: GlobalPrismaHookHandler): void; applyAll(data: PrismaHookPayload): Promise>; } export declare const prismaHookRegistry: PrismaHookRegistry; export declare function usePrismaHook(model: M, operation: O, handler: (args: PrismaOperationArgs) => Promise> | PrismaOperationArgs): void; export declare function usePrismaHook(model: M, operation: O, handler: (args: PrismaOperationArgs, request?: FastifyRequest) => Promise> | PrismaOperationArgs): void; export declare function usePrismaHookForAll(operation: PrismaOperation, handler: GlobalPrismaHookHandler): void; export declare function usePrismaHookForAll(operation: '*', handler: GlobalPrismaHookHandler): void; export {}; //# sourceMappingURL=hooks.d.ts.map