import { AnyFn } from '../../types.js';
import { IsSupportedType, SafeWrapped, Supports } from './wrapSafe.js';
export interface SafeWrapFn<S extends boolean> {
    <Fn extends AnyFn>(method: string, fn: Fn): SafeWrapped<Fn, S, never>;
    <Fn extends AnyFn>(method: string, fn: Fn, isSupported: IsSupportedType): SafeWrapped<Fn, true, never>;
    <Fn extends AnyFn, S extends Supports<Fn>>(method: string, fn: Fn, isSupported: IsSupportedType, supports: S): SafeWrapped<Fn, true, S>;
}
interface Options {
    isMounted?: () => boolean;
    isSupported?: IsSupportedType;
}
export declare function createWrapSafe(component?: string): SafeWrapFn<false>;
export declare function createWrapSafe<O extends Options>(component: string, options: O): SafeWrapFn<O extends {
    isSupported: any;
} ? true : false>;
export {};
