import { AddChildFromBuilder, ImageSource, View } from '@nativescript/core';
import { AdEventType } from '../common';
import { ManagerRequestOptions, RequestOptions, AdEventListener } from '..';
import { NativeAdEventListener, NativeAdViewBase, MediaViewBase, MediaAspectRatio, AdChoicesPlacement, VideoStatus, NativeAdEventType } from './common';
import { IMediaContent, IMuteThisAdReason, INativeAd, INativeAdImage, IVideoController, NativeAdOptions, UnconfirmedClickListener, INativeAdLoader } from '.';
export { AdChoicesPlacement, AdEventType, VideoStatus, MediaAspectRatio, NativeAdEventType };
export declare class NativeAdView extends NativeAdViewBase implements AddChildFromBuilder {
    _native: GADNativeAdView;
    _child: View;
    createNativeView(): GADNativeAdView;
    _addChildFromBuilder(name: string, value: any): void;
    _adChoicesView: View;
    get adChoicesView(): View;
    set adChoicesView(value: View);
    _advertiserView: View;
    get advertiserView(): View;
    set advertiserView(value: View);
    _bodyView: View;
    get bodyView(): View;
    set bodyView(value: View);
    _callToActionView: View;
    get callToActionView(): View;
    set callToActionView(value: View);
    _headlineView: View;
    get headlineView(): View;
    set headlineView(value: View);
    _iconView: View;
    get iconView(): View;
    set iconView(value: View);
    _imageView: View;
    get imageView(): View;
    set imageView(value: View);
    _mediaView: MediaView;
    get mediaView(): MediaView;
    set mediaView(value: MediaView);
    _nativeAd: NativeAd;
    get nativeAd(): NativeAd;
    set nativeAd(value: NativeAd);
    _priceView: View;
    get priceView(): View;
    set priceView(value: View);
    _starRatingView: View;
    get starRatingView(): View;
    set starRatingView(value: View);
    _storeView: View;
    get storeView(): View;
    set storeView(value: View);
}
export declare class NativeAdLoader implements INativeAdLoader {
    _adUnitId: string;
    _nativeAdOptions?: NativeAdOptions;
    _requestOptions?: RequestOptions;
    _listener: NativeAdEventListener;
    _native: GADAdLoader;
    _delegate: GADAdLoaderDelegateImpl;
    constructor(adUnitId: string, requestOptions?: RequestOptions, nativeAdOptions?: NativeAdOptions);
    isLoading(): boolean;
    load(maxAdCount?: number): void;
    load(requestOptions?: ManagerRequestOptions): void;
    load(): void;
    onAdEvent(listener: NativeAdEventListener): void;
    get native(): GADAdLoader;
    get ios(): GADAdLoader;
}
export declare class NativeAd implements INativeAd {
    _adUnitId: string;
    _native?: GADNativeAd;
    _listener: AdEventListener;
    _delegate: GADNativeAdDelegateImpl;
    static fromNative(nativeAd: GADNativeAd): NativeAd;
    get adUnitId(): string;
    onAdEvent(listener: AdEventListener): void;
    destroy(): void;
    get native(): GADNativeAd;
    get ios(): GADNativeAd;
    get body(): string;
    get callToAction(): string;
    get headline(): string;
    get price(): string;
    get mediaContent(): MediaContent;
    get customMuteThisAdAvailable(): boolean;
    isCustomClickGestureEnabled(): boolean;
    enableCustomClickGesture(): void;
    get advertiser(): string;
    recordCustomClickGesture(): void;
    _unconfirmedClickListener?: UnconfirmedClickListener;
    _unconfirmedClickDelegate?: GADNativeAdUnconfirmedClickDelegateImpl;
    setUnconfirmedClickListener(listener?: UnconfirmedClickListener): void;
    get icon(): NativeAdImage;
    get store(): string;
    get starRating(): number;
    get muteThisAdReasons(): any[];
    muteThisAdWithReason(reason: MuteThisAdReason): void;
    get images(): any[];
}
export declare class MediaContent implements IMediaContent {
    _native: GADMediaContent;
    static fromNative(content: GADMediaContent): MediaContent;
    get aspectRatio(): number;
    get currentTime(): number;
    get duration(): number;
    get mainImage(): any;
    set mainImage(value: any);
    get hasVideoContent(): boolean;
    get native(): GADMediaContent;
    get ios(): GADMediaContent;
}
export declare class VideoController implements IVideoController {
    _status: VideoStatus;
    _native: GADVideoController;
    _delegate: GADVideoControllerDelegateImpl;
    _isMute: boolean;
    static fromNative(controller: GADVideoController): VideoController;
    get status(): VideoStatus;
    clickToExpandEnabled(): boolean;
    customControlsEnabled(): boolean;
    pause(): void;
    play(): void;
    get mute(): boolean;
    set mute(value: boolean);
    stop(): void;
    get native(): GADVideoController;
    get aniosdroid(): GADVideoController;
}
export declare class MediaView extends MediaViewBase {
    _contentView: GADMediaView;
    createNativeView(): GADMediaView;
    onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void;
    get native(): GADMediaView;
}
export declare class NativeAdImage implements INativeAdImage {
    _native: GADNativeAdImage;
    static fromNative(image: GADNativeAdImage): NativeAdImage;
    get image(): ImageSource;
    get url(): string;
    get scale(): number;
    get native(): GADNativeAdImage;
    get ios(): GADNativeAdImage;
}
export declare class MuteThisAdReason implements IMuteThisAdReason {
    _native: GADMuteThisAdReason;
    static fromNative(reason: GADMuteThisAdReason): MuteThisAdReason;
    get description(): string;
    get native(): GADMuteThisAdReason;
    get ios(): GADMuteThisAdReason;
}
declare class GADNativeAdDelegateImpl extends NSObject implements GADNativeAdDelegate {
    _owner: WeakRef<NativeAd>;
    static initWithOwner(owner: WeakRef<NativeAd>): GADNativeAdDelegateImpl;
    nativeAdDidDismissScreen(nativeAd: GADNativeAd): void;
    nativeAdDidRecordClick(nativeAd: GADNativeAd): void;
    nativeAdDidRecordImpression(nativeAd: GADNativeAd): void;
    nativeAdIsMuted(nativeAd: GADNativeAd): void;
    nativeAdWillDismissScreen(nativeAd: GADNativeAd): void;
    nativeAdWillPresentScreen(nativeAd: GADNativeAd): void;
}
declare class GADAdLoaderDelegateImpl extends NSObject implements GADNativeAdLoaderDelegate {
    _owner: WeakRef<NativeAdLoader>;
    static initWithOwner(owner: WeakRef<NativeAdLoader>): GADAdLoaderDelegateImpl;
    adLoaderDidFailToReceiveAdWithError(adLoader: GADAdLoader, error: NSError): void;
    adLoaderDidFinishLoading(adLoader: GADAdLoader): void;
    adLoaderDidReceiveNativeAd(adLoader: GADAdLoader, nativeAd: GADNativeAd): void;
}
declare class GADNativeAdUnconfirmedClickDelegateImpl extends NSObject implements GADNativeAdUnconfirmedClickDelegate {
    _owner: WeakRef<NativeAd>;
    static initWithOwner(owner: WeakRef<NativeAd>): GADNativeAdUnconfirmedClickDelegateImpl;
    nativeAdDidCancelUnconfirmedClick(nativeAd: GADNativeAd): void;
    nativeAdDidReceiveUnconfirmedClickOnAssetID(nativeAd: GADNativeAd, assetID: string): void;
}
declare class GADVideoControllerDelegateImpl extends NSObject implements GADVideoControllerDelegate {
    _owner: WeakRef<VideoController>;
    static initWithOwner(owner: WeakRef<VideoController>): GADVideoControllerDelegateImpl;
    videoControllerDidEndVideoPlayback(videoController: GADVideoController): void;
    videoControllerDidMuteVideo(videoController: GADVideoController): void;
    videoControllerDidPauseVideo(videoController: GADVideoController): void;
    videoControllerDidPlayVideo(videoController: GADVideoController): void;
    videoControllerDidUnmuteVideo(videoController: GADVideoController): void;
}
