import { Element } from "./element"; export type AttributeOptions = { /** * Set this to true to allow null values. * * When non-nullable, default values will be assigned to the * attribute accessor when null. */ nullable?: boolean; /** * By default the decorated property name will be used as the * attribute name. * * By specifying this option, you can override that value. * * Attribute name will always be converted to lowercase. */ name?: string; } & ({ type: "boolean"; /** * When non-nullable defines the value that will be used when * the attribute is set to null. * * If not specified `false` will be used. */ default?: boolean; } | { type: "number"; /** * When non-nullable defines the value that will be used when * the attribute is set to null. * * If not specified `0` will be used. */ default?: number; } | { type?: "string" | undefined; /** * When non-nullable defines the value that will be used when * the attribute is set to null. * * If not specified `""` will be used. */ default?: string; }); export declare function Attribute(opts?: AttributeOptions): (accessor: ClassAccessorDecoratorTarget, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult;