import { CommonTypes } from "@medusajs/types"; import { Request } from "express"; import { MedusaContainer as coreMedusaContainer } from "medusa-core-utils"; import { Customer, User } from "../models"; import { FindConfig, RequestQueryFields } from "./common"; declare global { namespace Express { interface Request { user?: (User | Customer) & { customer_id?: string; userId?: string; }; scope: MedusaContainer; validatedQuery: RequestQueryFields & Record; validatedBody: unknown; listConfig: FindConfig; retrieveConfig: FindConfig; filterableFields: Record; allowedProperties: string[]; includes?: Record; errors: string[]; session: any; } } } export type ExtendedRequest = Request & { resource: TEntity; }; export type ClassConstructor = { new (...args: unknown[]): T; }; export type MedusaContainer = coreMedusaContainer; export type Logger = { panic: (data: any) => void; shouldLog: (level: string) => void; setLogLevel: (level: string) => void; unsetLogLevel: () => void; activity: (message: string, config?: any) => void; progress: (activityId: any, message: any) => void; error: (messageOrError: any, error?: any) => void; failure: (activityId: any, message: any) => void; success: (activityId: any, message: any) => void; debug: (message: any) => void; info: (message: any) => void; warn: (message: any) => void; log: (...args: any[]) => void; }; export declare enum MODULE_SCOPE { INTERNAL = "internal", EXTERNAL = "external" } export declare enum MODULE_RESOURCE_TYPE { SHARED = "shared", ISOLATED = "isolated" } export type LoaderOptions = { container: MedusaContainer; configModule: ConfigModule; options?: Record; logger?: Logger; }; export type Constructor = new (...args: any[]) => T; export type ConfigModule = CommonTypes.ConfigModule;