import * as React from 'react';
declare type DefaultProps<P extends object = object> = {
    props: P;
};
declare type RenderCallback = (args: ToggleableComponentProps) => JSX.Element;
declare const initialState: {
    show: boolean;
};
declare type ToggleableState = Readonly<typeof initialState>;
declare type ToggleableProps<P extends object = object> = Partial<{
    children: RenderCallback | React.ReactNode;
    render: RenderCallback;
    component: React.ComponentType<ToggleableComponentProps<P>>;
    stateReducer?: (state: ToggleableState, changes: Partial<ToggleableState>) => ToggleableState;
    onToggle?: (on: boolean) => void;
} & DefaultProps<P>>;
export declare type ToggleableComponentProps<P extends object = object> = ReturnType<Toggleable['getApi']> & P;
export declare class Toggleable<T extends object = object> extends React.Component<ToggleableProps<T>, ToggleableState> {
    readonly state: ToggleableState;
    reset: () => void;
    private getApi;
    private internalSetState;
    render(): JSX.Element;
    private toggle;
}
export {};
