import type { ClassMethodDefinition as ClassMethodDefinitionBase } from './ClassMember';
import type { ClassInstance } from './ClassInstance';
import type { ClassDefinition } from './ClassDefinition';
import type { RuntimeDisplay } from './RuntimeDisplay';
type ClassMethodDefinition = ClassMethodDefinitionBase<ClassDefinition>;
/**
 * Runtime value representing an instance method already bound to an object.
 */
declare class ClassBoundMethod {
    /** Runtime type tag used by interpreter predicates. */
    static readonly CLASS_BOUND_METHOD = 8;
    /** Runtime type tag stored on the bound method. */
    readonly type = 8;
    /** Optional AST-style parent pointer used by generic value handling. */
    parent?: unknown;
    /** Object instance that will be supplied as the receiver. */
    readonly instance: ClassInstance;
    /** Method metadata selected from the receiver class. */
    readonly method: ClassMethodDefinition;
    /**
     * Test whether a value is a bound class method.
     *
     * @param obj Value to test.
     * @returns `true` when `obj` is a `ClassBoundMethod`.
     */
    static readonly isInstanceOf: (obj: unknown) => obj is ClassBoundMethod;
    /**
     * Create a bound method value.
     *
     * @param instance Receiver instance.
     * @param method Method metadata.
     */
    constructor(instance: ClassInstance, method: ClassMethodDefinition);
    /**
     * Bind a method to a receiver instance.
     *
     * @param instance Receiver instance.
     * @param method Method metadata.
     * @returns Bound method value.
     */
    static readonly bind: (instance: ClassInstance, method: ClassMethodDefinition) => ClassBoundMethod;
    /**
     * Copy a bound method value.
     *
     * @param boundMethod Bound method to copy.
     * @returns New bound method wrapper.
     */
    static readonly copy: (boundMethod: ClassBoundMethod) => ClassBoundMethod;
    /**
     * Render a compact method summary.
     *
     * @param boundMethod Bound method to render.
     * @param _interpreter Interpreter requesting unparse.
     * @returns Human-readable method summary.
     */
    static readonly unparse: (boundMethod: ClassBoundMethod, _interpreter: RuntimeDisplay) => string;
    /**
     * Copy this bound method value.
     *
     * @returns New bound method wrapper.
     */
    copy(): ClassBoundMethod;
}
export { ClassBoundMethod };
declare const _default: {
    ClassBoundMethod: typeof ClassBoundMethod;
};
export default _default;
