import { Option } from '@fable-org/fable-library-js/Option.js';
import { ReactElement } from 'react';
import { IDisposable } from '@fable-org/fable-library-js/Util.js';
import { IContext$1, IRefValue$1 } from '../Fable.React.Types.18.4.0/Fable.React.fs.js';
export declare function propsWithKey<props>(withKey: Option<((arg0: props) => string)>, props: props): props;
export declare function functionComponent<props>(renderElement: ((arg0: props) => ReactElement), name: Option<string>, withKey: Option<((arg0: props) => string)>): ((arg0: props) => ReactElement);
export declare function memo<props>(renderElement: ((arg0: props) => ReactElement), name: Option<string>, areEqual: Option<((arg0: props, arg1: props) => boolean)>, withKey: Option<((arg0: props) => string)>): ((arg0: props) => ReactElement);
export declare function createDisposable(dispose: (() => void)): IDisposable;
export declare function useDisposable(dispose: (() => void)): IDisposable;
export declare function useEffectOnce(effect: (() => void)): void;
export declare function useEffectDisposableOnce<$a extends IDisposable>(effect: (() => $a)): void;
export declare function useEffectDisposableOptOnce<$a extends IDisposable>(effect: (() => Option<$a>)): void;
export declare function createContext<a>(name: Option<string>, defaultValue: Option<a>): IContext$1<a>;
export declare function useCallbackRef<a, b>(callback: ((arg0: a) => b)): ((arg0: a) => b);
export declare function forwardRef<props, t>(render: ((arg0: [props, IRefValue$1<t>]) => ReactElement)): ((arg0: [props, IRefValue$1<t>]) => ReactElement);
export declare function forwardRefWithName<props, t>(name: string, render: ((arg0: [props, IRefValue$1<t>]) => ReactElement)): ((arg0: [props, IRefValue$1<t>]) => ReactElement);
export declare function useCancellationToken(): IRefValue$1<any>;
//# sourceMappingURL=Internal.fs.d.ts.map