import { AccessibilityActionHandlers, ComponentSlotClasses, ReactAccessibilityBehavior, ProviderContextPrepared } from '@fluentui/react-bindings';
import { ComponentSlotStylesResolved, ComponentVariablesObject, DebugData, PropsWithVarsAndStyles, ThemePrepared } from '@fluentui/styles';
import * as React from 'react';
import { Props } from '../types';
export interface RenderResultConfig<P> {
    ElementType: React.ElementType<P>;
    classes: ComponentSlotClasses;
    unhandledProps: Props;
    variables: ComponentVariablesObject;
    styles: ComponentSlotStylesResolved;
    accessibility: ReactAccessibilityBehavior;
    rtl: boolean;
    theme: ThemePrepared;
}
export declare type RenderComponentCallback<P> = (config: RenderResultConfig<P>) => any;
export interface RenderConfig<P> {
    className?: string;
    displayName: string;
    handledProps: string[];
    props: PropsWithVarsAndStyles;
    state: Record<string, any>;
    actionHandlers: AccessibilityActionHandlers;
    render: RenderComponentCallback<P>;
    saveDebug: (debug: DebugData | null) => void;
    isFirstRenderRef: React.MutableRefObject<boolean>;
}
export declare const renderComponent: <P extends {}>(config: RenderConfig<P>, context?: ProviderContextPrepared) => React.ReactElement<P, string | React.JSXElementConstructor<any>>;
