import { LitElement } from 'lit';
export declare type ResponsiveComponent = LitElement & {
    layout: string;
    responsive: boolean;
    layoutStable: boolean;
};
export interface LayoutConfig {
    layouts: string[];
    initialLayout: string;
}
export declare function elementResize(element: HTMLElement, callbackFn: () => void, async?: boolean): ResizeObserver;
export declare function elementVisible(element: HTMLElement, callbackFn: () => void): IntersectionObserver;
/**
 * Given a ResponsiveComponent this function will loop through a list of layout
 * options and change the layout of the component until the components layout
 * condition is satisfied.
 */
export declare function calculateOptimalLayout(component: ResponsiveComponent, layoutConfig: LayoutConfig): Promise<boolean>;
