import type Redis from "ioredis"; import type { Prisma } from "@prisma/client"; export declare type PrismaQueryAction = "findFirst" | "findFirstOrThrow" | "findUnique" | "findUniqueOrThrow" | "findMany" | "aggregate" | "count" | "groupBy" | "findRaw" | "runCommandRaw" | "queryRaw" | "aggregateRaw"; export declare type PrismaMutationAction = "create" | "createMany" | "update" | "updateMany" | "upsert" | "delete" | "deleteMany" | "executeRaw" | "executeRawUnsafe"; export declare type PrismaAction = PrismaQueryAction | PrismaMutationAction; export declare type Result = Record | Record[]; /** * These options are being passed in to the middleware as "params" * https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#params */ export declare type MiddlewareParams = Prisma.MiddlewareParams; export declare type Middleware = (params: MiddlewareParams, next: (params: MiddlewareParams) => Promise) => Promise; export declare type FetchFromPrisma = (params: MiddlewareParams) => Promise; export declare type RedisMemoryStorage = { type: "redis"; options?: RedisMemoryOptions; }; export declare type RedisMemoryOptions = { client: Redis; invalidation?: boolean | { referencesTTL?: number; }; log?: any; }; export declare type MemoryStorage = { type: "memory"; options?: MemoryStorageOptions; }; export declare type MemoryStorageOptions = { size?: number; invalidation?: boolean; log?: any; }; export declare type TtlFunction = (data: any) => number; export declare type CreatePrismaRedisCache = { models?: { model: string | Prisma.ModelName; cacheKey?: string; cacheTime?: number | TtlFunction; excludeMethods?: PrismaQueryAction[]; invalidateRelated?: string[] | Prisma.ModelName[]; }[]; storage?: RedisMemoryStorage | MemoryStorage; cacheTime?: number; excludeModels?: string[] | Prisma.ModelName[]; excludeMethods?: PrismaQueryAction[]; onError?: (key: string) => void; onHit?: (key: string) => void; onMiss?: (key: string) => void; onDedupe?: (key: string) => void; transformer?: { serialize: (data: any) => any; deserialize: (data: any) => any; }; };