import { DescriptorNameType, DescriptorValueType } from './types';
import { PropertyNameType } from '../property-name/types';
import { PropertyValueType } from '../property-value/types';
import { Getter } from '../getter-value/types';
import { Setter } from '../unknown-value/types';
/**
 * Named property descriptor
 */
export declare class NamedDescriptor<T = PropertyValueType> implements PropertyDescriptor {
    /**
     * A boolean represents whether the property is configurable
     */
    configurable: boolean;
    /**
     * A boolean represents whether the property is enumerable
     */
    enumerable: boolean;
    /**
     * A string represents the full name of this property
     */
    fullname: string;
    /**
     * A method for get the property value
     */
    get: Getter<T> | undefined;
    /**
     * Property name
     */
    name: PropertyNameType;
    /**
     * Property name type
     */
    nameType: DescriptorNameType;
    /**
     * An object as the owner that has the property
     */
    owner: unknown;
    /**
     * A method for set the property value
     */
    set: Setter<T> | undefined;
    /**
     * Property value
     */
    value: T | undefined;
    /**
     * Property value type
     */
    valueType: DescriptorValueType;
    /**
     * Named property descriptor
     * @param owner An object as the owner that has the property
     * @param name Property name
     * @param value Property value
     * @param valueType Property value type
     * @param enumerable A boolean represents whether the property is enumerable
     * @param configurable A boolean represents whether the property is configurable
     */
    constructor(owner: unknown, name: PropertyNameType, value: T, valueType: DescriptorValueType, enumerable?: boolean, configurable?: boolean);
    /**
     * Named property descriptor
     * @param owner An object as the owner that has the property
     * @param name Property name
     * @param get A method for get the property value
     * @param set A method for set the property value
     * @param enumerable A boolean represents whether the property is enumerable
     * @param configurable A boolean represents whether the property is configurable
     */
    constructor(owner: unknown, name: PropertyNameType, get: Getter<T> | undefined, set: Setter<T> | undefined, enumerable?: boolean, configurable?: boolean);
}
