import type { Arguments } from "./function.js"; /** Class that has a public `constructor()` function. */ export type Constructor = new (...args: A) => T; /** Any function arguments (designed for use with `extends Arguments` guards). */ export type AnyConstructor = new (...args: any) => any; /** Class prototype that can be used with `instanceof`. */ export type Class = new (...args: any) => T; /** Is a given value a class constructor? */ export declare function isConstructor(value: unknown): value is AnyConstructor; /** Is a value an instance of a class? */ export declare function isInstance(value: unknown, type: Class): value is T; /** Assert that a value is an instance of something. */ export declare function assertInstance(value: unknown, type: Class): asserts value is T; /** Get the 'getter' function for a given property, or `undefined` if it doesn't exist. */ export declare function getGetter(obj: T, prop: K): ((this: T) => T[K]) | undefined; /** Get the 'setter' function for a given property, or `undefined` if it doesn't exist. */ export declare function getSetter(obj: T, prop: K): ((this: T, value: T[K]) => void) | undefined;