import { FindConfig } from "../common"; import { IModuleService } from "../modules-sdk"; import { Context } from "../shared-context"; import { FilterableNotificationProps, NotificationDTO } from "./common"; import { CreateNotificationDTO } from "./mutations"; export interface INotificationModuleService extends IModuleService { /** * This method is used to send multiple notifications and store them in the database. * * @param {CreateNotificationDTO[]} data - The notifications to be sent. * @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module. * @returns {Promise} The list of sent notifications. * * @example * const notifications = await notificationModuleService.createNotifications([ * { * to: "john@doe.me", * template: "order-confirmation", * channel: "email", * }, * { * to: "+38975123456", * template: "order-confirmation", * channel: "sms", * }, * ]) */ createNotifications(data: CreateNotificationDTO[], sharedContext?: Context): Promise; /** * This method is used to send a notification, and store the request in the database. * * @param {CreateNotificationDTO} data - The notification to be sent. * @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module. * @returns {Promise} The sent notification. * * @example * const notification = await notificationModuleService.createNotifications({ * to: "john@doe.me", * template: "order-confirmation", * channel: "email", * }) */ createNotifications(data: CreateNotificationDTO, sharedContext?: Context): Promise; /** * This method is used to retrieve a notification by its ID * * @param {string} notificationId - The ID of the notification to retrieve. * @param {FindConfig} config - * The configurations determining how the notification is retrieved. Its properties, such as `select` or `relations`, accept the * attributes or relations associated with a notification. * @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module. * @returns {Promise} The retrieved notification. * * @example * A simple example that retrieves a notification by its ID: * * ```ts * const notification = * await notificationModuleService.retrieveNotification("noti_123") * ``` * * To specify relations that should be retrieved: * * :::note * * You can only retrieve data models defined in the same module. To retrieve linked data models * from other modules, use [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query) instead. * * ::: * * ```ts * const notification = await notificationModuleService.retrieveNotification( * "noti_123", * { * relations: ["provider"], * } * ) * ``` */ retrieveNotification(notificationId: string, config?: FindConfig, sharedContext?: Context): Promise; /** * This method is used to retrieve a paginated list of notifications based on optional filters and configuration. * * @param {FilterableNotificationProps} filters - The filters to apply on the retrieved notifications. * @param {FindConfig} config - * The configurations determining how the notifications are retrieved. Its properties, such as `select` or `relations`, accept the * attributes or relations associated with a notification. * @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module. * @returns {Promise} The list of notifications. * * @example * To retrieve a list of notifications using their IDs: * * ```ts * const notifications = await notificationModuleService.listNotifications({ * id: ["noti_123", "noti_321"], * }) * ``` * * To specify relations that should be retrieved within the notifications: * * :::note * * You can only retrieve data models defined in the same module. To retrieve linked data models * from other modules, use [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query) instead. * * ::: * * ```ts * const notifications = await notificationModuleService.listNotifications( * { * id: ["noti_123", "noti_321"], * }, * { * relations: ["provider"], * } * ) * ``` * * By default, only the first `15` records are retrieved. You can control pagination by specifying the `skip` and `take` properties of the `config` parameter: * * ```ts * const notifications = await notificationModuleService.listNotifications( * { * id: ["noti_123", "noti_321"], * }, * { * relations: ["provider"], * take: 20, * skip: 2, * } * ) * ``` */ listNotifications(filters?: FilterableNotificationProps, config?: FindConfig, sharedContext?: Context): Promise; /** * This method is used to retrieve a paginated list of notifications along with the total count of available notifications satisfying the provided filters. * * @param {FilterableNotificationProps} filters - The filters to apply on the retrieved notifications. * @param {FindConfig} config - * The configurations determining how the notifications are retrieved. Its properties, such as `select` or `relations`, accept the * attributes or relations associated with a notification. * @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module. * @returns {Promise} The list of notifications along with the total count. * * @example * To retrieve a list of notifications using their IDs: * * ```ts * const [notifications, count] = * await notificationModuleService.listAndCountNotifications({ * id: ["noti_123", "noti_321"], * }) * ``` * * To specify relations that should be retrieved within the notifications: * * :::note * * You can only retrieve data models defined in the same module. To retrieve linked data models * from other modules, use [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query) instead. * * ::: * * ```ts * const [notifications, count] = * await notificationModuleService.listAndCountNotifications( * { * id: ["noti_123", "noti_321"], * }, * { * relations: ["provider"], * } * ) * ``` * * By default, only the first `15` records are retrieved. You can control pagination by specifying the `skip` and `take` properties of the `config` parameter: * * ```ts * const [notifications, count] = * await notificationModuleService.listAndCountNotifications( * { * id: ["noti_123", "noti_321"], * }, * { * relations: ["provider"], * take: 20, * skip: 2, * } * ) * ``` */ listAndCountNotifications(filters?: FilterableNotificationProps, config?: FindConfig, sharedContext?: Context): Promise<[NotificationDTO[], number]>; } //# sourceMappingURL=service.d.ts.map