/**
 * @aedart/contracts
 * 
 * BSD-3-Clause, Copyright (c) 2023-present Alin Eugen Deac <aedart@gmail.com>.
 */

/**
 * Class Blueprint
 */
interface ClassBlueprint {
    /**
     * Properties or methods expected to exist in class as static members.
     *
     * @type {PropertyKey[]}
     */
    staticMembers?: PropertyKey[];
    /**
     * Properties or methods expected to exist in class' prototype
     *
     * @type {PropertyKey[]}
     */
    members?: PropertyKey[];
}

/**
 * Support Reflections identifier
 *
 * @type {Symbol}
 */
declare const SUPPORT_REFLECTIONS: unique symbol;
/**
 * The prototype of {@link Function}
 *
 * **Note**: _Prototype is obtained via `Reflect.getPrototypeOf(Function)`_
 *
 * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype
 *
 * @type {object}
 */
declare const FUNCTION_PROTOTYPE: object;
/**
 * `TypedArray` prototype
 *
 * **Note**: _Prototype is obtained via `Reflect.getPrototypeOf(Int8Array)`_
 *
 * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
 *
 * @type {object}
 */
declare const TYPED_ARRAY_PROTOTYPE: object;

export { type ClassBlueprint, FUNCTION_PROTOTYPE, SUPPORT_REFLECTIONS, TYPED_ARRAY_PROTOTYPE };
