import type { Statement, UpdateResult } from "../../../common/types";
import type { AdRuleAction } from "./adRule.action";
import type { AdRule, AdRulePage, BreakTemplate, BreakTemplatePage } from "./adRule.type";
import type { AdSpot, AdSpotPage } from "./adSpot.type";
/**
 * Provides methods for creating, updating and retrieving AdRule objects.
 *
 * Ad rules contain data that the ad server uses to generate a playlist of video ads.
 */
export interface AdRuleServiceOperations {
    /**
     * Creates new AdRule objects.
     *
     * @param adRules the ad rules to create
     * @returns the created ad rules with their IDs filled in
     */
    createAdRules(adRules: Partial<AdRule>[]): Promise<AdRule[]>;
    /**
     * Creates new AdSpot objects.
     *
     * @param adSports the ad spots to create
     * @returns the created ad spots with their IDs filled in
     */
    createAdSpots(adSports: Partial<AdSpot>[]): Promise<AdSpot[]>;
    /**
     * Creates new breakTemplate objects.
     *
     * @param breakTemplate the break template to create
     * @returns the created break template with their IDs filled in
     */
    createBreakTemplates(breakTemplate: Partial<BreakTemplate>[]): Promise<BreakTemplate[]>;
    /**
     * Gets an AdRulePage of AdRule objects that satisfy the given Statement.query. The following fields are supported for filtering:
     *
     * id - AdRule.id (AdRule.adRuleId beginning in v201702)
     *
     * name - AdRule.name
     *
     * priority - AdRule.priority
     *
     * status - AdRule.status
  
     * @param statement
     * @returns the ad rules that match the given filter
     */
    getAdRulesByStatement(statement: Statement): Promise<AdRulePage>;
    /**
     * Gets a AdSpotPage of AdSpot objects that satisfy the given Statement.query.
     *
     * @param filterStatement a Publisher Query Language statement to filter a list of ad spots
     * @returns the ad spots that match the filter
     */
    getAdSpotsByStatement(filterStatement: Statement): Promise<AdSpotPage>;
    /**
     * Gets a BreakTemplatePage of BreakTemplate objects that satisfy the given Statement.query.
     *
     * @param filterStatement a Publisher Query Language statement to filter a list of breakTemplate
     * @returns the break template that match the filter
     */
    getBreakTemplatesByStatement(filterStatement: Statement): Promise<BreakTemplatePage>;
    /**
     * Performs actions on AdRule objects that match the given Statement.query.
     *
     * @param adRuleAction the action to perform
     * @param filterStatement a Publisher Query Language statement used to filter a set of ad rules
     * @returns the result of the action performed
     */
    performAdRuleAction(adRuleAction: AdRuleAction, filterStatement: Statement): Promise<UpdateResult>;
    /**
     * Updates the specified AdRule objects.
     *
     * @param adRules the ad rules to update
     * @returns the updated ad rules
     */
    updateAdRules(adRules: AdRule[]): Promise<AdRule[]>;
    /**
     * Updates the specified AdSpot objects.
     *
     * @param adSports the ad spots to update
     * @returns the updated ad spots
     */
    updateAdSpots(adSports: AdSpot[]): Promise<AdSpot[]>;
    /**
     * Updates the specified breakTemplate objects.
     *
     * @param breakTemplate the break template to update
     * @returns the updated break template
     */
    updateBreakTemplates(breakTemplate: BreakTemplate[]): Promise<BreakTemplate[]>;
}
//# sourceMappingURL=adRuleService.interface.d.ts.map