import { SoapService, AdwordsOperartionService } from '../../core';
import { ISelector, IPaging } from '../../../types/adwords';
import { IAdGroupAdReturnValue } from './AdGroupAdReturnValue';
import { IAdGroupAdOperation } from './AdGroupAdOperation';
import { IAdGroupAdPage } from './AdGroupAdPage';
import { IAdGroupAd } from './AdGroupAd';
import { IExpandedTextAd, IResponsiveDisplayAd } from './Ad';
interface IAdGroupAdServiceOpts {
    soapService: SoapService;
}
declare class AdGroupAdService extends AdwordsOperartionService {
    static isExpandedTextAd(ad: Partial<IExpandedTextAd | IResponsiveDisplayAd>): ad is IExpandedTextAd;
    static isResponsiveDisplayAd(ad: Partial<IExpandedTextAd | IResponsiveDisplayAd>): ad is IResponsiveDisplayAd;
    static setType(operand: IAdGroupAd): IAdGroupAd;
    /**
     * https://developers.google.com/adwords/api/docs/appendix/selectorfields#v201809-AdGroupAdService
     *
     * @private
     * @static
     * @memberof AdGroupAdService
     */
    private static readonly selectorFields;
    private soapService;
    constructor(options: IAdGroupAdServiceOpts);
    getAll(): Promise<IAdGroupAdPage | undefined>;
    getAllMultiAssetResponsiveDisplayAd(): Promise<IAdGroupAdPage | undefined>;
    getAllExpandedTextAd(paging?: IPaging): Promise<IAdGroupAdPage | undefined>;
    getByAdGroupIds(adGroupIds: string[]): Promise<IAdGroupAdPage | undefined>;
    /**
     * add ad group ad.
     *
     * 当调用 mutate() 时，最好每个请求发送多个操作；避免发送多个请求，而每个请求仅包含一个操作。每个请求发送多个操作可减少到服务器的往返次数，并提高应用性能。
     *
     * @author dulin
     * @param {IAdGroupAd[]} adGroupAds
     * @returns
     * @memberof AdGroupAdService
     */
    add(adGroupAds: IAdGroupAd[]): Promise<IAdGroupAdReturnValue | undefined>;
    update(adGroupAds: IAdGroupAd[]): Promise<IAdGroupAdReturnValue | undefined>;
    protected get<ServiceSelector = ISelector, Rval = IAdGroupAdPage>(serviceSelector: ServiceSelector): Promise<Rval | undefined>;
    protected mutate<Operation = IAdGroupAdOperation, Rval = IAdGroupAdReturnValue>(operations: Operation[]): Promise<Rval | undefined>;
}
export { AdGroupAdService };
export * from './Ad';
export * from './AdGroupAd';
export * from './AdGroupAdOperation';
export * from './AdGroupAdPage';
export * from './AdGroupAdPolicySummary';
export * from './AdGroupAdReturnValue';
export * from './CustomParameter';
export * from './CustomParameters';
export * from './Dimensions';
export * from './DynamicSettings';
export * from './ExemptionRequest';
export * from './Label';
export * from './LabelAttribute';
export * from './Media';
export * from './Media_Size_DimensionsMapEntry';
export * from './Media_Size_StringMapEntry';
export * from './PolicyViolationKey';
export * from './UrlData';
export * from './UrlList';
export * from './enum/Ad';
export * from './enum/AdGroupAd';
export * from './enum/DisplayAdFormatSetting';
export * from './enum/Media';
export * from './enum/SystemManagedEntitySource';
