import React from 'react';
import { ViewProps, NativeSyntheticEvent, EventSubscription } from 'react-native';
import type { IAdManagerEventBase, IAdManagerEventAppEvent, IAdManagerEventLoadedBanner, IAdManagerEventSize } from './AdManagerEvent';
import type { IAdManagerTargeting } from './AdManagerTypes';
interface IAdManagerBannerPropsBase extends ViewProps {
    /**
     * DFP iOS library banner size constants
     * (https://developers.google.com/admob/ios/banner)
     * banner (320x50, Standard Banner for Phones and Tablets)
     * fullBanner (468x60, IAB Full-Size Banner for Tablets)
     * largeBanner (320x100, Large Banner for Phones and Tablets)
     * mediumRectangle (300x250, IAB Medium Rectangle for Phones and Tablets)
     * leaderboard (728x90, IAB Leaderboard for Tablets)
     * skyscraper (120x600, Skyscraper size for the iPad. Mediation only. AdMob/Google does not offer this size)
     * fluid (An ad size that spans the full width of its container, with a height dynamically determined by the ad)
     * {\d}x{\d} (Dynamic size determined byt the user, 300x250, 300x100 etc.)
     *
     * banner is default
     */
    adSize?: string;
    /**
     * Optional array specifying all valid sizes that are appropriate for this slot.
     */
    validAdSizes?: string[];
    /**
     * DFP ad unit ID
     */
    adUnitID?: string;
    /**
     * Array of test devices. Use Banner.simulatorId for the simulator
     */
    testDevices?: string[];
    targeting?: IAdManagerTargeting;
}
interface IAdManagerBannerProps extends IAdManagerBannerPropsBase {
    onError?: (eventData: Error) => void;
    /**
     * DFP library events
     */
    onSizeChange?: (event: IAdManagerEventSize) => void;
    onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;
    onAdFailedToLoad?: (error: Error) => void;
    onAppEvent?: (event: IAdManagerEventAppEvent) => void;
    onAdOpened?: (event: IAdManagerEventBase) => void;
    onAdClosed?: (event: IAdManagerEventBase) => void;
    onAdRecordImpression?: (event: IAdManagerEventBase) => void;
}
interface IAdManagerBannerState {
    style: {
        width?: number;
        height?: number;
    };
    error: Error | null;
}
export declare class Banner extends React.Component<IAdManagerBannerProps, IAdManagerBannerState> {
    hasOnErrorFromParent: boolean;
    customListener: EventSubscription | undefined;
    constructor(props: IAdManagerBannerProps);
    shouldComponentUpdate(nextProps: IAdManagerBannerProps, nextState: IAdManagerBannerState): boolean;
    componentDidMount(): void;
    componentWillUnmount(): void;
    loadBanner(): void;
    handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>): void;
    render(): JSX.Element;
}
export {};
