/**
 * @module @airtable/blocks/ui: ViewportConstraint
 * @docsPath UI/components/ViewportConstraint
 */ /** */
import * as PropTypes from 'prop-types';
import * as React from 'react';
import { ViewportSizeConstraint } from '../types/viewport';
import Sdk from '../sdk';
/** An object specifying a width and/or height for the block's viewport. */
declare type ViewportSizeConstraintProp = Partial<ViewportSizeConstraint>;
/**
 * Props for the {@link ViewportConstraint} component.
 *
 * @docsPath UI/components/ViewportConstraint
 */
interface ViewportConstraintProps {
    /** The minimum viewport size of the app. */
    minSize?: ViewportSizeConstraintProp;
    /** The maximum viewport size of the app when it is in fullscreen mode. */
    maxFullscreenSize?: ViewportSizeConstraintProp;
    /** The contents of the viewport constraint. */
    children?: React.ReactNode;
    /** @internal injected by withHooks */
    sdk: Sdk;
}
/**
 * When mounted, this wrapper component applies size constraints to the {@link Viewport}.
 * Like {@link addMinSize}, this will fullscreen the app if necessary and possible when
 * `minSize` is updated.
 *
 * @example
 * ```js
 * import {ViewportConstraint} from '@airtable/blocks/ui';
 * <ViewportConstraint minSize={{width: 400}} />
 * ```
 *
 * @example
 * ```js
 * import {ViewportConstraint} from '@airtable/blocks/ui';
 * <ViewportConstraint maxFullScreenSize={{width: 600, height: 400}}>
 *      <div>I need a max fullscreen size!</div>
 * </ViewportConstraint>
 * ```
 * @docsPath UI/components/ViewportConstraint
 * @component
 */
declare class ViewportConstraint extends React.Component<ViewportConstraintProps> {
    /** @hidden */
    static propTypes: {
        minSize: PropTypes.Requireable<PropTypes.InferProps<{
            width: PropTypes.Requireable<number>;
            height: PropTypes.Requireable<number>;
        }>>;
        maxFullscreenSize: PropTypes.Requireable<PropTypes.InferProps<{
            width: PropTypes.Requireable<number>;
            height: PropTypes.Requireable<number>;
        }>>;
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
    };
    /** @internal */
    _removeMinSizeConstraintFn: (() => void) | null;
    /** @internal */
    _removeMaxFullscreenSizeConstrainFn: (() => void) | null;
    /** @hidden */
    componentDidMount(): void;
    /** @hidden */
    shouldComponentUpdate(nextProps: ViewportConstraintProps): boolean;
    /** @hidden */
    componentDidUpdate(prevProps: ViewportConstraintProps): void;
    /** @hidden */
    componentWillUnmount(): void;
    /** @internal */
    _removeMinSizeConstraint(): void;
    /** @internal */
    _removeMaxFullscreenSizeConstraint(): void;
    /** @internal */
    _setMinSizeConstraint(): void;
    /** @internal */
    _setMaxFullscreenSizeConstraint(): void;
    /** @hidden */
    render(): JSX.Element;
}
declare const _default: React.RefForwardingComponent<ViewportConstraint, Omit<ViewportConstraintProps, "sdk"> & React.RefAttributes<ViewportConstraint>>;
export default _default;
