import type * as Utils from '../../utils'; import type * as UID from '../../uid'; import type { IsDraftAndPublishEnabled } from './draft-and-publish'; import type * as Params from './params/document-engine'; import type * as Result from './result/document-engine'; export type ServiceInstance = { findMany>(params?: TParams): Result.FindMany; findFirst>(params?: TParams): Result.FindFirst; findOne>(params: TParams): Result.FindOne; delete>(params: TParams): Result.Delete; create>(params: TParams): Result.Create; update>(params: TParams): Result.Update; count>(params: TParams): Result.Count; /** * @internal */ clone>(params: TParams): Result.Clone; } & Utils.If, DraftAndPublishExtension, unknown>; /** * Provides methods for managing the draft and publish lifecycle of a document. * * This interface handles publishing, unpublishing, and discarding * drafts of documents identified by their unique identifier. * * @template TContentTypeUID - The unique identifier type for the content-type, constrained to {@link UID.ContentType}. */ export interface DraftAndPublishExtension { /** * Publishes the current draft for the given document ID. */ publish>(params: TParams): Result.Publish; /** * Unpublishes a document for the given document ID. */ unpublish>(params: TParams): Result.Unpublish; /** * Discards the draft entry for the given document ID and params. */ discardDraft>(params: TParams): Result.DiscardDraft; } /** * Represents the parameters for various service operations on content types. * * This type aggregates different sets of parameters required for performing operations such as * finding, creating, updating, deleting, cloning, and publishing content within a content management system. * * Each operation has its own set of parameters defined using different subtypes. * * @template TContentTypeUID - Extends {@link UID.ContentType}, used to specify the unique identifier for a content-type. * * @example * Example of how to specify parameters for different operations on a content-type: * * ```typescript * import type { UID } from '../../uid'; * * type ArticleServiceParams = ServiceParams<'api::article.article'>; * * // Example: Parameters for finding multiple articles * const findManyParams: ArticleServiceParams['findMany'] = { * fields: ['title', 'content'], * filters: { status: 'published' }, * sort: { createdAt: 'desc' } * }; * * // Example: Parameters for creating a new article * const createParams: ArticleServiceParams['create'] = { * data: { title: 'New Article', content: 'Article content', status: 'draft' } * }; * ``` */ export type ServiceParams = { /** Parameters for finding multiple documents */ findMany: Params.FindMany; /** Parameters for finding a single document */ findFirst: Params.FindFirst; /** Parameters for finding a single document by its ID */ findOne: Params.FindOne; /** Parameters for deleting a single document */ delete: Params.Delete; /** Parameters for creating a new document */ create: Params.Create; /** Parameters for cloning an existing document */ clone: Params.Clone; /** Parameters for updating an existing document */ update: Params.Update; /** Parameters for counting the number of documents */ count: Params.Count; /** Parameters for publishing a document */ publish: Params.Publish; /** Parameters for unpublishing a document */ unpublish: Params.Unpublish; /** Parameters for discarding a draft of a document */ discardDraft: Params.DiscardDraft; }; //# sourceMappingURL=service-instance.d.ts.map