import { CollectionSlug, countOperation, createOperation, deleteByIDOperation, deleteOperation, findByIDOperation, findOperation, findVersionByIDOperation, findVersionsOperation, forgotPasswordOperation, loginOperation, PayloadRequest, refreshOperation, resetPasswordOperation, restoreVersionOperation, SanitizedCollectionConfig, TypedCollectionSelect, unlockOperation, updateByIDOperation, updateOperation } from "payload" export type SelectFromCollectionSlug = TypedCollectionSelect[TSlug] export type OperationMap = { count: typeof countOperation create: typeof createOperation> delete: typeof deleteOperation> deleteByID: typeof deleteByIDOperation< TOperationGeneric, SelectFromCollectionSlug > find: typeof findOperation> findByID: typeof findByIDOperation< TOperationGeneric, boolean, SelectFromCollectionSlug > findVersionByID: typeof findVersionByIDOperation findVersions: typeof findVersionsOperation forgotPassword: typeof forgotPasswordOperation login: typeof loginOperation refresh: typeof refreshOperation resetPassword: typeof resetPasswordOperation restoreVersion: typeof restoreVersionOperation unlock: typeof unlockOperation update: typeof updateOperation> updateByID: typeof updateByIDOperation< TOperationGeneric, SelectFromCollectionSlug > } export type AfterOperationArg = { /** The collection which this hook is being run on */ collection: SanitizedCollectionConfig /** * Whether access control is being overridden for this operation */ overrideAccess?: boolean req: PayloadRequest } & ( | { args: Parameters['count']>[0] operation: 'count' result: Awaited['count']>> } | { args: Parameters['create']>[0] operation: 'create' result: Awaited['create']>> } | { args: Parameters['delete']>[0] operation: 'delete' result: Awaited['delete']>> } | { args: Parameters['deleteByID']>[0] operation: 'deleteByID' result: Awaited['deleteByID']>> } | { args: Parameters['find']>[0] /** * @deprecated Use 'find' or 'findByID' operation instead * * TODO: v4 - remove this union option */ operation: 'read' result: Awaited['find']>> } | { args: Parameters['find']>[0] operation: 'find' result: Awaited['find']>> } | { args: Parameters['findByID']>[0] operation: 'findByID' result: Awaited['findByID']>> } | { args: Parameters['findVersionByID']>[0] operation: 'findVersionByID' result: Awaited['findVersionByID']>> } | { args: Parameters['findVersions']>[0] operation: 'findVersions' result: Awaited['findVersions']>> } | { args: Parameters['forgotPassword']>[0] operation: 'forgotPassword' result: Awaited['forgotPassword']>> } | { args: Parameters['login']>[0] operation: 'login' result: Awaited['login']>> } | { args: Parameters['refresh']>[0] operation: 'refresh' result: Awaited['refresh']>> } | { args: Parameters['resetPassword']>[0] operation: 'resetPassword' result: Awaited['resetPassword']>> } | { args: Parameters['restoreVersion']>[0] operation: 'restoreVersion' result: Awaited['restoreVersion']>> } | { args: Parameters['unlock']>[0] operation: 'unlock' result: Awaited['unlock']>> } | { args: Parameters['update']>[0] operation: 'update' result: Awaited['update']>> } | { args: Parameters['updateByID']>[0] operation: 'updateByID' result: Awaited['updateByID']>> } ) export type OperationResult< TOperationGeneric extends CollectionSlug, O extends keyof OperationMap, > = Awaited[O]>> export type OperationArgs< TOperationGeneric extends CollectionSlug, O extends keyof OperationMap, > = Parameters[O]>[0]