import { ValidationException } from './ValidationException'; /** * Is the value bindable? Arrow functions, constructors and functions that are * already bound will not be bindable. * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind * * @example * ```ts * isBindable(function () {}) // true * isBindable(function () { return 'a'; }.bind(this)) // false * isBindable(() => 'a') // false * ``` * * @param value the value to check * @returns a boolean indicating whether the value is the expected type */ export declare const isBindable: (value: any) => value is Function; /** * Validate that the value is bindable. Arrow functions, constructors and * functions that are already bound will not be bindable. * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind * * @example * ```ts * validateBindable(function () {}) // null * validateBindable(someFunction.bind(this)) // ValidationException * validateBindable(() => 'a') // ValidationException * ``` * * @param value the value to check * @returns `null` if the value is the expected type or a `ValidationException` * if not */ export declare const validateBindable: (value: unknown) => ValidationException | null; /** * Assert that the value is bindable. Arrow functions, constructors and * functions that are already bound will not be bindable. * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind * * @example * ```ts * assertBindable(function () {}) // void * assertBindable(someFunction.bind(this)) // throws AssertionException * assertBindable(() => 'a') // throws AssertionException * ``` * * @param value the value to check * @throws an `AssertionException` if the value is not the expected type */ export declare const assertBindable: (value: unknown) => asserts value is Function;