## API Report File for "@uifabric/react-hooks"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

import { Async } from '@uifabric/utilities';
import { ISettingsMap } from '@uifabric/utilities/lib/warn';
import { IWarnControlledUsageParams } from '@uifabric/utilities/lib/warn';
import * as React from 'react';
import { Ref } from 'react';

// @public (undocumented)
export type ChangeCallback<TElement extends HTMLElement, TValue> = (ev: React.FormEvent<TElement> | undefined, newValue: TValue | undefined) => void;

// @public
export interface IUseBooleanCallbacks {
    setFalse: () => void;
    setTrue: () => void;
    toggle: () => void;
}

// @public (undocumented)
export interface IWarningOptions<P> {
    conditionallyRequired?: {
        requiredProps: string[];
        conditionalPropName: string;
        condition: boolean;
    }[];
    controlledUsage?: Pick<IWarnControlledUsageParams<P>, 'valueProp' | 'defaultValueProp' | 'onChangeProp' | 'readOnlyProp'>;
    deprecations?: ISettingsMap<P>;
    mutuallyExclusive?: ISettingsMap<P>;
    name: string;
    other?: string[];
    props: P;
}

// @public
export type RefCallback<T> = ((value: T | null) => void) & React.RefObject<T>;

// @public
export function useAsync(): Async;

// @public
export function useBoolean(initialState: boolean): [boolean, IUseBooleanCallbacks];

// @public
export function useConst<T>(initialValue: T | (() => T)): T;

// @public
export function useConstCallback<T extends (...args: any[]) => any>(callback: T): T;

// @public
export function useControllableValue<TValue, TElement extends HTMLElement>(controlledValue: TValue | undefined, defaultUncontrolledValue: TValue | undefined): Readonly<[TValue | undefined, (update: React.SetStateAction<TValue | undefined>) => void]>;

// @public (undocumented)
export function useControllableValue<TValue, TElement extends HTMLElement, TCallback extends ChangeCallback<TElement, TValue> | undefined>(controlledValue: TValue | undefined, defaultUncontrolledValue: TValue | undefined, onChange: TCallback): Readonly<[TValue | undefined, (update: React.SetStateAction<TValue | undefined>, ev?: React.FormEvent<TElement>) => void]>;

// @public
export function useForceUpdate(): () => void;

// @public
export function useId(prefix?: string, providedId?: string): string;

// @public
export function useMergedRefs<T>(...refs: (Ref<T> | undefined)[]): (instance: T) => void;

// @public
export function useOnEvent<TElement extends Element, TEvent extends Event>(element: React.RefObject<TElement | undefined | null> | TElement | Window | undefined | null, eventName: string, callback: (ev: TEvent) => void, useCapture?: boolean): void;

// @public
export function usePrevious<T>(value: T): T | undefined;

// @public
export function useRefEffect<T>(callback: (value: T) => (() => void) | void, initial?: T | null): RefCallback<T>;

// @public
export const useSetInterval: () => UseSetIntervalReturnType;

// @public (undocumented)
export type UseSetIntervalReturnType = {
    setInterval: (callback: () => void, duration: number) => number;
    clearInterval: (id: number) => void;
};

// @public
export const useSetTimeout: () => UseSetTimeoutReturnType;

// @public (undocumented)
export type UseSetTimeoutReturnType = {
    setTimeout: (callback: () => void, duration: number) => number;
    clearTimeout: (id: number) => void;
};

// @public
export function useWarnings<P>(options: IWarningOptions<P>): void;


// (No @packageDocumentation comment for this package)

```
