import { CampaignBudgetTypeValues, Context, DAL, FilterablePromotionProps, FindConfig, InferEntityType, InternalModuleDeclaration, ModulesSdkTypes, PromotionDTO, PromotionTypes } from "@medusajs/framework/types";
import { ApplicationMethodAllocation, ApplicationMethodTargetType, CampaignBudgetType, PromotionStatus, PromotionType } from "@medusajs/framework/utils";
import { ApplicationMethod, Campaign, CampaignBudget, CampaignBudgetUsage, Promotion, PromotionRule, PromotionRuleValue } from "../models";
import { ApplicationMethodRuleTypes } from "../types";
type InjectedDependencies = {
    baseRepository: DAL.RepositoryService;
    promotionService: ModulesSdkTypes.IMedusaInternalService<any>;
    applicationMethodService: ModulesSdkTypes.IMedusaInternalService<any>;
    promotionRuleService: ModulesSdkTypes.IMedusaInternalService<any>;
    promotionRuleValueService: ModulesSdkTypes.IMedusaInternalService<any>;
    campaignService: ModulesSdkTypes.IMedusaInternalService<any>;
    campaignBudgetService: ModulesSdkTypes.IMedusaInternalService<any>;
    campaignBudgetUsageService: ModulesSdkTypes.IMedusaInternalService<any>;
};
declare const PromotionModuleService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<{
    Promotion: {
        dto: PromotionTypes.PromotionDTO;
    };
    ApplicationMethod: {
        dto: PromotionTypes.ApplicationMethodDTO;
    };
    Campaign: {
        dto: PromotionTypes.CampaignDTO;
    };
    CampaignBudget: {
        dto: PromotionTypes.CampaignBudgetDTO;
    };
    CampaignBudgetUsage: {
        dto: PromotionTypes.CampaignBudgetUsageDTO;
    };
    PromotionRule: {
        dto: PromotionTypes.PromotionRuleDTO;
    };
    PromotionRuleValue: {
        dto: PromotionTypes.PromotionRuleValueDTO;
    };
}>;
export default class PromotionModuleService extends PromotionModuleService_base implements PromotionTypes.IPromotionModuleService {
    protected readonly moduleDeclaration: InternalModuleDeclaration;
    protected baseRepository_: DAL.RepositoryService;
    protected promotionService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof Promotion>>;
    protected applicationMethodService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ApplicationMethod>>;
    protected promotionRuleService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof PromotionRule>>;
    protected promotionRuleValueService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof PromotionRuleValue>>;
    protected campaignService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof Campaign>>;
    protected campaignBudgetService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof CampaignBudget>>;
    protected campaignBudgetUsageService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof CampaignBudgetUsage>>;
    constructor({ baseRepository, promotionService, applicationMethodService, promotionRuleService, promotionRuleValueService, campaignService, campaignBudgetService, campaignBudgetUsageService, }: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
    listActivePromotions(filters?: FilterablePromotionProps, config?: FindConfig<PromotionDTO>, sharedContext?: Context): Promise<PromotionDTO[]>;
    protected listActivePromotions_(filters?: FilterablePromotionProps, config?: FindConfig<PromotionDTO>, sharedContext?: Context): Promise<InferEntityType<typeof Promotion>[]>;
    protected registerCampaignBudgetUsageByAttribute_(budgetId: string, attributeValue: string, sharedContext?: Context): Promise<void>;
    protected revertCampaignBudgetUsageByAttribute_(budgetId: string, attributeValue: string, sharedContext?: Context): Promise<void>;
    registerUsage(computedActions: PromotionTypes.UsageComputedActions[], registrationContext: PromotionTypes.CampaignBudgetUsageContext, sharedContext?: Context): Promise<void>;
    revertUsage(computedActions: PromotionTypes.UsageComputedActions[], registrationContext: PromotionTypes.CampaignBudgetUsageContext, sharedContext?: Context): Promise<void>;
    computeActions(promotionCodes: string[], applicationContext: PromotionTypes.ComputeActionContext, options?: PromotionTypes.ComputeActionOptions, sharedContext?: Context): Promise<PromotionTypes.ComputeActions[]>;
    createPromotions(data: PromotionTypes.CreatePromotionDTO, sharedContext?: Context): Promise<PromotionTypes.PromotionDTO>;
    createPromotions(data: PromotionTypes.CreatePromotionDTO[], sharedContext?: Context): Promise<PromotionTypes.PromotionDTO[]>;
    protected createPromotions_(data: PromotionTypes.CreatePromotionDTO[], sharedContext?: Context): Promise<{
        id: string;
        code: string;
        is_automatic: boolean;
        is_tax_inclusive: boolean;
        limit: number | null;
        used: number;
        type: PromotionType;
        status: PromotionStatus;
        campaign: {
            id: string;
            name: string;
            description: string | null;
            campaign_identifier: string;
            starts_at: Date | null;
            ends_at: Date | null;
            budget: {
                id: string;
                type: CampaignBudgetType;
                currency_code: string | null;
                limit: number | null;
                used: number;
                campaign: /*elided*/ any;
                attribute: string | null;
                usages: {
                    id: string;
                    attribute_value: string;
                    used: number;
                    budget: /*elided*/ any;
                    raw_used: Record<string, unknown>;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    budget_id: string;
                }[];
                raw_limit: Record<string, unknown> | null;
                raw_used: Record<string, unknown>;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                campaign_id: string;
            };
            promotions: /*elided*/ any[];
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
        };
        application_method: {
            id: string;
            value: number | null;
            currency_code: string | null;
            max_quantity: number | null;
            apply_to_quantity: number | null;
            buy_rules_min_quantity: number | null;
            type: import("@medusajs/framework/utils").ApplicationMethodType;
            target_type: ApplicationMethodTargetType;
            allocation: ApplicationMethodAllocation | null;
            promotion: /*elided*/ any;
            target_rules: {
                id: string;
                description: string | null;
                attribute: string;
                operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                values: {
                    id: string;
                    value: string;
                    promotion_rule: /*elided*/ any;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_rule_id: string;
                }[];
                promotions: /*elided*/ any[];
                method_target_rules: /*elided*/ any[];
                method_buy_rules: /*elided*/ any[];
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
            }[];
            buy_rules: {
                id: string;
                description: string | null;
                attribute: string;
                operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                values: {
                    id: string;
                    value: string;
                    promotion_rule: /*elided*/ any;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_rule_id: string;
                }[];
                promotions: /*elided*/ any[];
                method_target_rules: /*elided*/ any[];
                method_buy_rules: /*elided*/ any[];
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
            }[];
            raw_value: Record<string, unknown> | null;
            raw_max_quantity: Record<string, unknown> | null;
            raw_apply_to_quantity: Record<string, unknown> | null;
            raw_buy_rules_min_quantity: Record<string, unknown> | null;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            promotion_id: string;
        };
        rules: {
            id: string;
            description: string | null;
            attribute: string;
            operator: import("@medusajs/framework/utils").PromotionRuleOperator;
            values: {
                id: string;
                value: string;
                promotion_rule: /*elided*/ any;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_rule_id: string;
            }[];
            promotions: /*elided*/ any[];
            method_target_rules: {
                id: string;
                value: number | null;
                currency_code: string | null;
                max_quantity: number | null;
                apply_to_quantity: number | null;
                buy_rules_min_quantity: number | null;
                type: import("@medusajs/framework/utils").ApplicationMethodType;
                target_type: ApplicationMethodTargetType;
                allocation: ApplicationMethodAllocation | null;
                promotion: /*elided*/ any;
                target_rules: /*elided*/ any[];
                buy_rules: /*elided*/ any[];
                raw_value: Record<string, unknown> | null;
                raw_max_quantity: Record<string, unknown> | null;
                raw_apply_to_quantity: Record<string, unknown> | null;
                raw_buy_rules_min_quantity: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_id: string;
            }[];
            method_buy_rules: {
                id: string;
                value: number | null;
                currency_code: string | null;
                max_quantity: number | null;
                apply_to_quantity: number | null;
                buy_rules_min_quantity: number | null;
                type: import("@medusajs/framework/utils").ApplicationMethodType;
                target_type: ApplicationMethodTargetType;
                allocation: ApplicationMethodAllocation | null;
                promotion: /*elided*/ any;
                target_rules: /*elided*/ any[];
                buy_rules: /*elided*/ any[];
                raw_value: Record<string, unknown> | null;
                raw_max_quantity: Record<string, unknown> | null;
                raw_apply_to_quantity: Record<string, unknown> | null;
                raw_buy_rules_min_quantity: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_id: string;
            }[];
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
        }[];
        metadata: Record<string, unknown> | null;
        raw_limit: Record<string, unknown> | null;
        created_at: Date;
        updated_at: Date;
        deleted_at: Date | null;
        campaign_id: string | null;
    }[]>;
    updatePromotions(data: PromotionTypes.UpdatePromotionDTO, sharedContext?: Context): Promise<PromotionTypes.PromotionDTO>;
    updatePromotions(data: PromotionTypes.UpdatePromotionDTO[], sharedContext?: Context): Promise<PromotionTypes.PromotionDTO[]>;
    protected updatePromotions_(data: PromotionTypes.UpdatePromotionDTO[], sharedContext?: Context): Promise<{
        id: string;
        code: string;
        is_automatic: boolean;
        is_tax_inclusive: boolean;
        limit: number | null;
        used: number;
        type: PromotionType;
        status: PromotionStatus;
        campaign: {
            id: string;
            name: string;
            description: string | null;
            campaign_identifier: string;
            starts_at: Date | null;
            ends_at: Date | null;
            budget: {
                id: string;
                type: CampaignBudgetType;
                currency_code: string | null;
                limit: number | null;
                used: number;
                campaign: /*elided*/ any;
                attribute: string | null;
                usages: {
                    id: string;
                    attribute_value: string;
                    used: number;
                    budget: /*elided*/ any;
                    raw_used: Record<string, unknown>;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    budget_id: string;
                }[];
                raw_limit: Record<string, unknown> | null;
                raw_used: Record<string, unknown>;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                campaign_id: string;
            };
            promotions: /*elided*/ any[];
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
        };
        application_method: {
            id: string;
            value: number | null;
            currency_code: string | null;
            max_quantity: number | null;
            apply_to_quantity: number | null;
            buy_rules_min_quantity: number | null;
            type: import("@medusajs/framework/utils").ApplicationMethodType;
            target_type: ApplicationMethodTargetType;
            allocation: ApplicationMethodAllocation | null;
            promotion: /*elided*/ any;
            target_rules: {
                id: string;
                description: string | null;
                attribute: string;
                operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                values: {
                    id: string;
                    value: string;
                    promotion_rule: /*elided*/ any;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_rule_id: string;
                }[];
                promotions: /*elided*/ any[];
                method_target_rules: /*elided*/ any[];
                method_buy_rules: /*elided*/ any[];
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
            }[];
            buy_rules: {
                id: string;
                description: string | null;
                attribute: string;
                operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                values: {
                    id: string;
                    value: string;
                    promotion_rule: /*elided*/ any;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_rule_id: string;
                }[];
                promotions: /*elided*/ any[];
                method_target_rules: /*elided*/ any[];
                method_buy_rules: /*elided*/ any[];
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
            }[];
            raw_value: Record<string, unknown> | null;
            raw_max_quantity: Record<string, unknown> | null;
            raw_apply_to_quantity: Record<string, unknown> | null;
            raw_buy_rules_min_quantity: Record<string, unknown> | null;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            promotion_id: string;
        };
        rules: {
            id: string;
            description: string | null;
            attribute: string;
            operator: import("@medusajs/framework/utils").PromotionRuleOperator;
            values: {
                id: string;
                value: string;
                promotion_rule: /*elided*/ any;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_rule_id: string;
            }[];
            promotions: /*elided*/ any[];
            method_target_rules: {
                id: string;
                value: number | null;
                currency_code: string | null;
                max_quantity: number | null;
                apply_to_quantity: number | null;
                buy_rules_min_quantity: number | null;
                type: import("@medusajs/framework/utils").ApplicationMethodType;
                target_type: ApplicationMethodTargetType;
                allocation: ApplicationMethodAllocation | null;
                promotion: /*elided*/ any;
                target_rules: /*elided*/ any[];
                buy_rules: /*elided*/ any[];
                raw_value: Record<string, unknown> | null;
                raw_max_quantity: Record<string, unknown> | null;
                raw_apply_to_quantity: Record<string, unknown> | null;
                raw_buy_rules_min_quantity: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_id: string;
            }[];
            method_buy_rules: {
                id: string;
                value: number | null;
                currency_code: string | null;
                max_quantity: number | null;
                apply_to_quantity: number | null;
                buy_rules_min_quantity: number | null;
                type: import("@medusajs/framework/utils").ApplicationMethodType;
                target_type: ApplicationMethodTargetType;
                allocation: ApplicationMethodAllocation | null;
                promotion: /*elided*/ any;
                target_rules: /*elided*/ any[];
                buy_rules: /*elided*/ any[];
                raw_value: Record<string, unknown> | null;
                raw_max_quantity: Record<string, unknown> | null;
                raw_apply_to_quantity: Record<string, unknown> | null;
                raw_buy_rules_min_quantity: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_id: string;
            }[];
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
        }[];
        metadata: Record<string, unknown> | null;
        raw_limit: Record<string, unknown> | null;
        created_at: Date;
        updated_at: Date;
        deleted_at: Date | null;
        campaign_id: string | null;
    }[]>;
    updatePromotionRules(data: PromotionTypes.UpdatePromotionRuleDTO[], sharedContext?: Context): Promise<PromotionTypes.PromotionRuleDTO[]>;
    protected updatePromotionRules_(data: PromotionTypes.UpdatePromotionRuleDTO[], sharedContext?: Context): Promise<{
        id: string;
        description: string | null;
        attribute: string;
        operator: import("@medusajs/framework/utils").PromotionRuleOperator;
        values: {
            id: string;
            value: string;
            promotion_rule: /*elided*/ any;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            promotion_rule_id: string;
        }[];
        promotions: {
            id: string;
            code: string;
            is_automatic: boolean;
            is_tax_inclusive: boolean;
            limit: number | null;
            used: number;
            type: PromotionType;
            status: PromotionStatus;
            campaign: {
                id: string;
                name: string;
                description: string | null;
                campaign_identifier: string;
                starts_at: Date | null;
                ends_at: Date | null;
                budget: {
                    id: string;
                    type: CampaignBudgetType;
                    currency_code: string | null;
                    limit: number | null;
                    used: number;
                    campaign: /*elided*/ any;
                    attribute: string | null;
                    usages: {
                        id: string;
                        attribute_value: string;
                        used: number;
                        budget: /*elided*/ any;
                        raw_used: Record<string, unknown>;
                        created_at: Date;
                        updated_at: Date;
                        deleted_at: Date | null;
                        budget_id: string;
                    }[];
                    raw_limit: Record<string, unknown> | null;
                    raw_used: Record<string, unknown>;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    campaign_id: string;
                };
                promotions: /*elided*/ any[];
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
            };
            application_method: {
                id: string;
                value: number | null;
                currency_code: string | null;
                max_quantity: number | null;
                apply_to_quantity: number | null;
                buy_rules_min_quantity: number | null;
                type: import("@medusajs/framework/utils").ApplicationMethodType;
                target_type: ApplicationMethodTargetType;
                allocation: ApplicationMethodAllocation | null;
                promotion: /*elided*/ any;
                target_rules: /*elided*/ any[];
                buy_rules: /*elided*/ any[];
                raw_value: Record<string, unknown> | null;
                raw_max_quantity: Record<string, unknown> | null;
                raw_apply_to_quantity: Record<string, unknown> | null;
                raw_buy_rules_min_quantity: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_id: string;
            };
            rules: /*elided*/ any[];
            metadata: Record<string, unknown> | null;
            raw_limit: Record<string, unknown> | null;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            campaign_id: string | null;
        }[];
        method_target_rules: {
            id: string;
            value: number | null;
            currency_code: string | null;
            max_quantity: number | null;
            apply_to_quantity: number | null;
            buy_rules_min_quantity: number | null;
            type: import("@medusajs/framework/utils").ApplicationMethodType;
            target_type: ApplicationMethodTargetType;
            allocation: ApplicationMethodAllocation | null;
            promotion: {
                id: string;
                code: string;
                is_automatic: boolean;
                is_tax_inclusive: boolean;
                limit: number | null;
                used: number;
                type: PromotionType;
                status: PromotionStatus;
                campaign: {
                    id: string;
                    name: string;
                    description: string | null;
                    campaign_identifier: string;
                    starts_at: Date | null;
                    ends_at: Date | null;
                    budget: {
                        id: string;
                        type: CampaignBudgetType;
                        currency_code: string | null;
                        limit: number | null;
                        used: number;
                        campaign: /*elided*/ any;
                        attribute: string | null;
                        usages: {
                            id: string;
                            attribute_value: string;
                            used: number;
                            budget: /*elided*/ any;
                            raw_used: Record<string, unknown>;
                            created_at: Date;
                            updated_at: Date;
                            deleted_at: Date | null;
                            budget_id: string;
                        }[];
                        raw_limit: Record<string, unknown> | null;
                        raw_used: Record<string, unknown>;
                        created_at: Date;
                        updated_at: Date;
                        deleted_at: Date | null;
                        campaign_id: string;
                    };
                    promotions: /*elided*/ any[];
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                };
                application_method: /*elided*/ any;
                rules: /*elided*/ any[];
                metadata: Record<string, unknown> | null;
                raw_limit: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                campaign_id: string | null;
            };
            target_rules: /*elided*/ any[];
            buy_rules: /*elided*/ any[];
            raw_value: Record<string, unknown> | null;
            raw_max_quantity: Record<string, unknown> | null;
            raw_apply_to_quantity: Record<string, unknown> | null;
            raw_buy_rules_min_quantity: Record<string, unknown> | null;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            promotion_id: string;
        }[];
        method_buy_rules: {
            id: string;
            value: number | null;
            currency_code: string | null;
            max_quantity: number | null;
            apply_to_quantity: number | null;
            buy_rules_min_quantity: number | null;
            type: import("@medusajs/framework/utils").ApplicationMethodType;
            target_type: ApplicationMethodTargetType;
            allocation: ApplicationMethodAllocation | null;
            promotion: {
                id: string;
                code: string;
                is_automatic: boolean;
                is_tax_inclusive: boolean;
                limit: number | null;
                used: number;
                type: PromotionType;
                status: PromotionStatus;
                campaign: {
                    id: string;
                    name: string;
                    description: string | null;
                    campaign_identifier: string;
                    starts_at: Date | null;
                    ends_at: Date | null;
                    budget: {
                        id: string;
                        type: CampaignBudgetType;
                        currency_code: string | null;
                        limit: number | null;
                        used: number;
                        campaign: /*elided*/ any;
                        attribute: string | null;
                        usages: {
                            id: string;
                            attribute_value: string;
                            used: number;
                            budget: /*elided*/ any;
                            raw_used: Record<string, unknown>;
                            created_at: Date;
                            updated_at: Date;
                            deleted_at: Date | null;
                            budget_id: string;
                        }[];
                        raw_limit: Record<string, unknown> | null;
                        raw_used: Record<string, unknown>;
                        created_at: Date;
                        updated_at: Date;
                        deleted_at: Date | null;
                        campaign_id: string;
                    };
                    promotions: /*elided*/ any[];
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                };
                application_method: /*elided*/ any;
                rules: /*elided*/ any[];
                metadata: Record<string, unknown> | null;
                raw_limit: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                campaign_id: string | null;
            };
            target_rules: /*elided*/ any[];
            buy_rules: /*elided*/ any[];
            raw_value: Record<string, unknown> | null;
            raw_max_quantity: Record<string, unknown> | null;
            raw_apply_to_quantity: Record<string, unknown> | null;
            raw_buy_rules_min_quantity: Record<string, unknown> | null;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            promotion_id: string;
        }[];
        created_at: Date;
        updated_at: Date;
        deleted_at: Date | null;
    }[]>;
    addPromotionRules(promotionId: string, rulesData: PromotionTypes.CreatePromotionRuleDTO[], sharedContext?: Context): Promise<PromotionTypes.PromotionRuleDTO[]>;
    addPromotionTargetRules(promotionId: string, rulesData: PromotionTypes.CreatePromotionRuleDTO[], sharedContext?: Context): Promise<PromotionTypes.PromotionRuleDTO[]>;
    addPromotionBuyRules(promotionId: string, rulesData: PromotionTypes.CreatePromotionRuleDTO[], sharedContext?: Context): Promise<PromotionTypes.PromotionRuleDTO[]>;
    protected createPromotionRulesAndValues_(rulesData: PromotionTypes.CreatePromotionRuleDTO[], relationName: "promotions" | "method_target_rules" | "method_buy_rules", relation: InferEntityType<typeof Promotion> | InferEntityType<typeof ApplicationMethod>, sharedContext?: Context): Promise<InferEntityType<typeof PromotionRule>[]>;
    removePromotionRules(promotionId: string, ruleIds: string[], sharedContext?: Context): Promise<void>;
    protected removePromotionRules_(promotionId: string, ruleIds: string[], sharedContext?: Context): Promise<void>;
    removePromotionTargetRules(promotionId: string, ruleIds: string[], sharedContext?: Context): Promise<void>;
    removePromotionBuyRules(promotionId: string, ruleIds: string[], sharedContext?: Context): Promise<void>;
    protected removeApplicationMethodRules_(promotionId: string, ruleIds: string[], relation: ApplicationMethodRuleTypes.TARGET_RULES | ApplicationMethodRuleTypes.BUY_RULES, sharedContext?: Context): Promise<void>;
    createCampaigns(data: PromotionTypes.CreateCampaignDTO, sharedContext?: Context): Promise<PromotionTypes.CampaignDTO>;
    createCampaigns(data: PromotionTypes.CreateCampaignDTO[], sharedContext?: Context): Promise<PromotionTypes.CampaignDTO[]>;
    protected createCampaigns_(data: PromotionTypes.CreateCampaignDTO[], sharedContext?: Context): Promise<{
        id: string;
        name: string;
        description: string | null;
        campaign_identifier: string;
        starts_at: Date | null;
        ends_at: Date | null;
        budget: {
            id: string;
            type: CampaignBudgetType;
            currency_code: string | null;
            limit: number | null;
            used: number;
            campaign: /*elided*/ any;
            attribute: string | null;
            usages: {
                id: string;
                attribute_value: string;
                used: number;
                budget: /*elided*/ any;
                raw_used: Record<string, unknown>;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                budget_id: string;
            }[];
            raw_limit: Record<string, unknown> | null;
            raw_used: Record<string, unknown>;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            campaign_id: string;
        };
        promotions: {
            id: string;
            code: string;
            is_automatic: boolean;
            is_tax_inclusive: boolean;
            limit: number | null;
            used: number;
            type: PromotionType;
            status: PromotionStatus;
            campaign: /*elided*/ any;
            application_method: {
                id: string;
                value: number | null;
                currency_code: string | null;
                max_quantity: number | null;
                apply_to_quantity: number | null;
                buy_rules_min_quantity: number | null;
                type: import("@medusajs/framework/utils").ApplicationMethodType;
                target_type: ApplicationMethodTargetType;
                allocation: ApplicationMethodAllocation | null;
                promotion: /*elided*/ any;
                target_rules: {
                    id: string;
                    description: string | null;
                    attribute: string;
                    operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                    values: {
                        id: string;
                        value: string;
                        promotion_rule: /*elided*/ any;
                        created_at: Date;
                        updated_at: Date;
                        deleted_at: Date | null;
                        promotion_rule_id: string;
                    }[];
                    promotions: /*elided*/ any[];
                    method_target_rules: /*elided*/ any[];
                    method_buy_rules: /*elided*/ any[];
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                }[];
                buy_rules: {
                    id: string;
                    description: string | null;
                    attribute: string;
                    operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                    values: {
                        id: string;
                        value: string;
                        promotion_rule: /*elided*/ any;
                        created_at: Date;
                        updated_at: Date;
                        deleted_at: Date | null;
                        promotion_rule_id: string;
                    }[];
                    promotions: /*elided*/ any[];
                    method_target_rules: /*elided*/ any[];
                    method_buy_rules: /*elided*/ any[];
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                }[];
                raw_value: Record<string, unknown> | null;
                raw_max_quantity: Record<string, unknown> | null;
                raw_apply_to_quantity: Record<string, unknown> | null;
                raw_buy_rules_min_quantity: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_id: string;
            };
            rules: {
                id: string;
                description: string | null;
                attribute: string;
                operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                values: {
                    id: string;
                    value: string;
                    promotion_rule: /*elided*/ any;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_rule_id: string;
                }[];
                promotions: /*elided*/ any[];
                method_target_rules: {
                    id: string;
                    value: number | null;
                    currency_code: string | null;
                    max_quantity: number | null;
                    apply_to_quantity: number | null;
                    buy_rules_min_quantity: number | null;
                    type: import("@medusajs/framework/utils").ApplicationMethodType;
                    target_type: ApplicationMethodTargetType;
                    allocation: ApplicationMethodAllocation | null;
                    promotion: /*elided*/ any;
                    target_rules: /*elided*/ any[];
                    buy_rules: /*elided*/ any[];
                    raw_value: Record<string, unknown> | null;
                    raw_max_quantity: Record<string, unknown> | null;
                    raw_apply_to_quantity: Record<string, unknown> | null;
                    raw_buy_rules_min_quantity: Record<string, unknown> | null;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_id: string;
                }[];
                method_buy_rules: {
                    id: string;
                    value: number | null;
                    currency_code: string | null;
                    max_quantity: number | null;
                    apply_to_quantity: number | null;
                    buy_rules_min_quantity: number | null;
                    type: import("@medusajs/framework/utils").ApplicationMethodType;
                    target_type: ApplicationMethodTargetType;
                    allocation: ApplicationMethodAllocation | null;
                    promotion: /*elided*/ any;
                    target_rules: /*elided*/ any[];
                    buy_rules: /*elided*/ any[];
                    raw_value: Record<string, unknown> | null;
                    raw_max_quantity: Record<string, unknown> | null;
                    raw_apply_to_quantity: Record<string, unknown> | null;
                    raw_buy_rules_min_quantity: Record<string, unknown> | null;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_id: string;
                }[];
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
            }[];
            metadata: Record<string, unknown> | null;
            raw_limit: Record<string, unknown> | null;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            campaign_id: string | null;
        }[];
        created_at: Date;
        updated_at: Date;
        deleted_at: Date | null;
    }[]>;
    protected validateCampaignBudgetData(data: {
        type?: CampaignBudgetTypeValues;
        currency_code?: string | null;
    }): void;
    updateCampaigns(data: PromotionTypes.UpdateCampaignDTO, sharedContext?: Context): Promise<PromotionTypes.CampaignDTO>;
    updateCampaigns(data: PromotionTypes.UpdateCampaignDTO[], sharedContext?: Context): Promise<PromotionTypes.CampaignDTO[]>;
    protected updateCampaigns_(data: PromotionTypes.UpdateCampaignDTO[], sharedContext?: Context): Promise<{
        id: string;
        name: string;
        description: string | null;
        campaign_identifier: string;
        starts_at: Date | null;
        ends_at: Date | null;
        budget: {
            id: string;
            type: CampaignBudgetType;
            currency_code: string | null;
            limit: number | null;
            used: number;
            campaign: /*elided*/ any;
            attribute: string | null;
            usages: {
                id: string;
                attribute_value: string;
                used: number;
                budget: /*elided*/ any;
                raw_used: Record<string, unknown>;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                budget_id: string;
            }[];
            raw_limit: Record<string, unknown> | null;
            raw_used: Record<string, unknown>;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            campaign_id: string;
        };
        promotions: {
            id: string;
            code: string;
            is_automatic: boolean;
            is_tax_inclusive: boolean;
            limit: number | null;
            used: number;
            type: PromotionType;
            status: PromotionStatus;
            campaign: /*elided*/ any;
            application_method: {
                id: string;
                value: number | null;
                currency_code: string | null;
                max_quantity: number | null;
                apply_to_quantity: number | null;
                buy_rules_min_quantity: number | null;
                type: import("@medusajs/framework/utils").ApplicationMethodType;
                target_type: ApplicationMethodTargetType;
                allocation: ApplicationMethodAllocation | null;
                promotion: /*elided*/ any;
                target_rules: {
                    id: string;
                    description: string | null;
                    attribute: string;
                    operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                    values: {
                        id: string;
                        value: string;
                        promotion_rule: /*elided*/ any;
                        created_at: Date;
                        updated_at: Date;
                        deleted_at: Date | null;
                        promotion_rule_id: string;
                    }[];
                    promotions: /*elided*/ any[];
                    method_target_rules: /*elided*/ any[];
                    method_buy_rules: /*elided*/ any[];
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                }[];
                buy_rules: {
                    id: string;
                    description: string | null;
                    attribute: string;
                    operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                    values: {
                        id: string;
                        value: string;
                        promotion_rule: /*elided*/ any;
                        created_at: Date;
                        updated_at: Date;
                        deleted_at: Date | null;
                        promotion_rule_id: string;
                    }[];
                    promotions: /*elided*/ any[];
                    method_target_rules: /*elided*/ any[];
                    method_buy_rules: /*elided*/ any[];
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                }[];
                raw_value: Record<string, unknown> | null;
                raw_max_quantity: Record<string, unknown> | null;
                raw_apply_to_quantity: Record<string, unknown> | null;
                raw_buy_rules_min_quantity: Record<string, unknown> | null;
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
                promotion_id: string;
            };
            rules: {
                id: string;
                description: string | null;
                attribute: string;
                operator: import("@medusajs/framework/utils").PromotionRuleOperator;
                values: {
                    id: string;
                    value: string;
                    promotion_rule: /*elided*/ any;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_rule_id: string;
                }[];
                promotions: /*elided*/ any[];
                method_target_rules: {
                    id: string;
                    value: number | null;
                    currency_code: string | null;
                    max_quantity: number | null;
                    apply_to_quantity: number | null;
                    buy_rules_min_quantity: number | null;
                    type: import("@medusajs/framework/utils").ApplicationMethodType;
                    target_type: ApplicationMethodTargetType;
                    allocation: ApplicationMethodAllocation | null;
                    promotion: /*elided*/ any;
                    target_rules: /*elided*/ any[];
                    buy_rules: /*elided*/ any[];
                    raw_value: Record<string, unknown> | null;
                    raw_max_quantity: Record<string, unknown> | null;
                    raw_apply_to_quantity: Record<string, unknown> | null;
                    raw_buy_rules_min_quantity: Record<string, unknown> | null;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_id: string;
                }[];
                method_buy_rules: {
                    id: string;
                    value: number | null;
                    currency_code: string | null;
                    max_quantity: number | null;
                    apply_to_quantity: number | null;
                    buy_rules_min_quantity: number | null;
                    type: import("@medusajs/framework/utils").ApplicationMethodType;
                    target_type: ApplicationMethodTargetType;
                    allocation: ApplicationMethodAllocation | null;
                    promotion: /*elided*/ any;
                    target_rules: /*elided*/ any[];
                    buy_rules: /*elided*/ any[];
                    raw_value: Record<string, unknown> | null;
                    raw_max_quantity: Record<string, unknown> | null;
                    raw_apply_to_quantity: Record<string, unknown> | null;
                    raw_buy_rules_min_quantity: Record<string, unknown> | null;
                    created_at: Date;
                    updated_at: Date;
                    deleted_at: Date | null;
                    promotion_id: string;
                }[];
                created_at: Date;
                updated_at: Date;
                deleted_at: Date | null;
            }[];
            metadata: Record<string, unknown> | null;
            raw_limit: Record<string, unknown> | null;
            created_at: Date;
            updated_at: Date;
            deleted_at: Date | null;
            campaign_id: string | null;
        }[];
        created_at: Date;
        updated_at: Date;
        deleted_at: Date | null;
    }[]>;
    addPromotionsToCampaign(data: PromotionTypes.AddPromotionsToCampaignDTO, sharedContext?: Context): Promise<{
        ids: string[];
    }>;
    protected addPromotionsToCampaign_(data: PromotionTypes.AddPromotionsToCampaignDTO, sharedContext?: Context): Promise<string[]>;
    removePromotionsFromCampaign(data: PromotionTypes.AddPromotionsToCampaignDTO, sharedContext?: Context): Promise<{
        ids: string[];
    }>;
    protected removePromotionsFromCampaign_(data: PromotionTypes.AddPromotionsToCampaignDTO, sharedContext?: Context): Promise<string[]>;
}
export {};
//# sourceMappingURL=promotion-module.d.ts.map