@medusajs/types
Version:
Medusa Types definition
903 lines • 38.6 kB
TypeScript
import { FindConfig } from "../common";
import { RestoreReturn, SoftDeleteReturn } from "../dal";
import { IModuleService } from "../modules-sdk";
import { Context } from "../shared-context";
import { CampaignDTO, ComputeActionContext, ComputeActions, CreatePromotionDTO, CreatePromotionRuleDTO, FilterableCampaignProps, FilterablePromotionProps, FilterablePromotionRuleProps, PromotionDTO, PromotionRuleDTO, UpdatePromotionDTO, UpdatePromotionRuleDTO, UsageComputedActions } from "./common";
import { AddPromotionsToCampaignDTO, CreateCampaignDTO, RemovePromotionsFromCampaignDTO, UpdateCampaignDTO } from "./mutations";
/**
* The main service interface for the Promotion Module.
*/
export interface IPromotionModuleService extends IModuleService {
/**
* This method adjusts the budget for each campaign associated with the promotions' specified computed actions.
* It adjusts the `used` property of a `CampaignBudget` to account for the adjustment amounts in the specified associated
* computed actions.
*
* @param {UsageComputedActions[]} computedActions - The computed actions to adjust their promotion's campaign budget.
* @returns {Promise<void>} Resolves when the campaign budgets have been adjusted successfully.
*
* @example
* await promotionModuleService.registerUsage([
* {
* amount: 50,
* code: "50OFF",
* },
* {
* amount: 5000,
* code: "FREESHIPPING",
* },
* ])
*/
registerUsage(computedActions: UsageComputedActions[]): Promise<void>;
/**
* This method is used to revert the changes made by registerUsage action
*
* @param {UsageComputedActions[]} computedActions - The computed actions to adjust their promotion's campaign budget.
* @returns {Promise<void>} Resolves when the campaign budgets have been adjusted successfully.
*
* @example
* await promotionModuleService.revertUsage([
* {
* amount: 50,
* code: "50OFF",
* },
* {
* amount: 5000,
* code: "FREESHIPPING",
* },
* ])
*/
revertUsage(computedActions: UsageComputedActions[]): Promise<void>;
/**
* This method provides the actions to perform on a cart based on the specified promotions
* and context.
*
* @param {string[]} promotionCodesToApply - The promotion codes to be applied on the cart.
* @param {ComputeActionContext} applicationContext - The items and shipping methods of the cart.
* @param {Record<string, any>} options - Any relevant options that may change how the actions are computed.
* @returns {Promise<ComputeActions[]>} The list of computed actions to be applied on the cart.
*
* @example
* const actions = await promotionModuleService.computeActions(
* ["50OFF"],
* {
* items: [
* {
* id: "cali_123",
* quantity: 2,
* subtotal: 1000,
* },
* ],
* shipping_methods: [
* {
* id: "casm_123",
* subtotal: 0,
* adjustments: [
* {
* id: "adj_123",
* code: "FREESHIPPING",
* },
* ],
* },
* ],
* }
* )
*/
computeActions(promotionCodesToApply: string[], applicationContext: ComputeActionContext, options?: Record<string, any>): Promise<ComputeActions[]>;
/**
* This method creates promotions.
*
* @param {CreatePromotionDTO[]} data - The promotions to be created.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionDTO[]>} The created promotions.
*
* @example
* const promotions = await promotionModuleService.createPromotions([
* {
* code: "50OFF",
* type: "standard",
* status: "active",
* application_method: {
* type: "percentage",
* target_type: "items",
* value: 50,
* },
* },
* {
* code: "FREESHIPPING",
* type: "standard",
* status: "active",
* application_method: {
* type: "percentage",
* target_type: "shipping_methods",
* value: 100,
* },
* },
* {
* code: "BUY2GET1",
* type: "buyget",
* status: "active",
* application_method: {
* type: "fixed",
* target_type: "items",
* buy_rules_min_quantity: 2,
* apply_to_quantity: 1,
* buy_rules: [
* {
* attribute: "SKU",
* operator: "eq",
* values: ["SHIRT"],
* },
* ],
* },
* },
* ])
*/
createPromotions(data: CreatePromotionDTO[], sharedContext?: Context): Promise<PromotionDTO[]>;
/**
* This method creates a promotion.
*
* @param {CreatePromotionDTO} data - The promotion to be created.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionDTO>} The created promotion.
*
* @example
* const promotionA = await promotionModuleService.createPromotions({
* code: "50OFF",
* type: "standard",
* status: "active",
* application_method: {
* type: "percentage",
* target_type: "items",
* value: 50,
* },
* })
*
* const promotionB = await promotionModuleService.createPromotions({
* code: "FREESHIPPING",
* type: "standard",
* status: "active",
* application_method: {
* type: "percentage",
* target_type: "shipping_methods",
* value: 100,
* },
* })
*
* const promotionC = await promotionModuleService.createPromotions({
* code: "BUY2GET1",
* type: "buyget",
* status: "active",
* application_method: {
* type: "fixed",
* target_type: "items",
* buy_rules_min_quantity: 2,
* apply_to_quantity: 1,
* buy_rules: [
* {
* attribute: "SKU",
* operator: "eq",
* values: ["SHIRT"],
* },
* ],
* },
* })
*/
createPromotions(data: CreatePromotionDTO, sharedContext?: Context): Promise<PromotionDTO>;
/**
* This method updates existing promotions.
*
* @param {UpdatePromotionDTO[]} data - The attributes to update in the promotions.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionDTO[]>} The updated promotions.
*
* @example
* const promotions = await promotionModuleService.updatePromotions([
* {
* id: "promo_123",
* is_automatic: true,
* },
* ])
*/
updatePromotions(data: UpdatePromotionDTO[], sharedContext?: Context): Promise<PromotionDTO[]>;
/**
* This method updates an existing promotion.
*
* @param {UpdatePromotionDTO} data - The attributes to update in the promotion.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionDTO>} The updated promotion.
*
* @example
* const promotion = await promotionModuleService.updatePromotions({
* id: "promo_123",
* is_automatic: true,
* })
*/
updatePromotions(data: UpdatePromotionDTO, sharedContext?: Context): Promise<PromotionDTO>;
/**
* This method retrieves a paginated list of promotions based on optional filters and configuration.
*
* @param {FilterablePromotionProps} filters - The filters to apply on the retrieved promotions.
* @param {FindConfig<PromotionDTO>} config - The configurations determining how the promotion is retrieved. Its properties, such as `select` or `relations`, accept the
* attributes or relations associated with a promotion.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionDTO[]>} The list of promotions.
*
* @example
* To retrieve a list of promotions using their IDs:
*
* ```ts
* const promotions = await promotionModuleService.listPromotions({
* id: ["promo_123", "promo_321"],
* })
* ```
*
* To specify relations that should be retrieved within the promotions:
*
* :::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 promotions = await promotionModuleService.listPromotions(
* {
* id: ["promo_123", "promo_321"],
* },
* {
* relations: ["application_method"],
* }
* )
* ```
*
* 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 promotions = await promotionModuleService.listPromotions(
* {
* id: ["promo_123", "promo_321"],
* },
* {
* relations: ["application_method"],
* take: 20,
* skip: 2,
* }
* )
* ```
*/
listPromotions(filters?: FilterablePromotionProps, config?: FindConfig<PromotionDTO>, sharedContext?: Context): Promise<PromotionDTO[]>;
/**
* This method retrieves a paginated list of promotions along with the total count of available promotions satisfying the provided filters.
*
* @param {FilterablePromotionProps} filters - The filters to apply on the retrieved promotions.
* @param {FindConfig<PromotionDTO>} config - The configurations determining how the promotion is retrieved. Its properties, such as `select` or `relations`, accept the
* attributes or relations associated with a promotion.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<[PromotionDTO[], number]>} The list of promotions along with their total count.
*
* @example
* To retrieve a list of promotions using their IDs:
*
* ```ts
* const [promotions, count] =
* await promotionModuleService.listAndCountPromotions({
* id: ["promo_123", "promo_321"],
* })
* ```
*
* To specify relations that should be retrieved within the promotions:
*
* :::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 [promotions, count] =
* await promotionModuleService.listAndCountPromotions(
* {
* id: ["promo_123", "promo_321"],
* },
* {
* relations: ["application_method"],
* }
* )
* ```
*
* 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 [promotions, count] =
* await promotionModuleService.listAndCountPromotions(
* {
* id: ["promo_123", "promo_321"],
* },
* {
* relations: ["application_method"],
* take: 20,
* skip: 2,
* }
* )
* ```
*/
listAndCountPromotions(filters?: FilterablePromotionProps, config?: FindConfig<PromotionDTO>, sharedContext?: Context): Promise<[PromotionDTO[], number]>;
/**
* This method retrieves a promotion by its ID.
*
* @param {string} id - The ID of the promotion.
* @param {FindConfig<PromotionDTO>} config - The configurations determining how the promotion is retrieved. Its properties, such as `select` or `relations`, accept the
* attributes or relations associated with a promotion.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionDTO>} The retrieved promotion.
*
* @example
* A simple example that retrieves a promotion by its ID:
*
* ```ts
* const promotion =
* await promotionModuleService.retrievePromotion("promo_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 promotion = await promotionModuleService.retrievePromotion(
* "promo_123",
* {
* relations: ["application_method"],
* }
* )
* ```
*/
retrievePromotion(id: string, config?: FindConfig<PromotionDTO>, sharedContext?: Context): Promise<PromotionDTO>;
/**
* This method deletes promotions by their IDs.
*
* @param {string[]} ids - The IDs of the promotion.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void>} Resolves when the promotions are deleted.
*
* @example
* await promotionModuleService.deletePromotions([
* "promo_123",
* "promo_321",
* ])
*/
deletePromotions(ids: string[], sharedContext?: Context): Promise<void>;
/**
* This method deletes a promotion by its ID.
*
* @param {string} ids - The IDs of the promotion.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void>} Resolves when the promotion is deleted.
*
* @example
* await promotionModuleService.deletePromotions("promo_123")
*/
deletePromotions(ids: string, sharedContext?: Context): Promise<void>;
/**
* This method soft deletes a promotion by its IDs.
*
* @param {string | string[]} promotionIds - The list of promotions to soft delete.
* @param {SoftDeleteReturn<TReturnableLinkableKeys>} config - An object that is used to specify an entity's related entities that should be soft-deleted when the main entity is soft-deleted.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void | Record<string, string[]>>} An object that includes the IDs of related records that were also soft deleted, such as the ID of the associated application method.
* The object's keys are the ID attribute names of the promotion entity's relations, such as `application_method_id`, and its value is an array of strings, each being the ID of a record associated
* with the promotion through this relation, such as the IDs of associated application method.
*
* If there are no related records, the promise resolves to `void`.
*
* @example
* await promotionModuleService.softDeletePromotions("promo_123")
*/
softDeletePromotions<TReturnableLinkableKeys extends string = string>(promotionIds: string | string[], config?: SoftDeleteReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
/**
* This method restores soft deleted promotions by their IDs.
*
* @param {string | string[]} promotionIds - The promotions' IDs.
* @param {RestoreReturn<TReturnableLinkableKeys>} config - Configurations determining which relations to restore along with each of the promotion. You can pass to its `returnLinkableKeys`
* property any of the promotion's relation attribute names, such as `application_method_id`.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void | Record<string, string[]>>} An object that includes the IDs of related records that were restored, such as the ID of associated application method.
* The object's keys are the ID attribute names of the promotion entity's relations, such as `application_method_id`,
* and its value is an array of strings, each being the ID of the record associated with the promotion through this relation,
* such as the IDs of associated application method.
*
* If there are no related records restored, the promise resolves to `void`.
*
* @example
* await promotionModuleService.restorePromotions("promo_123")
*/
restorePromotions<TReturnableLinkableKeys extends string = string>(promotionIds: string | string[], config?: RestoreReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
/**
* This method adds promotion rules to a promotion.
*
* @param {string} promotionId - The promotion's ID.
* @param {CreatePromotionRuleDTO[]} rulesData - The promotion rules to be created and added to the promotion.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionRuleDTO[]>} The promotion rules created.
*
* @example
* const promotionRules =
* await promotionModuleService.addPromotionRules(
* "promo_123",
* [
* {
* attribute: "customer_group_id",
* operator: "in",
* values: ["VIP", "VVIP"],
* },
* ]
* )
*/
addPromotionRules(promotionId: string, rulesData: CreatePromotionRuleDTO[], sharedContext?: Context): Promise<PromotionRuleDTO[]>;
/**
* This method adds target promotion rules to a promotion's application method.
*
* @param {string} promotionId - The promotion's ID.
* @param {CreatePromotionRuleDTO[]} rulesData - The promotion rules to be created and added as target rules to the promotion's application method.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionRuleDTO[]>} The created promotion rules.
*
* @example
* const targetPromotionRules =
* await promotionModuleService.addPromotionTargetRules(
* "promo_123",
* [
* {
* attribute: "SKU",
* operator: "eq",
* values: "SHIRT",
* },
* ]
* )
*/
addPromotionTargetRules(promotionId: string, rulesData: CreatePromotionRuleDTO[], sharedContext?: Context): Promise<PromotionRuleDTO[]>;
/**
* This method adds buy promotion rules to a promotion's application method.
*
* @param {string} promotionId - The promotion's ID.
* @param {CreatePromotionRuleDTO[]} rulesData - The promotion rules to be created and added as buy rules to the promotion's applicatio method.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionRuleDTO[]>} The created promotion rules.
*
* @example
* const buyPromotionRules =
* await promotionModuleService.addPromotionBuyRules(
* "promo_123",
* [
* {
* attribute: "SKU",
* operator: "eq",
* values: "SHIRT",
* },
* ]
* )
*/
addPromotionBuyRules(promotionId: string, rulesData: CreatePromotionRuleDTO[], sharedContext?: Context): Promise<PromotionRuleDTO[]>;
/**
* This method removes promotion rules from a promotion.
*
* @param {string} promotionId - The promotion's ID.
* @param {string[]} ruleIds - The promotion rules' IDs.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void>} Resolves when the promotion rules are deleted successfully.
*
* @example
* await promotionModuleService.removePromotionRules(
* "promo_123",
* ["prorul_123", "prorul_321"]
* )
*/
removePromotionRules(promotionId: string, ruleIds: string[], sharedContext?: Context): Promise<void>;
/**
* This method removes target promotion rules from a promotion's application method.
*
* @param {string} promotionId - The promotion's ID.
* @param {string[]} ruleIds - The target promotion rules' IDs.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void>} Resolves when the target promotion rules are deleted.
*
* @example
* await promotionModuleService.removePromotionTargetRules(
* "promo_123",
* ["prorul_123", "prorul_321"]
* )
*/
removePromotionTargetRules(promotionId: string, ruleIds: string[], sharedContext?: Context): Promise<void>;
/**
* This method removes buy promotion rules from a promotion's application method.
*
* @param {string} promotionId - The promotion's ID.
* @param {string[]} ruleIds - The buy promotion rules' IDs.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void>} Resolves when the buy promotion rules are deleted.
*
* @example
* await promotionModuleService.removePromotionBuyRules(
* "promo_123",
* ["prorul_123", "prorul_321"]
* )
*/
removePromotionBuyRules(promotionId: string, ruleIds: string[], sharedContext?: Context): Promise<void>;
/**
* This method creates a campaign.
*
* @param {CreateCampaignDTO} data - The campaign to be created.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<CampaignDTO>} The created campaign.
*
* @example
* const campaign = await promotionModuleService.createCampaigns(
* {
* name: "Summer discounts",
* campaign_identifier: "G-123456",
* starts_at: new Date("2025-06-01"),
* ends_at: new Date("2025-09-01"),
* budget: {
* type: "usage",
* limit: 10,
* },
* }
* )
*/
createCampaigns(data: CreateCampaignDTO, sharedContext?: Context): Promise<CampaignDTO>;
/**
* This method creates campaigns.
*
* @param {CreateCampaignDTO[]} data - The campaigns to be created.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<CampaignDTO[]>} The created campaigns.
*
* @example
* const campaigns =
* await promotionModuleService.createCampaigns([
* {
* name: "Summer discounts",
* campaign_identifier: "G-123456",
* starts_at: new Date("2025-06-01"),
* ends_at: new Date("2025-09-01"),
* budget: {
* type: "usage",
* limit: 10,
* },
* },
* ])
*/
createCampaigns(data: CreateCampaignDTO[], sharedContext?: Context): Promise<CampaignDTO[]>;
/**
* This method updates existing campaigns.
*
* @param {UpdateCampaignDTO[]} data - The attributes to update in the campaigns.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<CampaignDTO[]>} The updated campaigns.
*
* @example
* const campaigns =
* await promotionModuleService.updateCampaigns([
* {
* id: "procamp_123",
* name: "Summer Sales",
* },
* ])
*/
updateCampaigns(data: UpdateCampaignDTO[], sharedContext?: Context): Promise<CampaignDTO[]>;
/**
* This method updates an existing campaign.
*
* @param {UpdateCampaignDTO} data - The attributes to update in the campaign.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<CampaignDTO>} The updated campaign.
*
* @example
* const campaigns =
* await promotionModuleService.updateCampaigns({
* id: "procamp_123",
* name: "Summer Sales",
* })
*/
updateCampaigns(data: UpdateCampaignDTO, sharedContext?: Context): Promise<CampaignDTO>;
/**
* This method retrieves a paginated list of promotion rules based on optional filters and configuration.
*
* @param {FilterablePromotionRuleProps} filters - The filters to apply on the retrieved promotion rules.
* @param {FindConfig<PromotionRuleDTO>} config - The configurations determining how the promotion rule is retrieved. Its properties, such as `select` or `relations`, accept the
* attributes or relations associated with a promotion rule.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionRuleDTO[]>} The list of promotion rules.
*
* @example
* To retrieve a list of promotion rules using their IDs:
*
* ```ts
* const promotionRules =
* await promotionModuleService.listPromotionRules({
* id: ["prorul_123", "prorul_321"],
* })
* ```
*
* To specify relations that should be retrieved within the promotion rules:
*
* :::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 promotionRules =
* await promotionModuleService.listPromotionRules(
* {
* id: ["prorul_123", "prorul_321"],
* },
* {
* relations: ["promotions"],
* }
* )
* ```
*
* 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 promotionRules =
* await promotionModuleService.listPromotionRules(
* {
* id: ["prorul_123", "prorul_321"],
* },
* {
* relations: ["promotions"],
* take: 20,
* skip: 2,
* }
* )
* ```
*/
listPromotionRules(filters?: FilterablePromotionRuleProps, config?: FindConfig<PromotionRuleDTO>, sharedContext?: Context): Promise<PromotionRuleDTO[]>;
/**
* This method updates existing promotion rules.
*
* @param {UpdatePromotionRuleDTO[]} data - The attributes to update in the promotion rules.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<PromotionRuleDTO[]>} The updated promotion rules.
*
* @example
* const promotionRules =
* await promotionModuleService.updatePromotionRules([
* {
* id: "prorul_123",
* description: "Only allow VIP customers",
* },
* ])
*/
updatePromotionRules(data: UpdatePromotionRuleDTO[], sharedContext?: Context): Promise<PromotionRuleDTO[]>;
/**
* This method retrieves a paginated list of campaigns based on optional filters and configuration.
*
* @param {FilterableCampaignProps} filters - The filters to apply on the retrieved campaigns.
* @param {FindConfig<CampaignDTO>} config - The configurations determining how the campaign is retrieved. Its properties, such as `select` or `relations`, accept the
* attributes or relations associated with a campaign.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<CampaignDTO[]>} The list of campaigns.
*
* @example
* To retrieve a list of campaigns using their IDs:
*
* ```ts
* const campaigns = await promotionModuleService.listCampaigns({
* id: ["procamp_123"],
* })
* ```
*
* To specify relations that should be retrieved within the campaigns:
*
* :::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 campaigns = await promotionModuleService.listCampaigns(
* {
* id: ["procamp_123"],
* },
* {
* relations: ["promotions"],
* }
* )
* ```
*
* 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 campaigns = await promotionModuleService.listCampaigns(
* {
* id: ["procamp_123"],
* },
* {
* relations: ["promotions"],
* take: 20,
* skip: 2,
* }
* )
* ```
*/
listCampaigns(filters?: FilterableCampaignProps, config?: FindConfig<CampaignDTO>, sharedContext?: Context): Promise<CampaignDTO[]>;
/**
* This method retrieves a paginated list of campaigns along with the total count of available campaigns satisfying the provided filters.
*
* @param {FilterableCampaignProps} filters - The filters to apply on the retrieved campaigns.
* @param {FindConfig<CampaignDTO>} config - The configurations determining how the campaign is retrieved. Its properties, such as `select` or `relations`, accept the
* attributes or relations associated with a campaign.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<[CampaignDTO[], number]>} The list of campaigns along with their total count.
*
* @example
* To retrieve a list of campaigns using their IDs:
*
* ```ts
* const [campaigns, count] =
* await promotionModuleService.listAndCountCampaigns({
* id: ["procamp_123"],
* })
* ```
*
* To specify relations that should be retrieved within the campaigns:
*
* :::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 [campaigns, count] =
* await promotionModuleService.listAndCountCampaigns(
* {
* id: ["procamp_123"],
* },
* {
* relations: ["promotions"],
* }
* )
* ```
*
* 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 [campaigns, count] =
* await promotionModuleService.listAndCountCampaigns(
* {
* id: ["procamp_123"],
* },
* {
* relations: ["promotions"],
* take: 20,
* skip: 2,
* }
* )
* ```
*/
listAndCountCampaigns(filters?: FilterableCampaignProps, config?: FindConfig<CampaignDTO>, sharedContext?: Context): Promise<[CampaignDTO[], number]>;
/**
* This method retrieves a campaigns by its ID.
*
* @param {string} id - The ID of the campaigns.
* @param {FindConfig<CampaignDTO>} config - The configurations determining how the campaign is retrieved. Its properties, such as `select` or `relations`, accept the
* attributes or relations associated with a campaign.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<CampaignDTO>} The retrieved campaigns.
*
* @example
* A simple example that retrieves a promotion by its ID:
*
* ```ts
* const campaign =
* await promotionModuleService.retrieveCampaign("procamp_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 campaign =
* await promotionModuleService.retrieveCampaign(
* "procamp_123",
* {
* relations: ["promotions"],
* }
* )
* ```
*/
retrieveCampaign(id: string, config?: FindConfig<CampaignDTO>, sharedContext?: Context): Promise<CampaignDTO>;
/**
* This method deletes campaigns by their IDs.
*
* @param {string[]} ids - The IDs of the campaigns.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void>} Resolves when the campaigns are deleted successfully.
*
* @example
* await promotionModuleService.deleteCampaigns(["procamp_123"])
*/
deleteCampaigns(ids: string[], sharedContext?: Context): Promise<void>;
/**
* This method deletes a campaign by its ID.
*
* @param {string} ids - The IDs of the campaign.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void>} Resolves when the campaign is deleted successfully.
*
* @example
* await promotionModuleService.deleteCampaigns("procamp_123")
*/
deleteCampaigns(ids: string, sharedContext?: Context): Promise<void>;
/**
* This method soft deletes campaigns by their IDs.
*
* @param {string | string[]} campaignIds - The IDs of the campaigns.
* @param {SoftDeleteReturn<TReturnableLinkableKeys>} config - An object that is used to specify an entity's related entities that should be soft-deleted when the main entity is soft-deleted.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void | Record<string, string[]>>} An object that includes the IDs of related records that were also soft deleted, such as the ID of the associated campaign budget.
* The object's keys are the ID attribute names of the campaign entity's relations, such as `budget_id`, and its value is an array of strings, each being the ID of a record associated
* with the campaign through this relation, such as the IDs of associated campaign budget.
*
* If there are no related records, the promise resolves to `void`.
*
* @example
* await promotionModuleService.softDeleteCampaigns(
* "procamp_123",
* {
* returnLinkableKeys: ["budget_id"],
* }
* )
*/
softDeleteCampaigns<TReturnableLinkableKeys extends string = string>(campaignIds: string | string[], config?: SoftDeleteReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
/**
* This method restores soft deleted campaigns by their IDs.
*
* @param {string | string[]} campaignIds - The IDs of the campaigns
* @param {RestoreReturn<TReturnableLinkableKeys>} config - Configurations determining which relations to restore along with each of the campaigns. You can pass to its `returnLinkableKeys`
* property any of the campaign's relation attribute names, such as `budget_id`.
* @param {Context} sharedContext - A context used to share resources, such as transaction manager, between the application and the module.
* @returns {Promise<void | Record<string, string[]>>} An object that includes the IDs of related records that were restored, such as the ID of associated campaign budget.
* The object's keys are the ID attribute names of the campaign entity's relations, such as `budget_id`,
* and its value is an array of strings, each being the ID of the record associated with the campaign through this relation,
* such as the IDs of associated campaign budget.
*
* If there are no related records restored, the promise resolves to `void`.
*
* @example
* await promotionModuleService.restoreCampaigns("procamp_123", {
* returnLinkableKeys: ["budget_id"],
* })
*/
restoreCampaigns<TReturnableLinkableKeys extends string = string>(campaignIds: string | string[], config?: RestoreReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
addPromotionsToCampaign(data: AddPromotionsToCampaignDTO, sharedContext?: Context): Promise<{
ids: string[];
}>;
removePromotionsFromCampaign(data: RemovePromotionsFromCampaignDTO, sharedContext?: Context): Promise<{
ids: string[];
}>;
}
//# sourceMappingURL=service.d.ts.map