import * as React from 'react';
import { SetRequired } from 'type-fest';
interface DefaultProps<T extends React.ElementType = 'div'> {
    hideCaption: boolean;
    containerTagName: T;
    protocol: string;
    injectScript: boolean;
}
declare type Html = string;
interface Response {
    html: Html;
}
interface State {
    html: Html | null;
}
declare type PropsInternal = SetRequired<Props, keyof DefaultProps>;
export interface Props<T extends React.ElementType = 'div'> extends Partial<DefaultProps<T>> {
    url: string;
    clientAccessToken: string;
    maxWidth?: number;
    className?: string;
    onLoading?(): void;
    onSuccess?(response: Response): void;
    onAfterRender?(): void;
    onFailure?(error: Error): void;
}
export default class InstagramEmbed extends React.Component<PropsInternal, State> {
    static defaultProps: DefaultProps;
    private request;
    private timer?;
    constructor(props: PropsInternal);
    componentDidMount(): void;
    componentDidUpdate(prevProps: PropsInternal): void;
    componentWillUnmount(): void;
    render(): React.ReactNode;
    cancel: () => void;
    private fetchEmbed;
    private omitComponentProps;
    private injectScript;
    private checkAPI;
    private getQueryParams;
    private handleFetchSuccess;
    private handleFetchFailure;
    private createRequestPromise;
}
export {};
